admin 管理员组

文章数量: 887021

VINS

目录

  • 1 滤波问题中的IMU积分
  • 2 IMU预积分引出
  • 3 离散时间的预积分
  • 4 观测的置信度问题(协方差)
  • 5 非常感谢您的阅读!

接 上篇。

1 滤波问题中的IMU积分

我们知道上式中的IMU积分分别表示位移的变化量、速度的变化量和旋转的变化量在滤波问题中,用已知的上一帧帧的状态加上对IMU测量的积分量可以预测当前帧的状态,这就是滤波器中的预测部份,而更新通常是通过最小化重投影误差来完成。在非线性优化中,会同时优化好几帧的位姿状态,此时再用IMU积分来进行优化就不是很好了。为什么呢?

滤波只进行相邻帧的一次预测和更新,而非线性优化是相当于在优化过程中同时调整好几帧的状态量,使其能在调整的位姿下重投影误差最小。如果帧间是用积分联系起来的话,某帧姿态调整时,其后的所有帧的位姿都要通过积分重新算一遍。如果大规模优化的话,显然计算量极大。

对于优化问题,采用IMU预积分技术可以大大降低计算工作量。

2 IMU预积分引出

关于预积分的论文在这儿,高翔博士讲预积分的视频在这儿。

预积分的计算也很巧妙,只需要在IMU积分的等式两边左乘一个由世界系到IMU系的旋转矩阵即可。

其中, α \alpha α、 β \beta β、 γ \gamma γ就是IMU的预积分量。具体形式如下:

可以看到预积分中的参数与每一图像帧对应的IMU位姿调整都没有关系,无论相邻两图像帧的位姿如何调整,预积分总像一根弹簧一样将两帧的相对位姿限制在合理范围内。

IMU预积分只与IMU测量值有关,其实IMU预积分就是将相邻两图像帧之间的IMU数据积分起来,以此作为约束来限制相邻图像帧的位姿调整。

其实IMU积分和IMU预积分都可以当作相邻图像帧之间的约束,区别在于,IMU积分公式中包含了IMU在世界坐标系下的位姿,这就导致了当每次图像帧对应的IMU位姿调整时,预测下一图像帧对应的 IMU位姿只能再次进行积分。而IMU预积分公式中的位姿变化只是相对于上一图像帧对应的IMU位姿的变化量,实际计算时用不到IMU在世界坐标系下的位姿,这样每当IMU位姿调整后,只需在此基础上加上一个预积分量就能得到下一帧位姿。

3 离散时间的预积分

从上面的分析我们知道预积分就是把一段时间的IMU数据积分起来。而我们的SLAM系统是以离散时间的形式向后端发送IMU数据,所以我们要用到IMU运动模型的离散时间积分离散时间 δ \delta δt 的状态变化量如下式计算。

在实际应用中有两种方法计算。

①用第k时刻的测量值来计算两个相邻时刻 k 到 k+1 的位姿,即:

②用两个时刻的测量值 a, ω 的平均值来计算两个相邻时刻 k 到 k+1 的位姿,即:

第①种方法叫做欧拉法,第②种方法叫做中值法

VINS-mono中采用的中值积分的方法来计算IMU的预积分:

4 观测的置信度问题(协方差)

一个 IMU 数据作为测量值的噪声方差我们能够标定。现在,一段时间内多个 IMU 数据积分形成的预积分量的方差呢?也就是说,我们对于一个IMU的单次测量可以这样分析,它只受当前时刻的IMU零偏和高斯白噪声影响,我们可以建立它简单的运动模型。但是IMU预积分是将一段时间内的IMU测量积分起来,这里面包含了多个时刻零偏和白噪声的叠加影响,在整个预积分过程中,误差是怎样传递的呢?这很容易让人想起《王牌对王牌》里经常做的游戏,主持人让所有人戴上放着音乐的耳麦,只把正确的汉字告诉头一个人,叫他向后传递,由于“噪声”影响,传到后面消息已经面目全非,这显然和只传一次的模型不一样,这就要求我们推导预积分的协方差。

关于如何推导预积分的误差传递模型,下次再写吧。

5 非常感谢您的阅读!

本文标签: VINS