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>
2.2 KiB
Nav2 Recovery Behaviors Configuration
Issue #479: Configure conservative recovery behaviors for SaltyBot autonomous navigation.
Overview
Recovery behaviors are triggered when Nav2 encounters navigation failures (path following failures, stuck detection, etc.). The recovery system attempts multiple strategies before giving up.
Configuration Details
Backup Recovery (Issue #479)
- Distance: 0.3 meters reverse
- Speed: 0.1 m/s (very conservative for FC + Hoverboard ESC)
- Max velocity: 0.15 m/s (absolute limit)
- Time limit: 5 seconds maximum
Spin Recovery
- Angle: 1.57 radians (90°)
- Max angular velocity: 0.5 rad/s (conservative for self-balancing robot)
- Min angular velocity: 0.25 rad/s
- Angular acceleration: 1.6 rad/s² (half of normal to ensure smooth motion)
- Time limit: 10 seconds
Wait Recovery
- Duration: 5 seconds
- Purpose: Allow dynamic obstacles (people, other robots) to clear the path
Progress Checker (Issue #479)
- Minimum movement threshold: 0.2 meters (20 cm)
- Time window: 10 seconds
- Behavior: If the robot doesn't move 20cm in 10 seconds, trigger recovery sequence
Safety: E-Stop Priority (Issue #459)
The emergency stop system (Issue #459, saltybot_emergency package) runs independently of Nav2 and takes absolute priority.
<<<<<<< HEAD Recovery behaviors cannot interfere with E-stop because the emergency system operates at the motor driver level on the ESP32 BALANCE firmware.
Recovery behaviors cannot interfere with E-stop because the emergency system operates at the motor driver level on the ESP32-S3 firmware.
291dd68(feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only)
Behavior Tree Sequence
Recovery runs in a round-robin fashion with up to 6 retry cycles.
Constraints for FC + Hoverboard ESC
This configuration is specifically tuned for:
- Drivetrain: Flux Capacitor (FC) balancing controller + Hoverboard brushless ESC
- Max linear velocity: 1.0 m/s
- Max angular velocity: 1.5 rad/s
- Recovery velocity constraints: 50% of normal for stability
The conservative recovery speeds ensure smooth deceleration profiles on the self-balancing drivetrain without tipping or oscillation.