BlueROV2 Autonomous Software


I’ve been trying to turn my BlueROV2 autonomous (movement with OpenCV) and I’ve been looking at a lot of the other forums for turning the BlueROV2 autonomous, but I haven’t been able to understand how all the software works together and how to put the code on the BlueROV2. I have the BlueROV2 R4 with the Navigator Flight Controller.

Currently, I have QGroundControl installed and have connected manually to the robot, controlling it with the tether. I installed mavproxy and pymavlink. My main questions are below, sorry I know there’s a lot of questions.

  1. Where do I put the code in (in mavproxy or BlueOS) and how would I do so? Is there a specific terminal?

  2. How does BlueOS work and what should be on the sim card that goes into the BlueROV2’s Raspberry Pi 4?

  3. How does the code go onto the Raspberry Pi 4 and stay there, turning the robot autonomous?

  4. How do the software’s interact with one another? (how QGroundControl interacts with mavproxy, and how pymavlink interacts with both mavproxy and QGroundControl)? Do I need to change specific settings in QGroundControl?

  5. Is SITL important to make the BlueROV2 autonomous?

Thank you for any help it’s extremely appreciated!

1 Like

Hi @AT1234567, welcome to the forum :slight_smile:

mavproxy is a proxy service for connecting different MAVLink-based services and devices together into a MAVLink network, and it (or its equivalent service in BlueOS) is not something you should be modifying for autonomous operation - if anything you should just be using it to set up an endpoint which your code can then talk to.

Code on the Onboard Computer can be stored directly on the root filesystem, or within a BlueOS Extension. The latter is recommended because it makes your program more shareable and restorable, and has management infrastructure built into BlueOS, but is potentially a bit more work to set up when first starting out.

I’d recommend looking at the development documentation. Feel free to ask follow-up questions if there’s something that isn’t clear :slight_smile:

I assume you mean the SD card, which is typically used for both file storage and the operating system running the device (e.g. Raspberry Pi OS). For BlueOS,

You can put files onto the Raspberry Pi via the BlueOS File Browser or Terminal (using red-pill), but you would need to do your own configuration to get those to run. BlueOS Extensions can be installed via the Extensions Manager.

At a high level, QGroundControl has a MAVLink telemetry connection with the vehicle, which is facilitated by a MAVLink Endpoint. If you write a Pymavlink program then it can connect to its own MAVLink endpoint to receive telemetry from the vehicle and send commands to it.

That depends what you’re trying to do, but if you want your program to have full control over the vehicle then you’ll likely need to disable QGC’s heartbeat messages.

SITL is a simulation program, and is unrelated to vehicle autonomy. It can however be used for testing autonomous functionalities in a virtual environment where there is no physical vehicle that could get damaged by poor operation.

Am interested to hear if you succeeded.

Hey @EliotBR Please reply to my query and give me a step by step guidance.