This is not related to the motion speed, as you said even slow wave will bring magnetic value changes.
This means the magnetic sensor is close to a distortion source.
What is the material of the boat, do you have any metal material on boat or like moto etc.
Or where you put this boat? any magnetic distortion source from water to cause magnetic value changes?
We have some soft metal (Aluminum) near the IMU but no hard metal.
In the previuous plot we are moving the boat in order to lose the calibration so the change in the magnetic field is manly due to that.
As you could see in the first part of the graph, where we are still, the only change in the magnetic field is some spike noise maybe due to the electronic noise.
Attached is the updated graph with also the gyro data. (for reference the x axis now is in seconds)
From the plotter, i still can see some big changes in magnetic area.
The calibration status loss is not only related how fast the magnetic field change also how big the magnetic data read out changes.
The better way is put sensor in a better place without too much hard iron as well as soft iron.
If it is not possible, then a recalibration is always needed to go back to calibration level 3.
After sensor is fully calibrated, during the robot moving, some big magnetic distortion close to sensor, the sensor will recognize it. In this case, the calibration level will be kept for short distortion time and heading value will be kept.
If the distortion time durtation is quite long, then the magnetic calibration level will drop to 0.
In this case, the heading value trying to keep the original value when magnetic data still fully calibated for a while. If magnetic data will not be calibrated to level 3 any more, then the heading value will be also affected.
The magnetic calibration module is running all the time in background, normally you don't need to stop robot to do fully calibration again. it can be calibrated along with robot movements if the movement is fulfill the calibration motion requirement.