sl-firmware 48e9af60a9 feat: Remove ELRS arm requirement for autonomous operation (Issue #512)
Enable Jetson autonomous arming while keeping RC as optional override.

Key Changes:
=============

1. RC Kill Switch (CH5 OFF) → Emergency Stop (not disarm)
   - Motors cutoff immediately on kill switch
   - Robot remains armed (allows re-arm without re-initializing)
   - Maintains kill switch safety for emergency situations

2. RC Disarm Only on Explicit CH5 Falling Edge (while RC alive)
   - RC disconnect doesn't disarm Jetson-controlled missions
   - RC failsafe timer (500ms) still handles signal loss

3. Jetson Autonomous Arming (via CDC 'A' command)
   - Works independently of RC state
   - Requires: calibrated IMU, robot level (±10°), no estop active
   - Uses same 500ms arm-hold safety as RC

4. All Safety Preserved
   - Arming hold timer: 500ms
   - Tilt limit: ±10° level
   - IMU calibration required
   - Remote E-stop override
   - RC failsafe: 500ms signal loss = disarm
   - Jetson timeout: 500ms heartbeat = zero motors

Command Protocol (CDC):
   A = arm (Jetson)
   D = disarm (Jetson)
   E/Z = estop / clear estop
   H = heartbeat (keep-alive)
   C<spd>,<str> = drive command

Behavior Matrix:
   RC disconnected      → Jetson-armed stays armed, normal operation
   RC connected + armed → Both Jetson and RC can arm, blended control
   RC kill switch (CH5) → Emergency stop + can re-arm via Jetson 'A'
   RC signal lost       → Disarm after 500ms (failsafe)

See AUTONOMOUS_ARMING.md for complete protocol and testing checklist.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-06 11:46:03 -05:00
..

SaltyBot Android/Termux Phone Node (Issue #420)

Android phone node for SaltyBot via Termux. Provides camera, GPS, IMU sensors and local OpenClaw LLM inference.

Setup

On phone (Termux):

bash termux-bootstrap.sh
mkdir -p ~/saltybot_workspace/src
cd ~/saltybot_workspace && colcon build

Running

cd ~/saltybot_workspace && source install/setup.bash
ros2 launch saltybot_phone phone_bringup.py

Topics

Topic Type Description
/phone/camera/image_raw Image Camera frames 320x240@15Hz
/phone/gps NavSatFix GPS location
/phone/imu Imu Accelerometer data
/saltybot/speech_text String Input from Jetson
/saltybot/chat_response String LLM output to Jetson

Power Management

nohup bash ~/power-management.sh > ~/power-mgmt.log 2>&1 &

Reduces CPU activity on low battery (<25%) or critical battery (<15%).

Configuration

Edit config/phone.yaml to adjust frame rates and LLM parameters.

Issue #420 Completion

Termux bootstrap Camera / GPS / IMU nodes OpenClaw chat (local LLM) WebSocket bridge to Orin Termux:Boot auto-start Power management