We performed a test where we ran our BlueROV at the surface in a relatively shallow lake. The vehicle has an onboard RTK GPS for position logging when at the surface. The purpose of this test was to compare the accuracy of the DVL with the GPS (which we know to be good to ~ 1cm).
I had a rather strange result where it seems like an initial discrepancy in heading caused the position estimated by the DVL to diverge greatly from that recorded with the GPS.
In the plot posted here the vehicle position is initialized by the GPS (this is at position (0,0) where the two overlap). From watching the vehicle we could tell that the position reported by the DVL was getting less and less accurate, while the GPS was accurately representing where it was.
I tried changing the yaw source in EK3_SRC between external_nav (the DVL) and compass (which I presume to be the compass on the BlueROV flight computer), but this yielded the same results.
Any ideas what could have caused this, or what we should try next? We want to use the DVL underwater and periodically surface to zero out any drift via the GPS.
Magnetic compasses are notoriously problematic. Careful calibration is absolutely mandatory, yet still insufficient for providing heading accurate enough to use a DVL for long term position accuracy.
Just looking at your plots though it does look like there is a bias error. You could probably do better by adjusting the declination (i.e. true vs. magnetic north).
Hi! there was a lot of work put into improving heading performance on the latest ArduSub release (4.5.0-beta3, which should be the new stable tomorrow).
I have a couple of recommendations:
Use the latest stable BlueOS
Use ArduSub 4.5.0
make sure you calibrate your Gyros in BlueOS and that all axis readings are under 10. Bonus points for calibrating after the rov warms up for a couple of minutes, as the gyro has thermal drift.
ArduSub 4.5.0 has two new parameters used as a “backup location” for vehicle with no GPS (ORIGIN_LAT, ORIGIN_LON), those are used to get an estimative of the local magnetic field in order to do a 3d magnetic fusion isntead of the regular 2D. I recommend setting those.
Make sure the compasses show “Fully calibrated” in the BlueOS compass page
Leave COMPASS_AUTODEC enabled
If this doesn’t help, then I agree with @ljlukis that you could disable Auto Declination and used it to correct the offset
It is a common problem due to the magnetic declination of each place. We should all be very cautious and calibrate these magnetic sensors such as inclinometers, nagnetometers and compasses prior to immersion regardless of the distance to the previous mission. They are sensitive and easily disturbable