Improving heading measurements from low cost compass module I have heading measurements of two Sensors (BNO055 and HMC6343) and also accurate measurements from better sensors for comparison from a rotating platform. Most of the measurements are with some kind of potentional error source like passing train, large ferromagnetic materials.

The measurements of the BNO055 can't be used at all since he mostly doesn't even react to changes in angle. The measurements of the HMC have some other problems.


Large Offset at the Start that only converges towards the true value after some movement of the sensor (elevation change) i guess sensors needs to calibrate at the start every time
Sometimes small global offsets towards the true value
Larger periodic deviations and noise (esp. near rails)


If you don't want to read the paragrpahs of my endeavors below. My question is basically is it possible to get major improvements with only positional data from one sensor and the reference data and nothing else?

I'm kind of at a loss how i could improve the measurements. I started to learn about Kalman filter and tried a simple kalman filter with a linear model: x+vt+at^2/2 (x being angle etc.). But neither sensors fusion is an option because of useless BNO measurements and also a filter with just HMC measurements with state vectors (x,v) and (x,v,a) don't really improve my measurements. (x,v,a) vector is actually even worse.

I'm kind of at a loss here. I'm trying to understand unscented/extended kalman filter but atm i don't really see the point since its for nonlienar models and i don't know how i could't describe the angular movement differently than with the simple movement equation above.

I also read something about calibrating with neural networks but are not quite sure if it's worth to invest more time into it since my time is limited.

Edit: I added some pictures of the measurements so people who might want to chip in have a better idea. The blue and red lines are not interesting. Green are the accurate measurements. Orange are the measurements of my sensor. A big problem is also that the sensor doesn't measure the right heading at the start if the antenna hasn't changed elevation yet. He seems to need to calibrate for a bit to reach his estimated value.
While 'major' improvements is subjective, you can certainly improve your system more than it is (at least as you have described). Based on your problem description, it sounds as if your measurements may be non linear (you will have to confirm this). If this is the case, then a linear filter, such as the Kalman Filter, won't work well at all. 

From here, you need to determine if these 'large periodic deviations and noise' are normally distributed or not. If they are, then you can try a non-linear filter such as the Unscented Kalman Filter (If the deviations are truly 'large', the unscented filter is preferable to the extended as it is more robust to higher levels of non-linearity). If your noise and 'periodic deviations' are not normally distributed, then you will have to consider non-parametric approaches such as the Particle Filter.

As far as sensor calibration, you could try more advanced techniques, but typically the sensor manufacturer will supply some form of calibration procedure. This procedure is typically recommended unless you are absolutely sure about a different strategy.