NOTE / 2020/8/2
IMU 姿态估计 Quaternion kinematics for ESKF[part 4]
SLAM技术笔记SLAMVIO传感器融合
使用《Quaterniond Kinematic for ESKF》的方法,实现一个IMU姿态估计。用陀螺仪的做Propagation,加速度计做Update。
State
我们的状态里面是IMU坐标系到ENU坐标系的姿态和陀螺仪的bias。
χ=[IGRbg]
Propagation
把书中的IMU kinematic搬出来:
IGR˙bg˙=IGR[ωm−bg−nw]×=0+ng
定义旋转误差为:
IGR=IGR^Exp(δθ)
我们的error-state kinematic就是
δθ˙δbg˙=−[ωm−bg]×δθ−δbg−nw=ng
用欧拉积分
δθδbg←Exp[(ωm−bg)Δt]Tδθ−δbgΔt+θi←δbg+ωi
写成矩阵形式:
[δθδbg]=Fx[Exp[(ωm−bg)Δt]T0−IΔtI][δθδbg]+Fi[I00I][θiωi]
协方差Propagation就是
Σk+1=FxΣkFxT+FiQFiT
Update
如果IMU做匀速运动,加速度计测量的就是重力(方向)。当然实际上,并不可能做匀速运动,可以当做噪声处理。我们就可以建立一个量测方程。
a=−IGRTg+na
其中,
g=[00−1]T
为重力在ENU系下的方向。
雅克比为:
H=[[IGRTg]×0]
初始化
与上一篇文章相似https://zhuanlan.zhihu.com/p/152662055,采用加速度初始化roll pitch,yaw设置为0.
实现
https://github.com/ydsf16/IMUOrientationEstimator
参考资料
[1] Sola, Joan. Quaternion kinematics for the error-state Kalman lter[J]. 2017.