[P0] Remove ELRS arm requirement — robot must operate autonomously #512

Closed
opened 2026-03-06 11:43:01 -05:00 by seb · 0 comments
Owner

Problem

The current firmware requires ELRS RC to be armed before motors will activate. This fundamentally conflicts with SaltyLab being an autonomous robot. If the ELRS receiver is off, disconnected, or out of range, the robot is a brick.

Expected Behavior

The robot should be able to arm and operate from any valid command source:

  • Jetson (primary — autonomous mode)
  • ELRS RC (override/training/telemetry)
  • Future: app, voice commands

Proposed Changes

  1. Decouple arming from RC — add an arming state machine that accepts arm commands from Jetson OR RC
  2. RC becomes optional override — if RC is connected and sticks are off-center, RC takes priority (already partially implemented). If RC is disconnected, robot operates normally from Jetson commands.
  3. RC kill switch remains — if RC IS connected and arm switch is flipped to disarm, that should still be an instant kill (safety override)
  4. Remove crsf_state.armed gate from PID loop — replace with a source-agnostic robot_armed flag
  5. Jetson arming protocol — define a command byte/sequence for Jetson to request arm/disarm

Safety Considerations

  • RC kill switch must still work as emergency stop when RC is present
  • Jetson timeout (200ms) still cuts motors
  • Tilt limit still cuts motors
  • Watchdog still active
  • Hardware kill switch (battery inline) is the ultimate safety

Priority: P0

This blocks all autonomous operation and bench testing without RC gear.

## Problem The current firmware requires ELRS RC to be armed before motors will activate. This fundamentally conflicts with SaltyLab being an **autonomous robot**. If the ELRS receiver is off, disconnected, or out of range, the robot is a brick. ## Expected Behavior The robot should be able to arm and operate from **any valid command source**: - Jetson (primary — autonomous mode) - ELRS RC (override/training/telemetry) - Future: app, voice commands ## Proposed Changes 1. **Decouple arming from RC** — add an arming state machine that accepts arm commands from Jetson OR RC 2. **RC becomes optional override** — if RC is connected and sticks are off-center, RC takes priority (already partially implemented). If RC is disconnected, robot operates normally from Jetson commands. 3. **RC kill switch remains** — if RC IS connected and arm switch is flipped to disarm, that should still be an instant kill (safety override) 4. **Remove `crsf_state.armed` gate from PID loop** — replace with a source-agnostic `robot_armed` flag 5. **Jetson arming protocol** — define a command byte/sequence for Jetson to request arm/disarm ## Safety Considerations - RC kill switch must still work as emergency stop when RC is present - Jetson timeout (200ms) still cuts motors - Tilt limit still cuts motors - Watchdog still active - Hardware kill switch (battery inline) is the ultimate safety ## Priority: P0 This blocks all autonomous operation and bench testing without RC gear.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#512
No description provided.