BlueROV Compass Inconsistent and Failing Calibration

I noticed weird behavior with the compass on my BlueROV. It would read East, for example, when facing one direction. Then upon moving and returning to the same heading, read a completely different direction. The compass reading would also drift, especially when moved in a clockwise rotation. For example, I would move it to face 50 degrees and the compass would continue drifting past 50 to like 80. The magnitude of the inaccuracies varies widely at different directions and are not consistent even for the same direction measured twice. Upon calibrating the compass, it received ratings in the red zone. I checked for magnetic interference, and there is none. However, I am looking for possible alternatives to solve this without getting a new Navigator Flight Controller. The main objective is to be able to track the vessel’s heading in a live manner, so alternatives such as using the IMU would be welcomed as well. I attached a summary of some tests I ran of the ROV’s compass against an iPhone’s readings.

image

Hi @viviand -
What you are describing sounds like the results of a poor calibration. I would recommend repeating the calibration process, ideally far away from any large metal objects or running engines. You may also want to verify that no high-current wires are located near the Navigator autopilot. The compass calibration should have at least one sensor “in the green” in order to function well.

The Compass is one sensor of the three that make up the “IMU” - the accelerometer tells the vehicle which way is down, the gyroscope captures the rate of angular acceleration, used to correct drift in the magnetometer output (the compass.) Ensuring that both the accelerometer and compass are well calibrated should correct your issue!

I recalibrated the accelerometer and compass and am still getting the same results. The internal compass was set to priority 2 but was giving better performance readings (in the yellow) so I moved it up to priority 1. The external compass is giving ratings in the red, so I moved it to priority 2. I don’t know where to go from here. I tried modifying parameters and power cycling the battery which weren’t helping.

Hi @viviand
Can you describe the environment you’re performing the calibration in? The battery is installed in the vehicle during calibration- have you modified the system in any way, such as adding payloads or modifying the internal wiring?

Do you know what revision ROV you have- navigator or pixhawk? Are you running BlueOS 1.2.6 and ArduSub 4.1.2?