学习资料是深蓝学院的《从零开始手写VIO》课程,对课程做一些记录,方便自己以后查询,如有错误还请斧正。由于习惯性心算公式,所以为了加深理解,文章公式采用手写的形式。
VIO概述
VIO 概述
相关名词
VIO(Visual-Inertial Odometry
) :
以视觉与 IMU 融合实现里程计
视觉 Visual Odometry
以图像形式记录数据,频率较低(15 − 60Hz 居多)
通过图像特征点或像素推断相机运动
IMU(Inertial Measurement Unit
)
惯性测量单元
典型 6 轴 IMU 以较高频率(≥100Hz)返回被测量物体的角速度与加速度
受自身温度、零偏、振动等因素干扰,积分得到的平移和旋转容易漂移
六自由度
IMU 本身由一个陀螺仪
和一个加速度
计组成,分别测量自身的角速度
和加速度
。
IMU 与视觉定位方案优势与劣势对比:
方案 | IMU | 视觉 |
---|---|---|
优势 | 快速响应不受成像质量影响角速度普遍比较准确可估计绝对尺度 | 不产生漂移直接测量旋转与平移 |
劣势 | 存在零偏低精度 IMU 积分位姿发散高精度价格昂贵 | 受图像遮挡、运动物体干扰单目视觉无法测量尺度单目纯旋转运动无法估计快速运动时易丢失 |
融合方案:
松耦合
将 IMU 定位与视觉/GNSS 的位姿直接进行融合,融合过程对二者本身不产生影响,作为后处理方式输出。典型方案为卡尔曼滤波器
。
紧耦合
融合过程本身会影响视觉和 IMU 中的参数(如 IMU 的零偏和视觉的尺度)。典型方案为MSCKF
和非线性优化
。
为什么要使用紧耦合
- 单纯凭(单目)视觉或 IMU 都不具备估计 Pose 的能力:视觉存在
尺度不确定性
、IMU 存在零偏导致漂移
; - 松耦合中,视觉内部 BA 没有 IMU 的信息,在整体层面来看不是最优的。
- 紧耦合可以一次性建模
所有
的运动和测量信息,更容易达到最优。
预备数学知识
性质
四元数
相关四元数的知识可以参考我的这篇文章,下面推导一下四元数时间导数:
设初始旋转为 q = [s, v],然后,发生了角轴为 ω, θ 的旋转(右乘,对应四元数记作 ∆q),那么 q 相对该旋转的导数为:
旋转矩阵
使用旋转矩阵 R 时,角速度为 ω,那么 R 相对于时间的导数可写作:
该式被称为泊松公式(Possion’s equation),其中∧为反对称矩阵算子: