-
Notifications
You must be signed in to change notification settings - Fork 20k
Description
Bug report
Issue details
In ACRO mode, if the vehicle is airborne and the throttle is at the minimum position, triggering an GCS/RC Failsafe causes the copter to immediately disarm in mid-air.
While the "Disarm on low throttle" logic is expected on the ground, it should not be triggered when the flight controller detects the vehicle is still in flight (Airborne), especially during a failsafe event where a controlled RTL or Land is expected.
See line 472:
ardupilot/ArduCopter/events.cpp
Lines 463 to 482 in cef6eb7
| bool Copter::should_disarm_on_failsafe() { | |
| if (ap.in_arming_delay) { | |
| return true; | |
| } | |
| switch (flightmode->mode_number()) { | |
| case Mode::Number::STABILIZE: | |
| case Mode::Number::ACRO: | |
| // if throttle is zero OR vehicle is landed disarm motors | |
| return ap.throttle_zero || ap.land_complete; | |
| case Mode::Number::AUTO: | |
| case Mode::Number::AUTO_RTL: | |
| // if mission has not started AND vehicle is landed, disarm motors | |
| return !ap.auto_armed && ap.land_complete; | |
| default: | |
| // used for AltHold, Guided, Loiter, RTL, Circle, Drift, Sport, Flip, Autotune, PosHold | |
| // if landed disarm | |
| return ap.land_complete; | |
| } | |
| } |
Steps to Reproduce:
- Take off and switch to ACRO mode.
- Lower the throttle stick to the minimum position.
- param set FS_THR_VALUE -1 (trigger an RC Failsafe)/param set FS_GCS_TIMEOUT 0 (trigger a GCS Failsafe).
- The copter disarms immediately and falls.
- Expected Result: The copter should trigger the configured Failsafe action (e.g., RTL or Land) regardless of the throttle position, as long as it is airborne.
Version
Copter 4.4 -> main
Platform
[ ] All
[ ] AntennaTracker
[x] Copter
[ ] Plane
[ ] Rover
[ ] Submarine
Airframe type
sitl
Logs
RC Failsafe:
log_0_2025-12-27-12-45-46.zip
GCS Failsafe:
log_0_2026-1-7-16-26-53.bin.zip