Hi, I’ve got a custom research ROV under development that up until now has used an in-house serial protocol over a short tether to send user input from my joystick to the custom vehicle controller.
I’m trying to upgrade to control over ethernet with the Fathom-X tether along with first-person video streaming from the low light USB cam. I’ve got video streaming to QGroundControl working fine with gstreamer on a Raspberry Pi inside the vehicle.
I thought it would be straightforward to minimally implement manual control and basic telemetry via QGroundControl just like the block diagram at https://www.ardusub.com/software/components.html
But I’m having a hard time finding a clear conceptual description anywhere of how I would replace the Pixhawk with my custom controller and establish a successful MAVLink connection to QGC without installing or using ArduSub/ArduPilot or PX4 or whatever software stack on “supported hardware.”
I generated MAVLink C headers for a few messages and far as I can tell I’m sending valid MAVLink heartbeats from my vehicle controller. With a USB-to-serial adapter connection to my controller, I can get a pymavlink script to receive and print the heartbeats.
I then tried with a manually-set-up serial connection in QGC, expecting (erroneously?) to at least see something in MAVLink inspector, but nothing. I found this: https://dev.qgroundcontrol.com/en/communication_flow.html but I’m not sure if all of that is required to get a two-way link between a vehicle and QGroundControl.
I’m starting to dive into the ArduSub and QGroundControl source code to see if I can figure out how the connection is negotiated but if anyone has other suggestions for a more understandable starting point to set up a very basic MAVLink manual control and telemetry connection to QGroundControl without the rest of the autopilot software, it’d be appreciated.