I'm having the same problem, have not figured out this yet. The calibration process appears to do nothing. The same goes for depth calibration also. Tried to align compass north and click calibrate, but nothing happened.
One thing that did work though (to a certain extend), is to edit MPU9150.cpp
To the end of the script the following lines are written:
navdata::HDGD = MPU.m_fusedEulerPose[VEC3_Z] * RAD_TO_DEGREE + 180; //need to confirm
navdata::PITC = MPU.m_fusedEulerPose[VEC3_X] * RAD_TO_DEGREE;
navdata::ROLL = MPU.m_fusedEulerPose[VEC3_Y] * RAD_TO_DEGREE;
navdata::YAW = MPU.m_fusedEulerPose[VEC3_Z] * RAD_TO_DEGREE;
I changed the HDGD value according to my compass offset. Whilst pointing it towards North, I read a value of -126 degrees. I then changed the "RAD_TO_DEGREE + 180" to "+126"
Saved the file, and reloaded the Arduino from cockpit. Afterwards the compass value came up with a heading value of 0 +/-2 degrees. This is in the heading part of the telemetry data shown on rights side of ROVCockpit. The compass dial that is part of the HUD did not show correct unfortunately. This still showed East as heading. Even stranger was when I then rotated the ROV towards East, verified by compass, the ROV heading showed West! Still on telemetry data, the HUD compass is far out.
Definitively a puzzle that needs solving!
As far as the other vectors like tilt and roll, I would assume applying a similar offset value would work there as well. Have not tried to change this as the values are correct in my set up.
The best would of course be if the calibration buttons in the ROV cockpit worked, but still this only handles 2 of the parameters, the rest still needs to be changed elsewhere.