【SLAM】IMU预积分的理解、手把手推导(1/4)

在工程实践中我们常常使用视觉与IMU融合的解决方案,即视觉惯性里程计(VIO)来估计运动,而不是简单地使用视觉里程计(VO)。当使用到IMU时,预积分就是绕不开的一个话题。

由于篇幅设置,IMU预积分分为4篇完成:


本文将就概要设计,即IMU预积分的原理和优势特点,进行详解。


为什么需要IMU

IMU简介

IMU,中文名叫惯性测量单元,英文名:Inertial measurement unit。它可以测量两个东西,加速度 a a a是沿三个轴 a x a_x ax a y a_y ay a z a_z az方向的线加速度,而角速度 w w w就是这三个方向的角速度 w x w_x wx w y w_y wy w z w_z wz

IMU的频率比较高,一般都在 100 H Z 100HZ 100HZ以上。在IMU内部,除了通常的白噪声,还有个特别的量零偏 b i a s bias bias,它是传感器内部机械、温度等各种物理因素产生的传感器内部误差的综合参数。IMU的加速度计和陀螺仪的每个轴都用彼此相互独立的参数建模,每个时刻可实现自身主体加速度 a a a和角速度 w w w的测量,那么对其的观测模型可以如下建模:

假设IMU的加速度和角速度的真实值为 a a a w w w,测量值为 a ~ \tilde{a} a~ w ~ \tilde{w} w~,那么有:

w ~ b = w b + b g + η g \tilde{w}^b=w^b+b^g+\eta^g w~b=wb+bg+ηg

a ~ b = q b w ( a w + g w ) + b a + η a \tilde{a}^b=q_{bw}(a^w+g^w)+b^a+\eta^a a~b=qbw(aw+gw)+ba+ηa

其中:

  • 上下标的 g g g表示gyro,即陀螺仪, b g b^g bg η g \eta^g ηg就是陀螺仪的零偏 b i a s bias bias、陀螺仪的白噪声
  • 上下标的 a a a表示acc,即加速度计, b a b^a ba η a \eta^a ηa就是加速度计的零偏 b i a s bias bias、陀螺仪的白噪声
  • 上下标的 b b b表示body,即IMU坐标系
  • 上下标的 w w w表示world,即世界坐标系
  • q b w q_{bw} qbw表示从世界坐标系到IMU坐标系的转换关系
  • g g g表示重力加速度

需要注意的是:加速度计的测量值是耦合了重力加速度 g g g的,同时它的测量值是相对于IMU坐标系的

从上面的公式可以看出,我们读的数据都不是客观事实,是在客观事实的基础上叠加上传感器的误差,也就是零偏和噪声。

IMU和视觉的互补

在纯视觉的SLAM或者VO中,由于图像的运动模糊、遮挡、快速运动、纯旋转、尺度不确定性的一系列问题,导致仅靠一个摄像头很难完成我们实际场景的应用需求。而IMU直接可以得到运动主体自身的角速度、加速度的测量数据,从而对运动有一个约束,或者说与视觉形成互补,可实现快速运动的定位和主体纯旋转的处理,从而进一步提高SLAM/VIO的可靠性

IMU传感器本身也是有自身缺点的,比如IMU长时间使用就会有非常大的累积误差。但是在短时间内,其相对位移数据又有很高的精度,所以当视觉传感器失效时,融合IMU数据,能够提高定位的精度。IMU虽然可以测得角速度和加速度,但这些量都存在明显的漂移,使得积分两次得到的数据就会存在很大误差。如果将IMU固定不动,其数据也会因为漂移的影响使得积分得到的位姿飘走。但是对于短时间内的快速运动,IMU能够提供相对准确的估计,这又刚好弥补了相机的缺点。相机运动过快时会出现模糊或者两帧之间重叠区域太少无法匹配。

IMU和相机就这样相辅相成,因此现在很多SLAM算法的研究都是融合相机和IMU数据进行位姿估计。

IMU预积分的作用

在基于BA的纯视觉SLAM图优化算法中,各个节点、还有节点之间的边都可以是待优化的量。IMU预积分的初衷,希望将IMU的相对测量信息转换为帧与帧之间约束节点(位姿)的边,从而参与到优化框架中

因此,IMU预积分的立足点就落在相邻两帧之间的IMU积分测量值计算及其动态更新上(IMU的频率很高),获得每周期PVQ(位置、速度和姿态)增量的测量值,对照其他通过非IMU方式获得的PVQ增量的估计值(纯视觉SLAM方案),进而获得PVQ增量的残差。然后以该残差构造代价函数对每个节点的PVQ进行迭代更新和优化

在这个过程中通过对IMU测量噪声协方差的递推,获得了每周期PVQ增量测量值的噪声分布,再通过求协方差的逆的平方根,获得了信息矩阵,对残差中PVQ的比例进行调节,起到平衡权重的作用。

假设相邻两帧为第 i i i j j j帧,那么待优化变量就有: R i \mathbf{R}_{i} Ri p i \mathbf{p}_{i} pi v i \mathbf{v}_{i} vi R j \mathbf{R}_{j} Rj p j \mathbf{p}_{j} pj v j \mathbf{v}_{j} vj δ b i g \delta\mathbf{b}_{i}^{g} δbig δ b i a \delta\mathbf{b}_{i}^{a} δbia。但是IMU预积分对应的残差主要是PVQ三个增量,因此信息矩阵要调节的比例也主要针对残差中的PVQ三项,而非全部待优化变量。


IMU预积分理论

IMU预积分的优化方法

