Add "Roadmap"
parent
5cf7dec267
commit
e9bff172e5
154
Roadmap.md
Normal file
154
Roadmap.md
Normal file
@ -0,0 +1,154 @@
|
||||
# SaltyBot Roadmap
|
||||
|
||||
**Last updated:** 2026-02-28 by max (PM)
|
||||
**Project:** Self-balancing two-wheeled robot → autonomous navigation platform
|
||||
**Repo:** https://gitea.vayrette.com/seb/saltylab-firmware
|
||||
|
||||
---
|
||||
|
||||
## Variants
|
||||
|
||||
| Variant | Description | Branch (stable) | Branch (dev) |
|
||||
|---------|-------------|-----------------|--------------|
|
||||
| **SaltyLab** | 2-wheel self-balancing robot (primary) | `saltylab` | `saltylab-dev` |
|
||||
| **SaltyRover** | 4-wheel rover chassis | `saltyrover` | `saltyrover-dev` |
|
||||
| **SaltyTank** | Tracked/tank variant | `saltytank` | `saltytank-dev` |
|
||||
|
||||
Shared firmware (IMU drivers, USB CDC, sensor fusion) lives in `main`. Variant-specific code in variant branches.
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Self-Balancing — COMPLETE ✅
|
||||
|
||||
Goal: Robot stands upright on two wheels using PID control.
|
||||
|
||||
| Feature | Status | PR | Agent |
|
||||
|---------|--------|----|-------|
|
||||
| USB CDC TX fix (DCache + buffer + IMU API) | ✅ MERGED | #6, #10 | sl-firmware |
|
||||
| MPU6000 sensor fusion (complementary filter) | ✅ MERGED | #2 | sl-controls |
|
||||
| Runtime PID tuning via USB terminal | ✅ MERGED | #3 | sl-controls |
|
||||
| Safety systems (watchdog, arm interlock, tilt cutoff) | ✅ MERGED | #4 | sl-controls |
|
||||
| Motor driver (FOC ESC + differential drive mixer) | ✅ MERGED | #19 | sl-controls |
|
||||
| Roll/yaw telemetry + 3D web UI visualization | ✅ MERGED | #14, #20 | sl-firmware |
|
||||
| Gyro boot calibration (eliminates yaw drift) | ✅ MERGED | #25 | sl-controls |
|
||||
| Status LEDs (solid=OK, blink=error) | ✅ MERGED | #26 | sl-firmware |
|
||||
| Magnetometer + barometer auto-detect | ✅ MERGED | #27 | sl-firmware |
|
||||
| CW270 IMU axis mapping for MAMBA F722S | ✅ MERGED | #20 | sl-firmware |
|
||||
|
||||
**Next step:** Flash firmware to real hardware and test balance on the robot.
|
||||
|
||||
---
|
||||
|
||||
## Phase 1.5: Mechanical + Platform — IN PROGRESS 🔧
|
||||
|
||||
Goal: Physical chassis and compute platform ready for testing.
|
||||
|
||||
| Feature | Status | PR | Agent |
|
||||
|---------|--------|----|-------|
|
||||
| Parametric chassis frame (OpenSCAD) | ✅ MERGED | #7 | sl-mechanical |
|
||||
| Prototype base plate (real hub motor measurements) | ✅ MERGED | #11 | sl-mechanical |
|
||||
| Vertical stem + battery carousel (2-4 packs) | ✅ MERGED | #11 | sl-mechanical |
|
||||
| Base plate dimensions fix (270x240mm) | ⏳ Salty reviewing | #11 | sl-mechanical |
|
||||
| Jetson Nano Docker env (JetPack 4.6 + ROS2 Humble) | ✅ MERGED | #8 | sl-jetson |
|
||||
| STM32-to-Jetson ROS2 serial bridge | ✅ MERGED | #16 | sl-jetson |
|
||||
| SLAM setup technical plan | ✅ MERGED | #1 | sl-perception |
|
||||
| RealSense + RPLIDAR ROS2 driver integration | ✅ MERGED | #17 | sl-perception |
|
||||
| Multi-variant branch strategy | ⏳ Salty reviewing | #29 | sl-firmware |
|
||||
|
||||
### Physical Build Checklist
|
||||
- [ ] Laser-cut / 3D-print base plate (270x240mm)
|
||||
- [ ] Machine dropout clamps for D-cut axles (16.11mm base, 13mm flat)
|
||||
- [ ] Mount hub motors to base plate
|
||||
- [ ] Weld/assemble vertical stem (80-120cm)
|
||||
- [ ] Print battery carousel clamp
|
||||
- [ ] Mount FC (MAMBA F722S) with M3 standoffs
|
||||
- [ ] Wire ESC → motors, battery → ESC
|
||||
- [ ] Flash firmware and test USB CDC connection
|
||||
- [ ] First balance test (tethered)
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Autonomous Navigation — PLANNED 🗺️
|
||||
|
||||
Goal: Indoor SLAM, mapping, obstacle avoidance, person following.
|
||||
|
||||
**Prerequisites:** Phase 1 hardware-tested on real robot, Jetson mounted, sensors calibrated.
|
||||
|
||||
| Feature | Priority | Agent | Notes |
|
||||
|---------|----------|-------|-------|
|
||||
| CRSF RC integration (ELRS) | P1 | sl-firmware | BetaFPV 2.4GHz TX/RX for manual control |
|
||||
| Autonomous/RC mode switch | P1 | sl-controls | RC override with smooth handoff to autonomous |
|
||||
| Jetson → STM32 command protocol | P1 | sl-jetson | Speed/steer from Nav2 → serial → STM32 |
|
||||
| RTAB-Map SLAM integration | P2 | sl-perception | Primary: RTAB-Map. Fallback: ORB-SLAM3 |
|
||||
| Nav2 path planning | P2 | sl-perception | Occupancy grid → Nav2 planner |
|
||||
| Obstacle avoidance | P2 | sl-perception | RPLIDAR + depth camera costmaps |
|
||||
| Person detection + following | P3 | sl-jetson | RealSense + CUDA inference on Nano |
|
||||
| Outdoor waypoint navigation | P3 | sl-perception | GPS if needed |
|
||||
|
||||
### SLAM Architecture (from sl-perception's plan)
|
||||
```
|
||||
RPLIDAR A1M8 ──→ rplidar_ros ──→┐
|
||||
├──→ rtabmap_ros ──→ Nav2
|
||||
RealSense D435i ──→ realsense2 ─┘ ↑
|
||||
slam_toolbox (fallback)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Multi-Variant Expansion — FUTURE 🚀
|
||||
|
||||
| Feature | Variant | Notes |
|
||||
|---------|---------|-------|
|
||||
| SaltyRover chassis design | saltyrover | 4-wheel differential or Ackermann steering |
|
||||
| SaltyRover motor driver | saltyrover | 4-wheel independent speed control |
|
||||
| SaltyTank track driver | saltytank | Tracked drive, skid steering |
|
||||
| Variant-specific control loops | all | Rover/tank: no balance PID needed |
|
||||
| Shared sensor abstraction layer | all | Common IMU/mag/baro/motor interface across variants |
|
||||
|
||||
---
|
||||
|
||||
## Hardware Reference
|
||||
|
||||
| Component | Specs |
|
||||
|-----------|-------|
|
||||
| **FC** | MAMBA F722S (STM32F722RET6, MPU6000, CW270 mount) |
|
||||
| **Motors** | 2x 8" pneumatic hoverboard hub motors (10x2.125, 35 PSI) |
|
||||
| **Axle** | Stepped D-cut: 16.11mm base, 15.95mm shaft, 13mm flat, 65.5mm total protrusion |
|
||||
| **ESC** | Hoverboard ESC (EFeru FOC firmware) |
|
||||
| **Batteries** | 420x88x56mm packs, 2-4 mounted vertically on central stem |
|
||||
| **Base Plate** | 270mm wide × 240mm deep, wheels extend beyond edges |
|
||||
| **Total Height** | 80-120cm (ground to top of stem) |
|
||||
| **RC** | BetaFPV ELRS 2.4GHz TX + RX |
|
||||
| **AI Brain** | Jetson Nano 4GB + Noctua fan |
|
||||
| **Depth Camera** | Intel RealSense D435i (stereo depth 0.1-10m, 848×480@90fps, BMI055 IMU) |
|
||||
| **LIDAR** | RPLIDAR A1M8 (360°, 12m range, 8000 samples/s, ~5.5Hz) |
|
||||
| **Spare IMUs** | BNO055, MPU6050 |
|
||||
|
||||
---
|
||||
|
||||
## Agent Team
|
||||
|
||||
| Agent | Role | Specialty |
|
||||
|-------|------|-----------|
|
||||
| **sl-firmware** | Embedded lead | STM32 HAL, USB, peripheral drivers, I2C sensors |
|
||||
| **sl-controls** | Control systems | PID, sensor fusion, motor control, safety |
|
||||
| **sl-perception** | SLAM/perception | ROS2, RTAB-Map, sensor integration, Nav2 |
|
||||
| **sl-mechanical** | 3D design | OpenSCAD, chassis, mechanical design |
|
||||
| **sl-jetson** | Jetson platform | Docker, ROS2, serial bridge, CUDA inference |
|
||||
| **max** | PM (Opus) | Orchestrates via iTerm + MQTT, doesn't write code |
|
||||
|
||||
---
|
||||
|
||||
## Resolved Issues
|
||||
|
||||
| # | Title | Fixed By | PR |
|
||||
|---|-------|----------|-----|
|
||||
| #5 | Need 2 more team members | max | Recruited sl-mechanical + sl-jetson |
|
||||
| #9 | USB CDC TX breaks with IMU init | sl-firmware | #10 |
|
||||
| #12 | Roll displays as pitch in web UI | sl-firmware | #14 |
|
||||
| #13 | No yaw in telemetry | sl-firmware | #14 |
|
||||
| #15 | 3D model axes wrong (CW270) | sl-firmware | #20 |
|
||||
| #21 | Yaw drifts when stationary | sl-controls | #25 |
|
||||
| #22 | Status LEDs blink too much | sl-firmware | #26 |
|
||||
| #23 | Gyro bias calibration needed | sl-controls | #25 |
|
||||
| #24 | Magnetometer + barometer support | sl-firmware | #27 |
|
||||
Loading…
x
Reference in New Issue
Block a user