# Displaying boat and ROV positions

**URL:** <https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190>\
**Category:** Sonar and Acoustics\
**Tags:** positioning\
**Created:** [November 11, 2022, 1:03am UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190 "2022-11-11T01:03:02Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![ScottM](https://avatars.discourse-cdn.com/v4/letter/s/65b543/32.png) [@ScottM](https://discuss.bluerobotics.com/u/ScottM)\
**Post date:** [November 11, 2022, 1:03am UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/1 "2022-11-11T01:03:02Z")

</div>

Hi,

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,  
-Scott

---

<div class="post-metadata">

**Author:** ![williangalvani](https://avatars.discourse-cdn.com/v4/letter/w/6f9a4e/32.png) [@williangalvani](https://discuss.bluerobotics.com/u/williangalvani)\
**Post date:** [November 11, 2022, 3:33pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/2 "2022-11-11T15:33:59Z")

</div>

> [@ScottM](#):
>
> in QGC Application Settings, selecting Auto-connect to NMEA GPS Device (and selecting the correct serial port) and disabling auto-connect to RTK GPS

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:

> <https://github.com/mavlink/qgroundcontrol/pull/10374>
>
> "QNmeaPositionInfoSource supports reporting the accuracy of the
> horizontal and …vertical position. To enable position accuracy reporting
> an estimate of the User Equivalent Range Error associated with the NMEA
> source must be set with setUserEquivalentRangeError."
> 
> Source: https://doc.qt.io/qt-6/qnmeapositioninfosource.html#details
> 
> Commit 2a9ecabad86f37ccfcf8de9d0d5853238678ab4c introduced new behaviour
> that broke use of external GPS. This change fixes the problem reported
> in https://github.com/mavlink/qgroundcontrol/issues/10271.

I opened a PR to backport it to stable Here:

> <https://github.com/mavlink/qgroundcontrol/pull/10486>
>
> Backporting https://github.com/mavlink/qgroundcontrol/pull/10374 to fix external… gps support in 4.2

> [@ScottM](#):
>
> How to then display the DVL-calculated position relative to the boat on the same map.

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.

---

<div class="post-metadata">

**Author:** ![ScottM](https://avatars.discourse-cdn.com/v4/letter/s/65b543/32.png) [@ScottM](https://discuss.bluerobotics.com/u/ScottM)\
**Post date:** [November 14, 2022, 4:15pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/3 "2022-11-14T16:15:39Z")

</div>

> [@williangalvani](#):
>
> That is not possible right now.

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?? 😀
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.  
-Scott

---

<div class="post-metadata">

**Author:** ![williangalvani](https://avatars.discourse-cdn.com/v4/letter/w/6f9a4e/32.png) [@williangalvani](https://discuss.bluerobotics.com/u/williangalvani)\
**Post date:** [November 14, 2022, 5:17pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/4 "2022-11-14T17:17:04Z")

</div>

> [@ScottM](#):
>
> 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.

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.

> [@ScottM](#):
>
> Feature request to display both positions on a map, pretty please?? 😀

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…

---

<div class="post-metadata">

**Author:** ![EliotBR](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/eliotbr/32/6937_2.png) [@EliotBR](https://discuss.bluerobotics.com/u/EliotBR)\
**Post date:** [November 15, 2022, 8:36am UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/5 "2022-11-15T08:36:31Z")

</div>

> [@ScottM](#):
>
> - Feature request to display both positions on a map, pretty please?? 😀

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.

> [@williangalvani](#):
>
> > [@ScottM](#):
> >
> > How to then display the DVL-calculated position relative to the boat on the same map.
> 
> That is not possible right now.

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).

> [@ScottM](#):
>
> Is there a way to access the ROV position data directly for external use, e.g. via a TCP client or other comm protocol?

The ROV position should be sent regularly via [`GLOBAL_POSITION_INT`](http://mavlink.io/en/messages/common.html#GLOBAL_POSITION_INT) MAVLink messages. You can configure additional UDP or TCP MAVLink Endpoints via the [Endpoints page](https://docs.bluerobotics.com/ardusub-zola/software/onboard/BlueOS-1.0/advanced-usage/#mavlink-endpoints).

> [@ScottM](#):
>
> The “set current position” function in the DVL interface has not yet worked for me.

@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:

```auto
red-pill
# 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 🙂

---

<div class="post-metadata">

**Author:** ![Boko](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/boko/32/7241_2.png) [@Boko](https://discuss.bluerobotics.com/u/Boko)\
**Post date:** [November 15, 2022, 12:51pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/6 "2022-11-15T12:51:12Z")

</div>

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.

> [@ROV plotting on nautical chart, and ship + ROV on same chartplotting](https://discuss.bluerobotics.com/t/rov-plotting-on-nautical-chart-and-ship-rov-on-same-chartplotting/3746):
>
> I have finally found a way to use nautical charts for plotting ROV position. Thanks to OpenCPN Håkan! Ship is showed on same chart, so moving ship after ROV is now easier. Same info can be sent to plotter at helm. Info like distance to ROV is possible Solution: -OpenCPN software with charts. -Underwater GPS to have position of ROV into PC. -Basic GPS (and headíng sensor) to position ship as usual, via serial port or UDP etc Trick to get ROV position is to use NMEA string $RATLL via UDP …

---

<div class="post-metadata">

**Author:** ![ScottM](https://avatars.discourse-cdn.com/v4/letter/s/65b543/32.png) [@ScottM](https://discuss.bluerobotics.com/u/ScottM)\
**Post date:** [November 16, 2022, 6:57pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/7 "2022-11-16T18:57:14Z")

</div>

> [@williangalvani](#):
>
> I opened a PR to backport it to stable Here:

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?

---

<div class="post-metadata">

**Author:** ![EliotBR](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/eliotbr/32/6937_2.png) [@EliotBR](https://discuss.bluerobotics.com/u/EliotBR)\
**Post date:** [November 17, 2022, 10:49am UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/8 "2022-11-17T10:49:12Z")

</div>

> [@ScottM](#):
>
> Is there an executable I can install?

You should be able to install [this one](https://github.com/mavlink/qgroundcontrol/actions/runs/3480992454) (or the one with the same name for your operating system), but otherwise you can wait for the next stable release 🙂

---

<div class="post-metadata">

**Author:** ![ScottM](https://avatars.discourse-cdn.com/v4/letter/s/65b543/32.png) [@ScottM](https://discuss.bluerobotics.com/u/ScottM)\
**Post date:** [November 17, 2022, 4:27pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/9 "2022-11-17T16:27:21Z")

</div>

Eliot- when I follow that link I see this:

![image](https://us1.discourse-cdn.com/flex019/uploads/bluerobotics/original/2X/2/2d2d9b080470c5f27c1a84bcf8b8390a4a03ac7d.png)

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

---

<div class="post-metadata">

**Author:** ![williangalvani](https://avatars.discourse-cdn.com/v4/letter/w/6f9a4e/32.png) [@williangalvani](https://discuss.bluerobotics.com/u/williangalvani)\
**Post date:** [November 17, 2022, 7:00pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/10 "2022-11-17T19:00:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![clyde](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/clyde/32/8563_2.png) [@clyde](https://discuss.bluerobotics.com/u/clyde)\
**Post date:** [September 3, 2024, 3:31pm UTC](https://discuss.bluerobotics.com/t/displaying-boat-and-rov-positions/13190/11 "2024-09-03T15:31:30Z")

</div>

This thread comes up in Google searches, so I’ll add this info here:

The external GPS fix was released in QGC 4.2.5, and presumably all later releases through 4.4.1.

> **[Releases · mavlink/qgroundcontrol](https://github.com/mavlink/qgroundcontrol/releases)**
>
> Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows) - mavlink/qgroundcontrol
