sl-firmware
381549b33f
feat: Emergency stop cascade system (Issue #459)
Critical safety system with <50ms latency emergency response.
ROS2 action server /saltybot/estop with unified trigger sources:
- Voice commands: 'stop', 'emergency', 'e-stop'
- Gamepad emergency button
- IMU tilt detection (>45 degrees)
- LiDAR obstacle detection (<0.3m)
- Geofence boundary violation
- Watchdog timeout trigger
- MQTT remote kill signal
Cascade response (within 500ms):
1. Zero cmd_vel in <50ms (priority critical)
2. Disable autonomous mode
3. Face alert animation (emergency_stop)
4. LED red indicator
5. TTS alert announcement
6. Event logging + sensor snapshot
Safety properties:
- Cannot be overridden once triggered
- Manual resume only (gamepad Start or voice 'resume')
- Non-blockable execution (separate thread)
- Redundant trigger sources for reliability
Published topics:
- /saltybot/estop_active (Bool) - System state
- /saltybot/estop_event (String) - Event log (JSON)
Subscribed triggers:
- /camera/imu - Tilt detection
- /scan - Obstacle detection <0.3m
- /voice/command - Voice e-stop/resume
- /gamepad/emergency, /gamepad/start - Gamepad controls
- /saltybot/geofence_violation - Geofence boundary
- /saltybot/watchdog_timeout - Watchdog signal
- /saltybot/mqtt_kill - Remote kill signal
Package structure:
- estop_server: Main emergency stop node
- estop_config.yaml: Timing, triggers, cascade config
- estop.launch.py: Launch with safety parameters
- Unit tests for trigger detection and cascade timing
Logging: /home/seb/saltybot-data/estop/ (JSON format)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-05 09:19:31 -05:00
..
2026-03-02 12:22:58 -05:00
2026-03-03 18:17:41 -05:00
2026-03-02 09:38:46 -05:00
2026-03-02 11:07:35 -05:00
2026-03-02 11:07:35 -05:00
2026-03-05 08:53:43 -05:00
2026-03-04 22:40:19 -05:00
2026-03-04 22:40:40 -05:00
2026-03-03 00:46:12 -05:00
2026-03-02 12:48:16 -05:00
2026-03-04 12:17:56 -05:00
2026-03-03 00:41:39 -05:00
2026-03-05 09:07:17 -05:00
2026-03-02 08:38:24 -05:00
2026-02-28 22:59:13 -05:00
2026-03-01 00:42:18 -05:00
2026-03-02 20:45:21 -05:00
2026-03-02 12:01:00 -05:00
2026-03-02 12:11:37 -05:00
2026-02-28 22:57:58 -05:00
2026-03-05 09:06:18 -05:00
2026-03-04 22:44:15 -05:00
2026-03-02 10:19:22 -05:00
2026-03-02 10:44:32 -05:00
2026-03-02 10:44:32 -05:00
2026-03-02 10:39:37 -05:00
2026-03-02 10:39:37 -05:00
2026-03-05 09:19:31 -05:00
2026-03-05 08:53:56 -05:00
2026-03-04 12:44:33 -05:00
2026-03-04 13:12:47 -05:00
2026-03-02 09:36:17 -05:00
2026-03-02 09:36:17 -05:00
2026-03-01 00:48:03 -05:00
2026-03-05 08:53:56 -05:00
2026-03-05 09:05:55 -05:00
2026-03-03 12:47:22 -05:00
2026-03-03 12:47:22 -05:00
2026-03-05 08:52:52 -05:00
2026-03-02 17:35:30 -05:00
2026-03-05 08:55:41 -05:00
2026-03-03 17:29:14 -05:00
2026-03-02 09:17:54 -05:00
2026-03-02 08:38:49 -05:00
2026-03-02 11:57:17 -05:00
2026-03-04 23:33:18 -05:00
2026-03-04 23:35:15 -05:00
2026-03-05 09:05:16 -05:00
2026-03-02 10:36:21 -05:00
2026-03-02 11:17:19 -05:00
2026-03-02 11:50:13 -05:00
2026-03-01 00:52:54 -05:00
2026-03-04 08:44:51 -05:00
2026-03-02 08:41:40 -05:00
2026-03-05 09:04:10 -05:00
2026-03-02 12:12:57 -05:00
2026-03-02 11:39:21 -05:00
2026-03-02 11:39:21 -05:00
2026-03-05 08:55:47 -05:00
2026-03-02 11:47:05 -05:00
2026-03-02 21:37:08 -05:00
2026-03-03 06:47:45 -05:00
2026-03-04 23:33:55 -05:00
2026-03-01 01:07:06 -05:00
2026-03-02 09:03:28 -05:00
2026-03-02 09:59:53 -05:00
2026-03-03 16:48:17 -05:00
2026-03-01 01:15:13 -05:00
2026-03-01 01:15:13 -05:00
2026-03-04 13:14:44 -05:00
2026-03-04 13:32:20 -05:00
2026-03-02 12:05:24 -05:00
2026-03-05 09:04:49 -05:00
2026-03-05 09:04:49 -05:00
2026-03-04 12:43:00 -05:00
2026-03-01 23:15:00 -05:00
2026-03-01 23:56:05 -05:00
2026-03-02 08:50:22 -05:00
2026-03-01 23:59:10 -05:00
2026-03-01 01:06:50 -05:00
2026-03-02 11:14:10 -05:00
2026-02-28 23:19:23 -05:00
2026-03-02 09:14:37 -05:00
2026-03-02 10:04:36 -05:00
2026-03-02 10:04:36 -05:00
2026-03-02 11:21:18 -05:00
2026-03-05 08:53:55 -05:00
2026-03-04 23:32:21 -05:00
2026-03-01 23:25:08 -05:00
2026-03-01 23:25:08 -05:00
2026-03-03 00:23:53 -05:00
2026-03-04 07:05:46 -05:00
2026-03-02 10:15:32 -05:00
2026-03-04 22:40:40 -05:00
2026-03-02 17:29:03 -05:00