sl-firmware fa75c442a7 feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only
Archive STM32 firmware to legacy/stm32/:
- src/, include/, lib/USB_CDC/, platformio.ini, test stubs, flash_firmware.py
- test/test_battery_adc.c, test_hw_button.c, test_pid_schedule.c, test_vesc_can.c, test_can_watchdog.c
- USB_CDC_BUG.md

Rename: stm32_protocol → esp32_protocol, mamba_protocol → balance_protocol,
  stm32_cmd_node → esp32_cmd_node, stm32_cmd_params → esp32_cmd_params,
  stm32_cmd.launch.py → esp32_cmd.launch.py,
  test_stm32_protocol → test_esp32_protocol, test_stm32_cmd_node → test_esp32_cmd_node

Content cleanup across all files:
- Mamba F722S → ESP32-S3 BALANCE
- BlackPill → ESP32-S3 IO
- STM32F722/F7xx → ESP32-S3
- stm32Mode/Version/Port → esp32Mode/Version/Port
- STM32 State/Mode labels → ESP32 State/Mode
- Jetson Nano → Jetson Orin Nano Super
- /dev/stm32 → /dev/esp32
- stm32_bridge → esp32_bridge
- STM32 HAL → ESP-IDF

docs/SALTYLAB.md:
- Update "Drone FC Details" to describe ESP32-S3 BALANCE board (Waveshare ESP32-S3 Touch LCD 1.28)
- Replace verbose "Self-Balancing Control" STM32 section with brief note pointing to SAUL-TEE-SYSTEM-REFERENCE.md

TEAM.md: Update Embedded Firmware Engineer role to ESP32-S3 / ESP-IDF

No new functionality — cleanup only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 09:00:38 -04:00

3.5 KiB
Raw Permalink Blame History

SaltyLab Firmware — Agent Playbook

Project

<<<<<<< HEAD SAUL-TEE — 4-wheel wagon (870×510×550 mm, 23 kg). Two ESP32-S3 boards + Jetson Orin via CAN. Full spec: docs/SAUL-TEE-SYSTEM-REFERENCE.md

Board Role
ESP32-S3 BALANCE QMI8658 IMU, PID balance, CAN→VESC (L:68 / R:56), GC9A01 LCD (Waveshare Touch LCD 1.28)
ESP32-S3 IO TBS Crossfire RC, ELRS failover, BTS7960 motors, NFC/baro/ToF, WS2812
Jetson Orin AI/SLAM, CANable2 USB→CAN, cmds 0x3000x303, telemetry 0x4000x401

Legacy: src/ and include/ = archived STM32 HAL — do not extend. New firmware in esp32/. ======= Self-balancing two-wheeled robot: ESP32-S3 ESP32-S3 BALANCE, hoverboard hub motors, Jetson Orin Nano Super for AI/SLAM.

291dd68 (feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only)

Team

Agent Role Focus
<<<<<<< HEAD
sl-firmware Embedded Firmware Lead ESP32-S3, ESP-IDF, QMI8658, CAN/UART protocol, BTS7960
sl-controls Control Systems Engineer PID tuning, IMU fusion, balance loop, safety
sl-perception Perception / SLAM Engineer Jetson Orin, RealSense D435i, RPLIDAR, ROS2, Nav2

======= | sl-firmware | Embedded Firmware Lead | ESP-IDF, USB Serial (CH343) debugging, SPI/UART, PlatformIO, DFU bootloader | | sl-controls | Control Systems Engineer | PID tuning, IMU sensor fusion, real-time control loops, safety systems | | sl-perception | Perception / SLAM Engineer | Jetson Orin Nano Super, RealSense D435i, RPLIDAR, ROS2, Nav2 |

291dd68 (feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only)

Status

USB Serial (CH343) TX bug resolved (PR #10 — DCache MPU non-cacheable region + IWDG ordering fix).

Repo Structure

  • projects/saltybot/SALTYLAB.md — Design doc
  • USB_CDC_BUG.md — USB peripheral conflict details
  • TEAM.md — Team roles specification

Branch Strategy (issue #28)

Variant branches

Branch Purpose
saltylab Stable — SaltyLab 2-wheel balance bot (promoted from saltylab-dev)
saltylab-dev Integration — SaltyLab balance bot; agents target this branch
saltyrover Stable — 4-wheel rover variant
saltyrover-dev Integration — rover variant
saltytank Stable — tracked tank variant
saltytank-dev Integration — tank variant
main Shared code only (IMU drivers, USB Serial (CH343), balance core, safety)

Rules

  • Agents branch FROM <variant>-dev and PR back TO <variant>-dev
  • Shared/infrastructure code (IMU drivers, USB Serial (CH343), balance core, safety) goes in main
  • Variant-specific code (motor topology, kinematics, config) goes in variant branches
  • Stable branches get promoted from -dev after review and hardware testing
  • Current SaltyLab team works against saltylab-dev

Git Workflow

  • Branch naming: <agent>/<slug> (e.g., sl-firmware/usb-cdc-fix)
  • For shared code targeting main: <agent>/bd-<id>-<slug>
  • Before every push: git fetch origin && git rebase origin/<base-branch>
  • Gitea: gitea.vayrette.com/seb/saltylab-firmware

Communication

  • Report progress to max via MQTT: AGENT_NAME=<agent> ~/agent-mqtt/agent-send max "<message>"
  • Check inbox: ~/agent-mqtt/agent-read 2>/dev/null | tail -15
  • Prioritize messages from max (PM)

Beads (Task System)

cd /Users/seb/AI/saltylab-firmware
br list                    # List open beads
br update <id> --claim     # Claim a bead
br close <id> --reason "Done. PR #N"
br comment <id> "message"