Displaying boat and ROV positions


I am having trouble displaying positions, both for the boat (external GPS) and for the ROV (equipped with WaterLinked DVL A-50). I’m running BlueOS 1.0.1 with a Navigator autopilot. My goal is to have a map display showing the position of the boat (the external GPS feed) and the position of the ROV (calculated by the DVL).

Forgetting the DVL for the moment, I have not yet succeeded at displaying the boat position in QGC. I’ve tried both a true serial NMEA feed from a Garmin GPS (confirmed it is sending GGA to the port at 4800 baud), and a USB puck antenna sending to a virtual serial port (also 4800 baud, also confirmed sending GGA). I’ve tried following various forum posts including:

  • in BlueOS tools, using the NMEA Injector to establish a UDP endpoint on port 27000
  • in BlueOS tools, establishing a new network bridge
    • I couldn’t implement this because the minimum selectable baud rate is 9600
  • in QGC Parameters, setting “GPS_TYPE” to MAV
  • in QGC Application Settings, selecting Auto-connect to NMEA GPS Device (and selecting the correct serial port) and disabling auto-connect to RTK GPS

As for the DVL, it is running fine and in its plan-view position window I can see the calculated ROV position in terms of delta X, delta Y, delta Z from the origin.

Questions are:

  1. How to get the boat position displayed? (is my 4800 baud GPS precluding this?)
  2. How to then display the DVL-calculated position relative to the boat on the same map.

Thanks for any clues,

1 Like

This should be enough for QGC to show the boat position in the map.

Upon further inspection. It is broken in QGC 4.2, and was fixed in master here:

I opened a PR to backport it to stable Here:

That is not possible right now. But you can show absolute position by setting the current position in the extension web interface. That will make the ROV take that position as the current one and the DVL will then be fused by the EKF to display positions in QGC.

1 Like

Wow, OK, so does that mean the use case for the DVL is just to drive the ROV from a fixed location like a dock or an anchored boat? That sure limits its otherwise impressive utility.

The “set current position” function in the DVL interface has not yet worked for me. I have assumed that this was because whatever problem was preventing display of the boat’s GPS was also breaking this function- does that seem right? I’ll update QGC and try it again.

In the ocean it’s necessary to know where the ROV is relative to the boat. I see three solutions:

  1. Feature request to display both positions on a map, pretty please?? :grinning:
  2. Drop the idea of plotting and instead use the coordinates of the boat and ROV to calculate a vector that could be reported in two text fields in QGC, e.g. ROV_Distance and ROV_Bearing.
  3. Write the real-time ROV position to a log file, from which it can be manually plotted externally along with the boat position. Is there a known solution along these lines? E.g. for other similar situations I have used R to read a log file every ~5 seconds and display an updated plot, but it’s a clumsy solution and poor interface; also I think the GPS feed from the boat will “captured” by QGC and I won’t have access to that real-time data.
  4. Is there a way to access the ROV position data directly for external use, e.g. via a TCP client or other comm protocol?

Thanks for clues to any of these solutions.

That should work, which should make the ROV position show in QGC. A couple of times I had to click the button more than once for it to work, which needs some investigation.

This is definitely the end goal, but we need to think of a way of sending the topside position to the vehicle, or setting the position from within QGC itself…

That’s what Willian’s pull request is for. QGroundControl is supposed to support showing the GPS positions of the boat and the ROV at the same time (in which case you can visually see their relative positions), but that functionality is currently broken in QGC 4.2.x.

Willian’s comment here was that currently it’s not possible to, given a known GPS position of ONE vehicle, and its measured relative position to the other vehicle, synchronise the positions of both vehicles.

The reason that’s relevant/of interest is it could be useful when updating/correcting the position of the ROV based on the boat position (e.g. if your boat is x meters long, facing north, and the ROV is at the tip, then you could specify the ROV position as x m north of the boat). Instead equivalent functionality is currently achieved by directly specifying the ROV’s GPS position (via the DVL page’s “set position” function) - i.e. you need to do the conversion from boat GPS + x m north manually in order to input the correct position number.

In case it’s a point of confusion, the DVL does not update the ROV’s position relative to the boat/surface point it’s tethered to, but rather as a GPS position update relative to the last specified position of the ROV (e.g. the position specified via the DVL page).

The ROV position should be sent regularly via GLOBAL_POSITION_INT MAVLink messages. You can configure additional UDP or TCP MAVLink Endpoints via the Endpoints page.

@williangalvani mentioned it is expected to work - perhaps you are running an old version, or you do not have a valid velocity when trying to set the position?

It may be worth trying to fully remove the current one via the web terminal:

# find the name of the DVL container, and stop and remove it
export OLD=$(docker container ls --format='{{.Names}}' | grep -i dvl)
docker container stop $OLD
docker container rm $OLD
# completely remove (delete) old images
export OLD_IMAGES=$(docker image ls --format='{{.Repository}}' | grep -i dvl)
docker image rm $OLD_IMAGES

If you then use Version-Chooser to update to the latest master version of BlueOS you can use the new Extension Manager page to make sure you’re correctly installing the latest BlueOS Water-Linked DVL extension.

If that doesn’t work, please open a new post about the issue and we can try to resolve it :slight_smile:

Here is another way to plot position of both ROV and ship on nautical chart in OpenCPN.
Note that underwater positioning like Waterlinked or USBL is needed for ROV position.

I see that this morning your GPS fix was merged in QGC stable 4.2 on Github. But I’m not clear on how I implement that. Is there an executable I can install? Or can you point me to how to implement this change on my end? Or do I need to wait for a new QGC version release?

You should be able to install this one (or the one with the same name for your operating system), but otherwise you can wait for the next stable release :slight_smile:

Eliot- when I follow that link I see this:


… but it’s not an active link, just text on the page. How do I get the .exe file?

You need to login to github to be able to download artifacts.

1 Like