High Accuracy Aftermarket IMU/Gyro

Another point of relevance - the offset you’re seeing may simply be a visualisation of the compass declination, which is typically determined by the world magnetic model built into the autopilot.

How and where this is represented isn’t well documented at the moment, so hopefully @williangalvani can confirm whether the EKF represents orientations relative to true north (versus potentially magnetic north for your external heading source). You could also temporarily turn off autodeclination to see whether this is the source of the discrepancy.

I’m unsure, although it is at least possible to deprioritise the gyroscope values by increasing its specified noise rate in the EKF, which may be worth trying.

The autopilot estimates its position by blending the sensor values and inputs it has access to / is configured to use. The visual odometry API that’s used by the Water Linked DVL BlueOS Extension provides translational velocities, which are then blended with other sensors in the autopilot’s EKF to form position estimates via dead reckoning, relative to the initial position specified in the Extension (or updated occasionally using a GPS module or similar).

The DVL is also capable of performing its own dead reckoning estimates, using its internal sensors, but that is not how it is currently integrated with BlueOS, and it’s unclear whether that would improve performance or just make the integration more complicated.

Dead reckoning integrates rate measurements into position estimates, so any errors in those rates get included in the integration, and any bias in the error becomes an integrated bias in the position (i.e. there is a drift between the actual and estimated positions, which increases over time).

Minimising that drift requires accurate, high frequency sensor values, with minimal latency, but there are often tradeoffs between those factors that make them difficult to achieve with any given sensor, so it can be beneficial to combine the strengths of different sensor types.

As an example, even with perfectly accurate velocity and compass measurements, the latency to communicate them to the autopilot and (more significantly) the time in between those measurements both contribute to uncertainty in the position. That can be somewhat mitigated by having high frequency inertial measurements in that time (e.g. from an accelerometer and/or gyroscope), but they have their own associated inaccuracies and imprecision, so there’s no perfect solution. That said, some information (even if somewhat noisy) in the time between more accurate and less derivative measurements from other sources is typically more accurate than just assuming linear or step changes.

Was this due to the ESCs/motors (which can be compensated for), or from sources of electromagnetic noise in the environment (which would require a different type of sensor to avoid)?

3 Likes