saltylab-firmware/jetson/config/RECOVERY_BEHAVIORS.md
sl-mechanical a2c554c232 cleanup: remove all Mamba/F722S/STM32F722 refs — replace with ESP32-S3 BALANCE/IO
- 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>
2026-04-04 09:06:09 -04:00

2.0 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 ESP32-S3 BALANCE + VESC)
  • 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.

Recovery behaviors cannot interfere with E-stop because the emergency system operates at the motor driver level on the ESP32-S3 BALANCE firmware.

Behavior Tree Sequence

Recovery runs in a round-robin fashion with up to 6 retry cycles.

Constraints for ESP32-S3 BALANCE + VESC

This configuration is specifically tuned for:

  • Drivetrain: ESP32-S3 BALANCE + VESC (CAN bus)
  • 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.