优化的核心是构造代价函数,而代价函数的核心是构造残差,IMU预积分给出了具体的残差定义,即相邻两帧之间PVQ增量的估计值和测量值之差

残 差 i j = P V Q 增量估计 值 i j − P V Q 增量测量 值 i j 残差_{ij}=PVQ增量估计值_{ij}-PVQ增量测量值_{ij} ij=PVQ增量估计ijPVQ增量测量ij

其中:PVQ增量估计值通常需要通过非IMU的方式获得,例如纯视觉SLAM方案中帧与帧中关键点的匹配结算,这也是IMU预积分与外部的唯一界面,或者说是IMU预积分对外部的唯一依赖,只要有了这个估计值,IMU预积分就可以独立运作了。PVQ增量测量值就来自IMU预积分

在图优化的过程中,要进行局部甚至全局的反复优化,随着优化的推进,IMU的测量零偏(bias)也会变化,此时残差中的PVQ增量测量值就需要重新计算,IMU预积分就提供了一个近似的测量值修正方法,免去了积分的重新计算,是预积分降低计算量的关键

这个残差公式可以直接添加到诸如Ceres的优化框架中,用以实现一个代价函数,通过多轮迭代实现对每个节点精确位姿的解算。

因此IMU预积分的主线就是:求解相邻两帧之间PVQ增量的测量值,试图通过在既有IMU预积分测量值上添加一个近似修正量的方式来避免重新积分

IMU预积分测量值的速算

前面提到,之所以PVQ增量测量值需要重新积分,关键在于角速度和加速度的测量零偏(bias)在优化过程中会发生变化。

为了避免重新积分,IMU预积分的解决方案是假设:

P V Q 增量测量值(新) = P V Q 增量测量值(旧) + P V Q 增量测量值更新量 PVQ增量测量值(新)=PVQ增量测量值(旧)+PVQ增量测量值更新量 PVQ增量测量值(新)=PVQ增量测量值(旧)+PVQ增量测量值更新量

那么,只要获得PVQ增量测量值更新量就可以避免重新积分了

既然是由于bias引起的,那么就把PVQ增量测量值当做bias的函数,求该函数对bias的导数,那么bias更新量与函数导数的乘积就是bias发生变化后PVQ测量值的更新量(近似值)。这样一来每当bias发生变化就能够通过线性运算直接获得新的PVQ增量测量值,而不需要重新积分。

P V Q 增量测量值(新) = P V Q 增量测量值(旧) + ∂ P V C 增量测量值 ∂ 测量零偏 b i a s × 零偏更新量 PVQ增量测量值(新)=PVQ增量测量值(旧)+\frac{\partial PVC增量测量值}{\partial 测量零偏bias}× 零偏更新量 PVQ增量测量值(新)=PVQ增量测量值(旧)+测量零偏biasPVC增量测量值×零偏更新量

以上就是IMU预积分避免重新积分,降低运算量的关键。

IMU预积分优化的残差比例调节

IMU预积分实现了测量噪声(即协方差)的递推计算,并将协方差转换成信息矩阵,应用于优化过程,调节残差的比例,起到平衡权重的作用。

回忆卡尔曼滤波,也有一个协方差矩阵 P P P,迭代更新,在更新步骤, P P P被用于计算增益 K K K,增益 K K K实际上是估计值的不确定性在总的系统不确定性中所占的比值,然后增益 K K K被用于调节残差的比例。

在IMU预积分中协方差的作用和卡尔曼滤波器中协方差 P P P的作用完全相同,也是需要迭代更新,也是用于调节残差的比例。在IMU预积分中,首先将测量噪声从PVQ增量测量值中分离出来,证明其服从高斯分布,然后推导出协方差的递推公式。

所谓信息矩阵其实就是用于调节残差比例的权重,首先要取协方差矩阵的逆矩阵,相当于取了协方差的倒数,方差越大权重越小,反之权重越大,然后再将逆矩阵转成信息矩阵。

重力加速度和绝对姿态求解

传统的SLAM算法很少使用加速度来计算速度和位置,原因是加速度计的测量值是包含反向重力的比力,而不是纯加速度。这使得一旦姿态不准确,重力投影误差将对速度和位置积分产生严重影响。

IMU预积分直接使用加速度的测量值进行速度和位置的估计,没有使用诸如编码器、毫米波雷达等测速装置。那么IMU预积分是如何解算出重力加速的方向,从而获得绝对位姿的呢?

IMU预积分仍然是通过优化的方法获得重力加速度的方向的。PVQ增量测量值是通过IMU预积分获得的测量值,其中耦合了重力加速度,特别是P和V,并不是通常意义上的位移和速度,而是根据IMU加速度计的测量值计算出来的所谓的位移和速度,耦合了重力加速度之后在垂直方向上位移和速度会产生巨大的分量,P和V的这个垂直分量在真实世界是不存在的,存在的唯一目的是协助找出重力加速度的真正方向

PVQ增量估计值是通过非IMU方式获得的,原本是没有重力加速度分量在其中的,P和V在垂直方向也就没有对应的分量,那么我们根据对重力加速度方向的估计,添加一个重力加速度的分量进去(即待求解的重力加速度及其方向),使P和V的估计值在垂直方向获得对应的分量。再通过对残差的迭代优化,使估计值和测量值相匹配,就能够获得重力加速度的真实方向


注意:如果上面的预积分理论没怎么看懂,可以先结合后续的的具体推导过程和最后的总结部分。预积分部分的理论比较复杂,想要一次阅读就能够完全理解,还是很难很难。


相关阅读

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值