Home        Store        Docs        Blog

Compass and position jumping around

during the last dive, the compass of our BlueROV2 was jumping around, I first thought it is because of the motors, but it also does it when disarmed, see this video: https://youtu.be/H4nT0YOikDk (looks like landing on the moon)

The GPS position was also jumping around between Nigeria and Switzerland (but declination should be about the same, +2 in Switzerland and -1 in Nigeria). The real location is Switzerland:

The estimated southern coordinates of the red line are (6°22’N, 6°19’E) and northern coordinates are (46°22’N, 6°19’E).
Seeing this, could it be that sometimes the “4” of 46°22’ is not taken into account ?

I’m feeding the GPS position using UDP on port 27000 every 500ms (USBL underwater GPS). The NMEA coordinates look ok, I’m almost sure they were not jumping around (they are displayed on the terminal at the same time as they are sent on UDP).

The ROV was only usable in manual mode as stabilize and depth hold were following the compass.

I guess the sensors need calibration (level seems a bit off), I’m not sure I did a calibration after switching to an aluminum tube. Is there something else I can do ? What could be the source of the problem ?

Thanks for your help !

Strange. Just out of curiosity. Are you operating in shallow water with flat sandy / rock seabed?
Just thinking about noice here. Reducing ping frequency to 0.5Hz or 1Hz could help. But since you are jumping across continents that souns unlikely too.

Hi @Benji, you should start simple. Estabilsh proper operation with the stock sensors before using your usbl gps. The problem is almost certainly caused by some error in processing the gps position. (what error or at what part of the system I’m not sure).

Please disable your usbl, perform the compass/accelerometer calibration, and verify the compass, stabilize and depth hold modes work like they should. Then, you can try with your usbl and we can debug that after we know everything else is working OK.

If you can send some log of the usbl output, that will be good too to make sure it is in the correct format and units (some manufacturers do not strictly adhere to the NMEA specification).

Thanks for the wise words @jwalser, sometimes we forget the basics… I’ll bring it back to work without USBL first.

I only have a screenshot of the USBL terminal output, here it is :

Do you spot something strange ? Maybe too many decimals ?
I didn’t see any major change when it was jumping continents, always 46°N and 6°E.

These are the Python lines that generate the output:

msg = pynmea2.GGA('GP', 'GGA', ( datetime.datetime.utcnow().strftime("%H%M%S"), str(lat) , 'N', str(lon), 'E', '1', '08', '1.5', '0', 'M', '0', 'M', '', '0000'))
rov_socket.sendto( bytes( str(msg) + '\r\n' , "ascii"), (ROV_IP, ROV_PORT) )

@SDI, the ROV was about 40m deep, so I guess it is not considered shallow water (or is it ?). A ping was sent every 3 seconds but the position is sent to the ROV at 2Hz. I’ll keep this in mind for when it’ll stop jumping continents. I’ll also check if there is a difference between the ROV being on the bottom or in the middle of the depth (maybe some reflections on the bottom blur the acoustic signal?). Thanks for the idea.

Hello @Benji

Can you explain more about this? Are you using your own program to work with your usbl? Can you share the whole program?

The GGA strings look fine in your post.

My recommendation as you continue to troubleshoot is to check the output of nmea-receiver.py on the ROV. You can do that by visiting, click ‘Open Terminal’, and enter the command screen -r nmearx.

yes I wrote a Python program as the software supplied with the USBL was quite buggy. It is located here: USBL Python topic. I saw that Blueprint Subsea now have a new software (PinPoint), it looks of better quality than the previous one (NavPoint), so I’ll give it a try on the lake before continuing with this Python script.

I calibrated the sensors and went for a test dive yesterday, it seems to work well without and with the USBL. The compass was stable. The conditions were very poor for the USBL (lying on the bottom near the shore) and depth was only 1-2m but it somewhat worked (some random 50m jumps, no jumps to Africa).
My attempt at drawing a square on the map:

I’ll check the output of nmea-receiver.py during the next dive, thanks for the hint.

I guess for now the ROV is ok and I’ll have to improve the USBL side, thanks for your help !