def record(): car.reset_odometry() f = FileNames() track_name = config.track_name route_name = f.next_route_name(track_name) os.makedirs(f.get_route_folder(track_name, route_name)) recording_file_path = f.recording_file_path(track_name, route_name) make_recording(car = car, recording_file_path = recording_file_path ) car.lcd.display_text("making path") path_file_path = f.path_file_path(track_name, route_name) write_path_from_recording_file(inpath=recording_file_path,outpath=path_file_path) config.route_name = route_name update_route_selection_menu()
def go(): f = FileNames() config.run_name = f.next_run_name(config.track_name, config.route_name) run_folder = f.get_run_folder(config.track_name, config.route_name, config.run_name) os.makedirs(run_folder) dump_config(f.config_file_path(config.track_name, config.route_name, config.run_name)) car.reset_odometry() input_path = f.path_file_path(config.track_name,config.route_name) stereo_video_paths = f.stereo_video_file_paths(config.track_name,config.route_name,config.run_name) if config.capture_video: capture = vision.capture.Capture(stereo_video_paths=stereo_video_paths) capture.begin() rte = route.Route() car.display_text('loading route') rte.load_from_file(input_path) rte.smooth(k_smooth=config.k_smooth) rte.optimize_velocity(max_velocity = config.max_v, max_acceleration = config.max_a) car.display_text('playing route') recording_file_path = FileNames().recording_file_path(config.track_name,config.route_name,config.run_name) car.begin_recording_input(recording_file_path) car.begin_recording_commands(FileNames().commands_recording_file_path(config.track_name,config.route_name,config.run_name)) try: play_route(rte, car, k_smooth = config.k_smooth, d_ahead = config.d_ahead, t_ahead = config.t_ahead) except: path = f.exception_file_path(config.track_name,config.route_name,config.run_name) with open(path,'w') as log: log.write(exception.exception_text()) finally: car.end_recording_input() car.end_recording_commands() if config.capture_video: capture.end() car.lcd.display_text("making path") path_file_path = f.path_file_path(config.track_name,config.route_name,config.run_name) write_path_from_recording_file(inpath=recording_file_path,outpath=path_file_path)
def main(): print "making a car" car = Car() lcd = car.lcd buttons = ( (LCD.SELECT, "Select", (1, 1, 1)), (LCD.LEFT, "Left", (1, 0, 0)), (LCD.UP, "Up", (0, 0, 1)), (LCD.DOWN, "Down", (0, 1, 0)), (LCD.RIGHT, "Right", (1, 0, 1)), ) while not shutdown_flag: try: x, y = car.front_position() v = car.battery_voltage() car.display_text("{:5.2f},{:5.2f}\n{:3.1f}v s rec >go".format(x, y, v)) if lcd.is_pressed(LCD.SELECT): car.display_text("recording route\n-> stop") make_recording(car=car) car.display_text("recording\ncomplete") time.sleep(1) if lcd.is_pressed(LCD.RIGHT): car.display_text("making route") write_path_from_recording_file() car.display_text("playing route") play_route_main() except IOError: # I2C error, keep trying continue except KeyboardInterrupt: break time.sleep(0.1) car.display_text("goodbye") del car print ("goodbye") time.sleep(1) lcd.set_backlight(0)