@
一、VIO(Visual-Inertial Odometry)概述
VIO即以视觉(相机)与 IMU 融合实现里程计的方法
IMU(Inertial Measurement Unit)
,惯性测量单元.
- 典型 6 轴 IMU 以较高频率(≥ 100Hz)返回被测量物体的角速度
与加速度 - 受自身温度、零偏、振动等因素干扰,积分得到的平移和旋转容
易漂移
Visual Odometry 视觉里程计
- 以图像形式记录数据,频率较低(15 − 60Hz 居多)
- 通过图像特征点或像素推断相机运动`
1.1 IMU概述
六自由度 IMU 本身由一个陀螺仪和一个加速度计组成,分别测量自身的角速度和加速度。
手机等电子产品多使用价格低廉的 MEMS IMU(如 MPU 6050),自动驾驶类则多使用几万元的 IMU(如 Apollo 中使用的 Novatel SPAN-IGM-A1)
1.2 IMU 与视觉定位方案优势与劣势对比:
整体上,视觉和 IMU 定位方案存在一定互补性质:
• IMU 适合计算短时间、快速的运动;
• 视觉适合计算长时间、慢速的运动。
同时,可利用视觉定位信息来估计 IMU 的零偏,减少 IMU 由零偏导致的发散和累积误差;反之, IMU 可以为视觉提供快速运动时的定位。
1.3 IMU 数据可与多种定位方案融合
• 自动驾驶中通常用 IMU+GPS/差分 GPS/RTK 的融合定位方案,形成 GNSS-INS 组合导航系统,达到厘米组定位精度;
• 头戴式 AR/VR 头盔则多使用视觉 +IMU 的 VIO 定位系统,形成高帧率定位方案
1.3.1 松耦合
将 IMU 定位与视觉/GNSS 的位姿直接进行融合,融合过程对二者本身不产生影响,作为后处理方式输出。典型方案为卡尔曼滤波器。
1.3.2 紧耦合
融合过程本身会影响视觉和 IMU 中的参数(如 IMU 的零偏和视觉的尺度)。典型方案为 MSCKF 和非线性优化。
`为什么要使用紧耦合`:
• 单纯凭(单目)视觉或 IMU 都不具备估计 Pose 的能力:视觉存
在尺度不确定性、 IMU 存在零偏导致漂移;
• 松耦合中,视觉内部 BA 没有 IMU 的信息,在整体层面来看不是
最优的。
• 紧耦合可以一次性建模所有的运动和测量信息,更容易达到最优。
二、预备知识
2.1 数学符号约定
- 普通变量: (a, b, c)
- 矩阵和向量:A,B, v
- 集合:(mathbb{R}, mathbb{Z})
- 特殊集合: (mathcal{F}, mathcal{G})
- 希腊字母和向量: (alpha)
- 李代数: (mathfrak{s o}(3), mathfrak{s e}(3))
2.2 三维刚体运动
2.3 四元数
四元数相关知识可以参考资料:https://download.csdn.net/download/qq_34213260/12504624
2.3.1 四元数和角轴的转换关系
2.3.2 四元数求导
2.3.3 四元数更新
当我们用计算出来的 角速度ω 对某旋转更新时
2.4 李代数
2.4.1 李群李代数的关系
由于(phi)是三维向量, 我们可以定义它的模长和它的方向,分别记作 ( heta) 和 (a,) 于是有 (phi= heta a_{0}) 这里 (a) 是一个长度为 1 的方向向量,即 || (a |=1_{circ}) 。因此可以推导出
(phi=ln (oldsymbol{R})^{vee}=arccos frac{operatorname{tr}(oldsymbol{R})-1}{2})
2.4.2 李代数更新
10 式 和4.8 式联立可得 (omega^{wedge}=oldsymbol{R}^{mathrm{T}}phioldsymbol{R})
2.4.3 李代数求导与扰动模型
2.4.4 有关 SE(3)
由于 SE(3) 李代数性质复杂,在 VIO 中,我们通常使用SO(3) + t 的形式表达旋转和平移。对平移部分使用矢量更新而非SE(3) 上的更新