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.