Neobotics Foundation Inc.
These docs are public and open source.Edit on GitHub

ROS 2 TOPICS

This page lists every topic the driver publishes and subscribes, with the message type on each.

TOPIC LIST

TopicMessage typeYour roleWhat it carries
/scansensor_msgs/LaserScanSubscribeOne planar sweep from the Lakibeam LiDAR, ~1440 samples, frame_id laser. Any subscriber receives it; no special QoS is needed.
/imu/fusedsensor_msgs/ImuSubscribeOrientation, linear acceleration (m/s²), and angular velocity (rad/s) at ~200 Hz, frame_id imu_link. Published by the controller node from the MCU state frame.
/magsensor_msgs/MagneticFieldSubscribeMagnetic field in teslas from the QMC6309 magnetometer, frame_id imu_link. Not part of the fused orientation on /imu/fused.
/odomnav_msgs/OdometrySubscribeWheel odometry at ~200 Hz, integrated on the MCU from the motor encoder.
/batterysensor_msgs/BatteryStateSubscribePack voltage and a 3S charge fraction at ~0.5 Hz.
/camera/colorsensor_msgs/ImageSubscribeA JPEG-compressed color frame at 60 fps from the camera node. The bytes are raw JPEG with encoding="jpeg". Publisher is best-effort; a subscriber needs sensor-data QoS to receive it.
/driveackermann_msgs/AckermannDriveStampedPublishThe topic your own node publishes to. The mux only forwards it while autonomy mode is armed.
/joysensor_msgs/JoyTeleopFlysky RC stick and switch state, published by the controller node from the receiver on the ESP32. The gamepad and mux nodes read it.
/gamepad_driveackermann_msgs/AckermannDriveStampedTeleopThe drive command gamepad_node builds from the sticks.
/mux_outackermann_msgs/AckermannDriveStampedInternalThe command the mux forwarded, teleop or autonomy.
/motorackermann_msgs/AckermannDriveStampedInternalThe throttle-scaled command the controller node turns into the ESP32 serial command.
/dotmatrix/textstd_msgs/StringPublishText to the dot-matrix display on the back of the car. Handled by the led_matrix node over USB-UART.
/battery/voltagestd_msgs/Float32SubscribePack voltage as a plain number.
/encoder/speedstd_msgs/Float32SubscribeWheel speed from the encoders, before it is integrated into /odom.
/rc/channelsstd_msgs/Float32MultiArrayInternalRaw channel values from the Flysky receiver, before the controller node turns them into /joy.
/edgetpu/inferencevision_msgs/Detection2DArraySubscribeObject detections from the inference node. Only publishes while a model is loaded and running.

The driver starts at boot, so every topic above is already live when you log in. ros2 topic list on the car also prints /diagnostics, /parameter_events and /rosout, which are ROS 2 internals.

DRIVE PIPELINE

A drive message does not go straight to the motor. The mux node decides whether teleop or autonomy is in control, and the throttle node scales the speed to a safe range before the controller node touches the hardware.

// the drive pipeline
/drivemux_node/mux_outthrottle_node/motorcontrollerESP32 boardESC and steering servo
/gamepad_drive(teleop)mux_node The SWB switch on the transmitter selects the source: up is teleop, down is /drive.
red = topic · white = node · grey = hardware