Home        Store        Learn        Blog

Help Understanding Interfaces

BlueRobotics ROV2 underwater robot. It uses QGround Control on a laptop with an XBox controller for manual flight mode. It is made a Pixhawk fight controller and a raspberry pi, so it can be reprogrammed with Python. Our plan is to give it some basic autonomous travel coding.

The problem we are having is understanding exactly how to give it the autonomous commands. All of the research we have done says to use mavlink, pymavlink and mavproxy with QGround Control. We are having some trouble understanding what role all of these play in the program, and how exactly to upload the code. UC BrowserSHAREit

Are all of these needed? Which one actually handles the Python Script? Any help or advice would be greatly appreciated.


The Python script can run on both the raspberry Pi or the topside computer alongside QGC.

The Pixhawk is the flight controller, it handles the ROV itself.
The Raspberry PI handles communication with topside, video, some extra sensors, and has a web interface help manage all this.

The Mavlink commands are “bridged” to the topside by the Raspberry Pi, that is why you can talk to it from both places.

Depending on what you are planning to do, you can choose to run it at the companion(slightly lower latency) or at the topside (more processing power).

Mavproxy is already installed in the Raspberry Pi. It bridges the communication with QGC (like a man-in-the-middle) and possibly other devices. Pymavlink is a Python implementation of mavlink.

All you need to install at your PC is pymavlink. The communication will be done via UDP.
See the MANUAL_CONTROL example.

Best regards,

Wouldn’t it be better to use guided mode for this ?