- docs/: rewrite AGENTS.md, wiring-diagram.md (SAUL-TEE arch); update SALTYLAB.md, FACE_LCD_ANIMATION.md, board-viz.html, SALTYLAB-DETAILED refs - cad/: dimensions.scad FC params → ESP32-S3 BALANCE params - chassis/: ASSEMBLY.md, BOM.md, ip54_BOM.md, *.scad — FC_MOUNT_SPACING/ FC_PITCH → TBD ESP32-S3; Drone FC → MCU mount throughout - CLAUDE.md, TEAM.md: project desc → SAUL-TEE; hardware table → ESP32-S3/VESC - USB_CDC_BUG.md: marked ARCHIVED (legacy STM32 era) - AUTONOMOUS_ARMING.md: USB CDC → inter-board UART (ESP32-S3 BALANCE) - projects/saltybot/SLAM-SETUP-PLAN.md: FC/STM32F722 → BALANCE/CAN - jetson/docs/pinout.md, power-budget.md, README.md: STM32 bridge → CAN bridge - jetson/config/RECOVERY_BEHAVIORS.md: FC+Hoverboard → BALANCE+VESC - jetson/ros2_ws: stm32_protocol.py → esp32_protocol.py, stm32_cmd_node.py → esp32_cmd_node.py, mamba_protocol.py → balance_protocol.py; can_bridge_node imports updated - scripts/flash_firmware.py: DFU/STM32 → pio run -t upload - src/ include/: ARCHIVED headers added (legacy code preserved) - test/: ARCHIVED notices; STM32F722 comments marked LEGACY - ui/diagnostics_panel.html: Board/STM32 → ESP32-S3 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# SaltyLab Firmware — Agent Playbook
|
|
|
|
## Project
|
|
SAUL-TEE 4-wheel wagon robot: ESP32-S3 BALANCE (PID/CAN), ESP32-S3 IO (RC/sensors), Jetson Orin Nano Super (ROS2/SLAM).
|
|
|
|
## Team
|
|
| Agent | Role | Focus |
|
|
|-------|------|-------|
|
|
| **sl-firmware** | Embedded Firmware Lead | ESP32-S3 firmware (Arduino/IDF), PlatformIO, CAN bus, inter-board UART protocol |
|
|
| **sl-controls** | Control Systems Engineer | PID tuning, IMU sensor fusion, real-time control loops, safety systems |
|
|
| **sl-perception** | Perception / SLAM Engineer | Jetson Orin, RealSense D435i, RPLIDAR, ROS2, Nav2 |
|
|
|
|
## Status
|
|
USB CDC 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 CDC, balance core, safety) |
|
|
|
|
### Rules
|
|
- Agents branch FROM `<variant>-dev` and PR back TO `<variant>-dev`
|
|
- Shared/infrastructure code (IMU drivers, USB CDC, 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)
|
|
```bash
|
|
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"
|
|
```
|