Hi, I’m working on a senior design project involving a small hybrid aerial/underwater drone, and I’m trying to figure out the cleanest way to control it.
-
Our current idea is to use two flight controllers:
-
A smaller F405/H7 board running ArduCopter for four aerial motors
-
A Pixhawk running ArduSub for four reversible underwater thrusters
-
One Raspberry Pi running BlueOS
-
One CSI camera connected to the Pi
-
One Cat5e/Cat6 tether running to a topside laptop
-
One gamepad for both air and underwater control
We have access to Pixhawk 4, 5X, and 6X boards through our university inventory. What I’m hoping to do is connect both flight controllers to the same Raspberry Pi, probably through separate USB or UART connections. Each controller would have a different MAVLink system ID.
The general setup would be:
Topside laptop + gamepad
|
Ethernet tether
|
Raspberry Pi / BlueOS
| |
ArduCopter FC ArduSub Pixhawk
SYSID 1 SYSID 2
Both flight controllers could continue sending telemetry, but only the selected one would receive control commands. We would probably also use a separate hardware interlock so the aerial and underwater motor banks could never run at the same time.
My main question is whether BlueOS can maintain two autopilot connections at once and whether a custom BlueOS extension could switch or remap the joystick commands between them.
I understand ArduCopter and ArduSub interpret joystick inputs differently, so I’m assuming we may need separate mappings rather than simply forwarding the same MANUAL_CONTROL message to both.Has anyone tried something similar with two flight controllers connected to one BlueOS computer?
Would it be better to:
-
Let BlueOS connect to both serial devices and write a custom extension that routes commands?
-
Give each flight controller a separate UDP endpoint and handle the switching in a custom program?
-
Handle the switching at the topside computer instead?
-
Keep the aerial controller on normal RC and only use BlueOS for ArduSub?
Our other option is using one Pixhawk 6X with a custom ArduCopter build that switches between an aerial mixer and an underwater mixer. That would reduce hardware, but it seems like much more firmware work because we would need reversible thruster outputs, separate motor mixing, water-specific behavior, transition logic, and failsafes.
The two-controller option seems safer because ArduCopter and ArduSub would each handle the vehicle type they were designed for, while the Raspberry Pi would combine the tether, camera, telemetry, and operator interface.
Sorry if I’m misunderstanding how BlueOS handles multiple MAVLink systems. I’m mainly trying to find out whether this is a practical architecture before we start buying and configuring hardware.