Example #1
0
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()
Example #2
0
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)
Example #3
0
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)