These docs are public and open source.Edit on GitHub
API REFERENCE / ROS 2
ROS 2 PARAMETERS.
Every node in the driver declares real, live ROS 2 parameters, and the ones below are the ones you will actually reach for: the throttle caps that scale every /drive command, the controller mapping from commands to physical speed and angle, the camera settings, and the LiDAR launch arguments.
Live via ros2 paramPersisted in config/*.yamlneoracer_ros2_driver
THROTTLE_NODE · config/throttle.yaml
THE SPEED CAPS.
The most-tuned three values on the car. Full chain: your command [-1, 1] × these caps × the controller's max_speed_mps = what the motor is asked to do.
| Parameter | Shipped value | Meaning |
|---|---|---|
| max_speed_forward | 1.0 | Scales every forward /drive command before it reaches the controller. At 1.0 a full-speed command uses the whole firmware ceiling; lower it to derate the car. |
| max_speed_backward | 1.0 | The reverse scale, same idea in the other direction. |
| max_steering | 0.625 | Scales the commanded steering angle before the servo mapping. 0.625 is full servo lock; a higher value stalls the servo against the linkage. |
CONTROLLER_NODE · config/controller.yaml
THE ESP32 BRIDGE.
| Parameter | Shipped value | Meaning |
|---|---|---|
| max_speed_mps | 6.0 | The physical speed a full-scale command maps to, in m/s. Matches the firmware’s closed-loop ceiling; raising it past 6.0 needs a firmware change, not a parameter. |
| max_steering_angle_deg | 30.0 | The steering angle a full-scale command maps to, in degrees. |
| steering_trim_deg | 0.0 | Added to every steering command so a 0.0 angle drives straight. Set through the servo-center calibration. |
| rc_min / rc_center / rc_max | 1000 / 1500 / 2000 | The FlySky channel calibration, in microseconds. Readings below rc_failsafe_below (500) mean no signal and read as neutral. |
| port_name | /dev/osrbot_base | The ESP32 serial device, held stable by the udev rules the setup installs. |
| publish_mag | false | The magnetometer topic is off by default; the fused orientation already comes from the MCU state frame. |
CAMERA_NODE · config/camera.yaml
THE CAMERA.
| Parameter | Shipped value | Meaning |
|---|---|---|
| image_width × image_height | 640 × 480 | The capture resolution requested from the camera. |
| framerate | 60.0 | Frames per second on /camera. The node passes the camera’s native MJPG through, so this is real throughput, not a target. |
| video_device | /dev/osrbot_usb_cam | The stable udev name for the USB camera; the node falls back to scanning /dev/video* if it moves. |
LIDAR · launch arguments
THE LIDAR DRIVER.
The LakiBeam1 driver takes these as launch arguments in lidar.launch.py rather than runtime parameters; the driver pushes them to the sensor's own configuration at startup.
| Parameter | Shipped value | Meaning |
|---|---|---|
| frame_id | laser | The TF frame stamped on every /scan. |
| sensorip | 192.168.8.2 | The LakiBeam1’s address on the USB-C bridge (the host side is 192.168.8.1). The driver pushes configuration to the sensor here at startup. |
| scanfreq | 30 | Revolutions per second the sensor is configured to spin, which is the /scan publish rate. |
| scan_range_start / stop | 45 / 315 | The sensor’s live window in its own frame: 270 degrees of returns. This is why the rear wedge of a scan carries no data. |
//Reading and setting parameters at runtime
bash# What does a node expose? ros2 param list /throttle_node # Read one ros2 param get /throttle_node max_speed_forward # Change one while the node runs (until the next restart) ros2 param set /throttle_node max_speed_forward 0.3 # Make it permanent instead: edit config/throttle.yaml, then racecar service restart
