For those who fly with a Joystick and also have a regular RC connected, we’ve recently discovered a long standing issue with the fall-back logic.
The details are captured in this issue but in short, the problem is that when the joystick is disconnected (e.g. telemetry connection is lost or the user disables the joystick) AP will fall back to using the regular RC but it does not check that those RC values are “fresh”.
This means that if, for example, the RC is also out of range, when the joystick/telemetry connection is lost, AP will momentarily consume the last RC values that it received (from real RC) even though they are very out-of-date. In many situations this is not dangerous because the last RC transmitter values were probably fine (e.g. mid stick values for roll, pitch, yaw, throttle) but it can be quite dangerous if the flight mode channel or auxiliary switches are being overriden by the joystick. In this case the flight mode will change to the real RC’s flight mode channel’s value and/or the auxiliary function may be triggered.
We are updating the joystick wiki page to strongly recommend against controlling these switches from the joystick (wiki PR)
Thanks very much to the community for beta testing and reporting back. As a bit of an editorial, one of the defining features of the 4.7 beta testing is that it is actually uncovering as many existing issues as new issues. Most of those are minor irritations but this one can be serious.
I’ve seen this cause an unexpected RTL when switching to a joystik with RTL on an aux switch/function that was left in the wrong position
I’ve seen this cause a crash when RC signal was lost from the RC controller and reverting to the Joystick which had an arm/disarm switch in the wrong positilon which caused a large quadplane to disarm about 20m up in the air. It wasn’t pretty.
In both cases, the issue was “fixed” by procedures involving labourious cross checking of switch positions on handover.
I think this is exactly the kind of problem that RC_CHANNELS_OVERRIDE_V2 is intended to help solve.
The legacy RC_CHANNELS_OVERRIDE message does not provide a clean way to update only a selected set of RC channels without also affecting other channels. This can become dangerous when a joystick/GCS unintentionally overrides channels used for flight mode selection or AUX switch functions.
To address this limitation, I defined a new MAVLink message here:
RC_CHANNELS_OVERRIDE_V2 uses an active channel mask, so only the intended channels are updated. This allows a joystick or GCS to control only the channels it owns, while leaving the flight mode channel and AUX switch channels under the regular RC receiver.
The MAVLink PR has been merged, and I plan to submit an ArduPilot PR to add support for this message.