IMU使用方法总结
附赠自动驾驶学习资料和量产经验:链接
1. 积分形式的用法
这种方式通过积分IMU数据的形式,建立IMU与State的关系。
1.1 IMU ODE
具体可参考:
1.2 在滤波算法中的用法
采用这个式子,就可以做EKF的预测了。状态转移矩阵/雅克比的具体形式可以参考这里:
IMU Propagation Derivationsdocs.openvins.com/propagation.html
1.3 在优化算法中的用法
IMU的频率远高于相机/Lidar的帧率,基于优化的系统,如VIO/LIO中,一般将两个(关键)帧之间的IMU做积分,形成与两端state的关系方程。构造这个方程有两种办法。
1.3.1 直接积分法
采用(2)式,对IMU进行直接积分,从上一个关键帧state推演到下一个关键帧。这样,我们可以建立下面的约束。
1.3.2 预积分
预积分开始由Lupton提出,后来由 Forster推广到了manifold上面。李明扬在MSCKF2.0中也有提到相关的思想。最关键的Paper是
上面的与积分假设了IMU bias不变,但是实际优化过程中 IMU bias是会变的。因此需要进行补偿。具体的是采用一阶近似。
这种近似相对于直接积分的方法就有一些精度损失。
预积分的好处是可以避免重复积分。
但是因为有一些近似,比如(7)式,所以理论上精度上不如直接积分。
具体的预积分实现和论文请可以参考:
borglab/gtsamgithub.com/borglab/gtsam/tree/develop/gtsam/navigation
2. 微分形式的用法
我们如果对IMU数据进行积分,就可以得到pose,从而可以建立IMU与state的关系。那么我们反过来想,对state进行微分,一阶微分就可以得到速度、角速度,二阶微分就可以得到加速度,这样也可以建立IMU的角速度、加速度与state的关系。
关键是如何对state进行微分呢?而且state一般是离散分布的。常用的办法是插值,给定一些离散的state,可以通过插值获取任意时刻的pose。比较常用的插值方法是b-spline。如下图,我们可以在一个IMU采样时刻,插值一个state ,由与其相邻的四个state插值而来。
对其进行相对时间的微分,可以建立与IMU的关系,即加速的误差和角速的误差。
具体形式,可以参考文献: