问题提出
在之前ESKF或者EKF算法中采用四元数对姿态进行估计时,由于采用的是六轴传感器,Yaw轴的数据仅来源于Kalman的预测过程。在最后更新状态一步由于姿态融合的非线性,在加速度计数据通过线性融合进入四元数时会出现Yaw轴的额外偏移,使得最后积分结果偏离了角速度计积分出的Yaw轴结果。具体表现为当加速度计与角速度计数据较为不匹配时(例如受到冲击),Yaw会出现较大的偏移。
为了解决非线性带来的影响,除了消除线性更新中对于Yaw轴旋转的分量外,还需要进一步使用迭代Kalman滤波器(Iterated Extended Kalman Filter)的方法改进原有算法。
原理
在EKF算法更新环节中中,我们在工作点附近用线性过程
如果假设Z的分布符合
取其导数为0的点作为结果,带入后验方差的计算中可推导出与传统Kalman滤波器一样的方差更新公式。而对于状态值的更新则采用高斯-牛顿法求解,若令
根据高斯-牛顿法的迭代过程,状态值的迭代式为
代入
另外如果结合之前的误差状态Kalman滤波器其迭代过程依然类似,最主要的区别仅在于