Question About Using WaterLinked GPS

Hello again to the wonderful people who are helpful in forums,

I’m mostly looking for confirmation on how the water linked gps should work and be integrated with the ROV since I cannot currently test on mine. I should specify that we have the explorer’s kit with the U1 locator.

Once we get the water linked gps thing on the same network as our ROV, is getting the sub to use the location data from it as simple as setting the correct IP and port from the companion web interface?

I read the guide for setting it up; however, it jumps straight to the thing working seamlessly with QGC and the sub once the network stuff is done, so I wanted some clarification that this was all I had to do.

Thanks for any help!

As far as software setup, you just need to set up the networking. Once, that is right, the companion software will automatically detect the waterlinked master on the network and start communicating with it, and your location should just pop up in qgc.

awesome, thanks for the confirmation!

Additionally, I was wondering how this system handles disconnection from the locator. As in, how will the sub handle not being able to detect the U1 locator (out of range, dies, etc.)?

What I would like to do is make it so that if the WaterLinked GPS loses the locator, the sub will switch to start using nmea data passed to it over UDP port 27000.

My current understanding is that if it is passed in nmea data over UDP and the underwater gps system, it will attempt to use both and QGC would simply display whichever one was updated most recently.

As such, I’m thinking that I could have both positioning systems running (WaterLinked system and sending nmea through UDP), but modify underwater-gps.py such that it blocks the UDP port while it is receiving good data from the locator.

I would appreciate if someone could point out any errors or suggest any improvements in this plan

@jwalser

Is there any indication for when the ROV is using the location from the WaterLinked system?

I’m just looking for something I can use to discern if the ROV is trying to use the position from the WaterLinked system in the case that it cannot find the U1-Locator (and thus loses the GPS position of the ROV) so that I can switch to an alternate positioning system

In QGC, an ROV icon will appear on the map, and gps coordinates will be displayed if you have them selected in the telemetry window.

Hmm, well I had meant to programatically detect if it was getting location from WaterLinked system.

Are there any parameters that would indicate this or mavlink messages that would be sent if the ROV suddenly stopped receiving inputs from the WaterLinked system?

As I think I stated in another post, the goal is to automatically switch to using an alternate system if the WaterLinked system fails

From the Underwater GPS side it is detected.
The connection with the Locator-U1 is monitored by the Underwater GPS and if it is lost (out of range, out of water) you will get a warning in the Underwater GPS GUI and no position. (Technically the position (/api/v1/position/global) will return a HTTP 500 error and a warning will be present in /api/v1/warnings/)

Looks to me like you will probably not get a position in QGC when the Locator is out of range (*).
@jwalser Can probably clarify if there is a way to detect using mavlink.

(*) referring to this code: companion/underwater-gps.py at master · bluerobotics/companion · GitHub)

1 Like

Thanks, this is about where i’ve been looking myself!

So now I just need to somehow get this info out of that script and modify the restserver module to indicate if the waterlinked system is being used

@JaylTheGreat you can look at GPS_RAW_INThttps://mavlink.io/en/messages/common.html#GPS_RAW_INT and GPS_STATUS to see the GPS status.

It looks like our underwater-gps.py driver in companion does not handle the HTTP 500 error that @wlkh mentioned, and just assumes that the waterlinked position is always valid when the system is present. As a result, I think that you may not be able to detect this circumstance by mavlink, the position information may just remain the same.

I’ve made an issue:

Thanks Jacob, that will be a great improvement to the companion script :+1: