sl-controls
a50f22d56b
feat: Nav2 cmd_vel to STM32 autonomous drive bridge
Adds cmd_vel_bridge_node — a standalone ROS2 node that subscribes to
Nav2 /cmd_vel and drives the STM32 over USB CDC with:
- Hard velocity limits (max_linear_vel=0.5 m/s, max_angular_vel=2.0 rad/s)
- Smooth ESC ramp (500 ESC-units/s, 50 Hz control loop)
- Deadman switch: zeros targets if /cmd_vel silent >500 ms
- Mode gate: sends drive only when STM32 reports md=2 (AUTONOMOUS)
- Telemetry RX → /saltybot/imu, /saltybot/balance_state, /diagnostics
- Heartbeat TX every 200 ms (H\n)
Deliverables:
saltybot_bridge/cmd_vel_bridge_node.py — node implementation
config/cmd_vel_bridge_params.yaml — tunable parameters
launch/cmd_vel_bridge.launch.py — standalone launch file
test/test_cmd_vel_bridge.py — 37 pytest unit tests (no ROS2)
setup.py — register node + new data files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>