Docs Reference Workspace repo
Docs menu

Configuration files

Every YAML file that sets the car's behaviour, which node reads it, and what to change in it.

Behaviour is set in YAML, not in code. Each launch file loads its package’s YAML from the installed share folder, and the YAML’s values replace the defaults declared in the code, so editing a default in a .py file changes nothing on the car. Every file on this page is shared by both cars. Values that differ between the cars are in each car’s profile, below, which launches load on top of the shared file. After editing a YAML, restart the launch that reads it; if the workspace was not built with --symlink-install, rebuild that package first.

Hardware and arbitration

File Read by Sets
vesc.yamlGitHub The VESC driver, ackermann_to_vesc_node, vesc_to_odom_node The VESC port and current and speed limits, the wheelbase, the throttle and servo smoothing. The speed and steering conversions, servo range and odometry gain are per car.
sensors.yamlGitHub urg_node The scan’s angle range and frame. The LiDAR’s connection is per car.
mux.yamlGitHub ackermann_mux Input priorities and timeouts
joy_teleop.yamlGitHub joy_node, joy_teleop The gamepad’s axes, the LB deadman for manual driving, full-stick speed. Full-stick steering is per car.
f1tenth_online_async.yamlGitHub slam_toolbox Upstream SLAM settings. Keep it unmodified.
slam_tracking.yamlGitHub slam_toolbox, loaded on top The workspace’s SLAM overrides. See SLAM and localization.

Per car

Each car’s values are in its profile, cars/rb1/Car 1 or cars/rb2/Car 2. A launch loads the shared file first, then the car’s calibration/ file of the same name, then its tuning/ file if one exists. A key in a later file replaces the same key in an earlier one, inside the same node block.

File in src/racerbot_car/cars/<id>/ Loaded on top of Sets
car.yaml Nothing; read by racerbot_car The LiDAR and camera, the dashboard site, the measured full-lock angles, the USB IDs that only this car has
calibration/vesc.yaml vesc.yaml Speed to ERPM gain, servo map and range, odometry gain
calibration/sensors.yaml sensors.yaml The LiDAR’s serial port (car 1) or IP address and port (car 2)
calibration/joy_teleop.yaml joy_teleop.yaml Full-stick steering angle
calibration/gap_follow.yaml, pure_pursuit.yaml, neural_racer.yaml The controller’s file max_steering_angle, and gap_follow’s arc-guard correction limit
calibration/odom_calibration.yaml odom_calibration.yaml The wizard’s vehicle label, planner limit and starting calibration
imu/car.yaml, imu/calib/ Nothing; read by imu_bridge_node IMU mount rotations and calibration
tuning/<file>.yaml The calibration overlay Per-car algorithm overrides, each with a # why: comment. A tuning file cannot relax a safety setting. Neither car has one.

See Git, submodules and car profiles for which kind of change goes where.

Driving

File Read by Sets
gap_follow.yamlGitHub gap_follow_node Every gap-follow limit. See Follow the gap.
pure_pursuit.yamlGitHub pure_pursuit_node Lookahead, speed limits, steering law, safety net, overtaking. See Pure pursuit.
auto_map_race.yamlGitHub auto_map_race_node, map_course Mapping laps, lap quality checks, the race planner’s profile and optimizer settings
waypoint_recorder.yamlGitHub waypoint_recorder_node Pose topic and frame, point spacing
neural_racer.yamlGitHub neural_racer_node Shadow mode, model, input timeouts, safety wrapper limits
src/racerbot_wiimote/racerbot_wiimote_driver/config/wiimote_teleop.yaml The Wiimote’s joy_teleop Wiimote speed and steering

The geometry values (wheelbase, car_width, car_length, laser_offset_x) appear in several of these files. Change them together, as listed in the workspace’s hardware reference.

Support

File Read by Sets
racerbot_launch/config/web_dashboard_rb1.yaml (car 1), web_dashboard_rb2.yaml (car 2) web_dashboard, usb_cam_stream The dashboard’s site, the LiDAR offset, which nodes it may tune or stop, the camera
imu_bridge.yamlGitHub imu_bridge_node IMU topics and where the IMU tools live (tools/imu_calibration/ in the workspace)
vehicle_state.yamlGitHub vehicle_state_node The speed filter, slip gate, gyro checks, gyro odometry
odom_calibration.yamlGitHub The calibration wizard Shared dimensions and rear track. The vehicle label, planner limit and starting calibration are per car.
src/particle_filter/config/localize.yaml particle_filter Particle count, ray casting, motion and sensor model
racerbot_doctor/car.pyGitHub The doctor Every threshold it checks, each with its source. A Python file, not YAML.

Steering limits must agree

Four steering limits must stay in order: the servo range in the car’s calibration/vesc.yaml must reach full stick in its calibration/joy_teleop.yaml, which is above the autonomy limit in its calibration/gap_follow.yaml and calibration/pure_pursuit.yaml, which is above the shared planner limit in auto_map_race.yaml. test_steering_limits_fit_servo.pyGitHub fails for either car if they do not.

Checked against car 1 commit 0265263 and car 2 commit b81b291, before the two workspaces merged.