Help with BlueROV2, MAVLink and QGroundControl

Good day to you all! I hope to find everyone doing well!

I’m developing a project at a university with the BlueROV2. My goal is to communicate with the vehicle through MAVLink and use some commands to collect telemetry data and make it move.

My first steps were to understand MAVLink, ArduSub, and QGroundControl (which I’m still learning). I also started by running a simulation from BlueRobotics found here: GitHub - bluerobotics/bluesim: BlueROV2 Simulator using godot engine.

I could receive the Heartbeat Signals, collect some telemetry info, and give it simple movement commands with MAVLink using pymavlink.

When I went to the laboratory to try it on the BlueROV2, I faced some problems:

• I managed to connect to it, hear its Heartbeats, and disarm it through MAVLink commands, but I could not arm it, as apparently it requires the GUIDED mode, and QGC doesn’t allow me to switch to this mode. I might be mistaken, and I didn’t find an arm check in QGC that stops me from doing so.

• I tried to update or at least check the firmware version on QGC, but it only shows a loading bar that never loads.

• I’ve been told that I need a GPS signal for GUIDED mode, which I don’t have according to the LEDs on my board.

• I also failed to access BlueOS to update ArduSub, and I’ve been told I need to flash it on an SD Card (I haven’t tried this yet, as I’ll only do it if absolutely necessary).

Thank you for reading, and I’d appreciate it if anyone could assist me with:
• Arming and moving BlueROV2 with MAVLink, given these challenges.
• Creating a movement mission with MAVLink code without using GUIDED mode on QGC.

Thanks again, and I’m eager to learn if you have any advice!

Hi @alyssonoliveira -
Guided mode is only possible with ArduSub if the vehicle has a position source. Do you have a DVL or WaterLinked Underwater GPS installed?

Otherwise, any vehicle motion you create would be accomplished in stabilize or depth hold mode, with simulated pilot inputs…

1 Like

Hi, Tony! Thank you for your response!

According to the LEDs on my board, I have “no GPS.” However, QGC shows my exact location and the BlueROV2 in our lab. I’m still trying to figure this out, but I do know that one of the arm checks indicates I have a “bad GPS signal.”

Regarding this, I’m trying to learn about the EKF, as it could potentially feed the robot’s position into QGC. Is that an approach worth spending time on?

Thanks in advance!

Hi @alyssonoliveira -
If you’re using a Pixhawk it would only show a GPS LED if you connected one - however that GPS won’t work underwater! QGC is likely showing your location from some manner of Geo-IP localization…

Trying to use the EKF, which is consuming data from the motion sensors, to determine vehicle position is not worth pursuing! These are comparable to motion sensors in your cell phone, and while adequate to know the vehicle orientation, integrating them over time to know position will simply have too much error.

What are you goals for the Blue ROV2?

Hi @tony-white , thanks again for replying.

I’m currently developing a project for my university in Brazil. The goal is to create a Python library of MAVLink commands using pymavlink, allowing us to control and retrieve telemetry data from our BlueROV2. I’ve already tested this in a simulation application called BlueSim (link in the first post), and it worked.

I’m both writing a study and working to make it fully functional.

Here is a list of commands I’ve already tested:

  • MAV_CMD_COMPONENT_ARM_DISARM
  • MAV_CMD_DO_SET_MODE
  • MAVLink_set_position_target_local_ned_message
  • Heartbeat listening

These commands work in the simulation, and movement works in Guided mode, which, as I read, is the only mode that allows speed control.
Unfortunately, QGC doesn’t let me set it to GUIDED when connected to the vehicle, only during simulation.

Any insights on that? Thanks!

PS: I might be using wrong commands, or I’ll have to solve my GPS signal problem to active Guided Mode. It would be good to know if there are speed commands that I can use in Manual Mode.

Hi @alyssonoliveira -
Unfortunately, without a position sensor like a DVL, Guided mode is simply not possible! This means that your software developed in simulation will not work!

You can send mavlink commands to imitate user inputs, as covered in the “Send Manual Control” section in the pymavlink documentation.

1 Like

Hi @tony-white

Thank you so much for the information and your attention! I’ll check that and return with the accomplishments.