Last week I returned to the to INS just to verify one idea.
The algorithm presented in the INS section works with (at least) two nonparallel vectors (acceleration/velocity and magnetometer).
This means that
- Both vectors have to be known in ENU space
- Resulting estimation error is divided between them
But for the magnetometer it means you have to know its declination and inclination during flight or estimate it prior flight.
For declination and inclination earth magnetic field calculation is needed. It requires position and date which in turn require GPS data.
Estimation prior filght (when the object is steady) is one-time estimation and is hard to re-estimate during flight. This is more than enough for small UAV, but for some long range UAV this could be a problem.
But actually there is a solution. Magnetometer can be turned into “2D” mode. Inclination is ignored and transformed to 0. 3-axis magnetometer measurement is still needed but now the INS can primarily align to acceleration/velocity vector and correct for heading. This also eliminates roll and pitch errors due to magnetic field distortions/anomalies. On the other hand it reduces information of one axis of one vector which influences absolute accuracy.
Expected magnetic field in ENU will also contain only East and North component, Up compoment will be set to 0. Now magnetic field errors corrupt mostly heading. Inclination can freely change during flight.
And there is another possible improvement :).
As the estimated attitude error (stored in the error quaternion) does not have to be transferred to the estimated attitude (represented by a quaternion too) every step, it actually can be thrown away when for example a longer ladting acceleration of UAV is detected. This would further improve accuracy in IMU mode.