frontend: support radio configuration
Current behaviour
We currently support gamepad controller configuration, which allows Cockpit to process user input into a combination of MAVLink commands sent directly to the autopilot, Actions to control aspects of the interface being used, and additional custom Actions that can also send more general commands to services running on the vehicle's onboard computer, or even other devices / cloud services available from the network Cockpit is connected to.
We do not yet support radio controllers[^1], which is a common control mechanism for all non-Sub vehicle types. This can lead to confusing control setup experiences for users, and misses out on valuable Cockpit functionality that could be available to them. It is also relevant that common radio control often goes further than wifi can, which could allow for extended range in some applications.
[^1]: other than when connected via a USB adapter, at which point they're like an unusual gamepad
Expected or desired behaviour
Fundamentally radio control is a common input to vehicles, and I see Cockpit as in charge of input configuration and handling. I think it makes sense to generalise the Joysticks page to instead be a Controller page, and support either/both gamepads and radio controllers (with nice SVGs, and intuitive control mapping). We want to be pushing to the future of control station software, so Cockpit should strive to do an excellent job of managing this.
We should be able to perform autopilot radio channel handling configuration à la QGC and Mission Planner, via RCn_OPTIONs. Direct feedback is possible via the RC_CHANNELS_RAW MAVLink messages, and if we're clever with tracking of configured inputs we could even use unused channels to control Cockpit Actions via that feedback loop (who says Cockpit's control inputs can't come from/through the vehicle‽).
Additional Context
Considered while thinking about and responding to this forum thread.
Prerequisites
- [x] I have checked to make sure that a similar request has not already been filed or fixed.