- Add balance_protocol.py: canonical CAN codec for Orin <-> ESP32 BALANCE + VESC - ORIN_CMD_DRIVE 0x300, ORIN_CMD_MODE 0x301, ORIN_CMD_ESTOP 0x302 - FC_STATUS 0x400, FC_VESC 0x401; VESC_LEFT_ID=56, VESC_RIGHT_ID=68 - Delete mamba_protocol.py (had MAMBA_CMD_* 0x100-0x102, MAMBA_TELEM_* 0x200-0x201) - Rewrite can_bridge_node.py: uses balance_protocol, can0 interface, no mamba_can_id param - Rewrite test_can_bridge.py: tests balance_protocol encode/decode - Rewrite saltybot_can_e2e_test: protocol_defs.py + all 5 test files use new IDs - Update saltybot_bridge: stm32f722 → esp32_balance in hardware_id fields - Update configs/YAMLs: remove Mamba F722S/STM32F722/slcan0 references Hardware: Orin Nano Super, ESP32-S3 BALANCE, ESP32-S3 IO, FSESC 6.7 VESC ×2 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge pull request 'feat: CAN bus watchdog and error recovery (Issue #694)' (#708) from sl-firmware/issue-694-can-watchdog into main
Merge pull request 'feat: CAN bus watchdog and error recovery (Issue #694)' (#708) from sl-firmware/issue-694-can-watchdog into main
Merge pull request 'feat: Robot GPS live map panel (Issue #709 companion)' (#711) from sl-webui/robot-gps-map into main
Description
SaltyLab self-balancing bot firmware (STM32F722)
Languages
Python
67.1%
C
11.5%
JavaScript
9.2%
OpenSCAD
7.7%
HTML
1.5%
Other
2.9%