How neuroboticsclub/roboracer_stack works
This repository is a ROS 2 RoboRacer stack for simulator-connected and onboard driving: vehicle/sensor data enters through bridges and drivers, a LiDAR gap-follow planner selects motion commands, and VESC components translate commands to motor control and odometry. Separate operator paths provide keyboard teleoperation and a remote UDP kill switch; telemetry and laser odometry support observation and localization. The sampled sources establish the simulator bridge, sensor publishing, planner behavior, and remote-stop protocol. Several subsystem links are based on their documented package roles and names in the tree; unsampled launch wiring is not asserted.
Main entry points: planner_gap_follow.cpp Gap-follow planner · vesc_driver.cpp VESC driver · autodrive_bridge.py AutoDRIVE bridge · ackermann_to_vesc.cpp Ackermann adapter
Components 21
Operator controls
- Gamepad input
tools/killswitch_remote.py - Remote kill sender
tools/killswitch_remote.py - Keyboard teleop
devkit/autodrive_devkit/autodrive_roboracer/teleop_keyboard.py - E-stop console
ros_ws/src/planner_node/src/estop.cpp - Remote stop receiver
ros_ws/src/planner_node/src/killswitch.cpp
Simulator integration
- AutoDRIVE bridge
devkit/autodrive_devkit/autodrive_roboracer/autodrive_bridge.py - Telemetry control
ros_ws/src/neo_telemetry/neo_telemetry/neo_control.py - Camera handling
ros_ws/src/neo_telemetry/neo_telemetry/camera.py - UDP driver
ros_ws/src/transport_drivers/udp_driver/src/udp_receiver_node.cpp - Serial driver
ros_ws/src/transport_drivers/serial_driver/src/serial_bridge_node.cpp - Vehicle and race state
devkit/autodrive_devkit/autodrive_roboracer/autodrive_bridge.py
Sensing and odometry
- IMU publishing
ros_ws/src/bno055/bno055/sensor/SensorService.py - IMU connectors
ros_ws/src/bno055/bno055/connectors/Connector.py - LiDAR odometry
ros_ws/src/rf2o_laser_odometry/src/CLaserOdometry2DNode.cpp - VESC odometry
ros_ws/src/vesc/vesc_ackermann/src/vesc_to_odom.cpp
Planning and actuation
- Gap-follow planner
ros_ws/src/planner_node/src/planner_gap_follow.cpp - Ackermann adapter
ros_ws/src/vesc/vesc_ackermann/src/ackermann_to_vesc.cpp - VESC driver
ros_ws/src/vesc/vesc_driver/src/vesc_driver.cpp
Other components
- Operator
- AutoDRIVE simulator
- VESC motor controller
Connections 22
- Operator → Gamepad input: operates
- Gamepad input → Remote kill sender: supplies input
- Remote kill sender → UDP driver: sends UDP heartbeat
- UDP driver → Remote stop receiver: delivers heartbeat
- Remote stop receiver → Gap-follow planner: asserts stop
- Operator → Keyboard teleop: enters commands
- Keyboard teleop → Ackermann adapter: publishes drive commands
- E-stop console → Gap-follow planner: asserts stop
- AutoDRIVE simulator → AutoDRIVE bridge: sends vehicle data
- AutoDRIVE bridge → Vehicle and race state: updates state
- AutoDRIVE bridge → AutoDRIVE simulator: sends control and ROS data
- Telemetry control → AutoDRIVE simulator: exchanges telemetry
- Camera handling → Telemetry control: provides camera data
- IMU publishing → IMU connectors: reads sensor
- IMU publishing → Gap-follow planner: publishes IMU data
- LiDAR odometry → Gap-follow planner: publishes odometry
- Gap-follow planner → Ackermann adapter: publishes drive commands
- Ackermann adapter → VESC driver: sends motor commands
- VESC driver → VESC motor controller: controls
- VESC motor controller → VESC driver: returns feedback
- VESC odometry → VESC driver: reads feedback
- Serial driver → VESC driver: transports serial data