With all the motors nearby, I am sure that you ROV folks struggle with far more compass challenges than I do. But since I spent a while on the learning curve trying to figure out how to calibrate my compass & accelerometers, I put it all together in a blog post that someone here might find useful:
http://edwardmallon.wordpress.com/2015/ ... r-arduino/
I tried several applications, and got the best results correcting soft iron distortion with both Varesanos FreeIMU toolkit, and Sailboat Instruments Magneto application. A nice side benefit is that both applications also calibrate accelerometers.
I am currently working my way through the Quaternion Vs Euler angle debate around calculating Heading/yaw. If anyone could point me to a nice Arduino script that uses Quaternions without doing gyroscope sensor fusion, I would be much obliged, as my application is simply tilt sensing, rather than full IMU.