The long failsafe is set to come before the short one
What ArduPilot says:
- PreArm: FS_LONG_TIMEOUT < FS_SHORT_TIMEOUT
Plane answers a lost radio in two stages: a short failsafe (a holding action such as circling, FS_SHORT_ACTN) and then a long one (the real action, such as RTL, FS_LONG_ACTN). The long stage must not come first: here FS_LONG_TIMEOUT (5 s by default) is smaller than FS_SHORT_TIMEOUT (1.5 s by default) while the short failsafe is in use (FS_SHORT_ACTN is not 3).
What to do, most likely first
One of the two times was changed without the other.
FixSet
FS_LONG_TIMEOUTaboveFS_SHORT_TIMEOUT. Choose the long time by how far the plane may fly on before it turns for home: at 15 m/s, 5 s is 75 m.
In the code of 4.6 the short failsafe does not wait for FS_SHORT_TIMEOUT: it starts as soon as the radio counts as lost. That time is used only by this check and when a ground-station failsafe clears. 4.7 removed the parameter and this check with it.
Parameters to look at
| Parameter | What it is |
|---|---|
FS_LONG_TIMEOUT | Long failsafe timeout |
FS_SHORT_TIMEOUT | Short failsafe timeout |
FS_SHORT_ACTN | Short failsafe action |
FS_LONG_ACTN | Long failsafe action |
Where to do it:Starting Parameters
The code that sends it
PreArm: FS_LONG_TIMEOUT < FS_SHORT_TIMEOUT
ArduPlane/AP_Arming.cpp AP_Arming_Plane::pre_arm_checks() · Open in ArduPilot Plane-4.6.3