IMU预积分

IMU预积分主要干了2件事:主要出现在vins_estimator/src/factor/integration_base.h中。

1).IMU预积分获得α、β、γ值

2).误差传递函数的获取。

一.连续形式

IMU获取的是线加速度角速度,通过对IMU测量量的积分操作,能够获得机器人的位姿信息。IMU测量值包括加速度计得到的线加速度陀螺仪得到的角速度。
在这里插入图片描述

式子一左侧上标^为IMU线加速度测量值,右侧没有上标^代表的是线加速度真实值,ba为加速度偏置,测得的线加速度是重力加速度和物体加速度的合矢量,na为高斯噪声。

式子二左侧为陀螺仪角度测量值,右侧为角度真实值,bw为角度偏置,nw为高斯噪声。

在这里插入图片描述

 加速度计偏置和陀螺仪偏置被定义为为随机游走并随着时间变化的,它的导数满足高斯分布。

对于图像帧k和k+1,体坐标系对应为bk和bk+1,位置、速度和方向状态值PVQ可以根据[tk,tk+1]时间间隔内的IMU测量值,在世界坐标系下进行传递的。

注:其中线加速度要转化成世界坐标系下才能进行积分

其中四元数叉乘形式如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 可得

可以看出,IMU的状态传播需要帧bk的旋转、位置和速度,当这些初始状态发生变化时,需要重新计算。特别是在基于优化的算法中,每次我们调整姿态时,都需要在它们之间重新传播IMU测量值。为了避免重复传播,我们采用了预积分算法。
将参照系由世界参照系改为局部参照系bk后,我们只能对线加速度 a^和角速度 ω^相关部分预积分如下:

其中: 

以上都是连续时间的预积分,对于离散时间实现,可以采用欧拉积分中点积分RK4积分等不同的数值积分方法。为了便于理解,这里选择欧拉积分来演示这个过程(我们在实现代码中使用中点积分)。

4.2 误差传递矩阵--主要有2个目的

第一个是在求α、β、γ的值的时候给不同bias提供相应的Jacobian;

第二个目的是给后端优化部分中IMU部分提供信息矩阵。

实际上讲,IMU在每一个时刻的测量都是有误差的,而且这个误差是满足高斯分布的。在IMU预积分的递推过程中,由于下一时刻的值是由上一时刻的值再加上当前的测量值获得的,所以每一时刻的PVQ的计算值所对应的方差也是在不断累积。因此,求出对应的误差传递函数十分重要。
所以,根据误差传递函数的定义,我们可以建立一个下面这个形式的误差传递线性模型,它描述了下一时刻和当前时刻误差的关系:
在这里插入图片描述

 d(zk+1)和d(zk)分别是下一时刻的误差和上一时刻的误差,上面这个等式对应的向量/矩阵表达式如下式所示:

在这里插入图片描述

 Jacobian的迭代公式为:在这里插入图片描述

 这个J有了之后,带入4.1.1最后那个公式中去,就能得到真正的α、β、γ。注意的是,VINS里面出现过多次J的计算,一个是在这,另三个是在后端优化里出现,注意不要混淆。

协方差迭代公式为: 

在这里插入图片描述

这个协方差矩阵,可以用于计算后端优化中IMU部分的信息矩阵

噪声项的对角协方差矩阵Q为:

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值