VIO(1)—— 概述与基础知识

@

一、VIO(Visual-Inertial Odometry)概述

VIO即以视觉(相机)与 IMU 融合实现里程计的方法

  1. IMU(Inertial Measurement Unit),惯性测量单元.
  • 典型 6 轴 IMU 以较高频率(≥ 100Hz)返回被测量物体的角速度
    与加速度
  • 受自身温度、零偏、振动等因素干扰,积分得到的平移和旋转容
    易漂移
  1. 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) 上的更新

原文地址:https://www.cnblogs.com/long5683/p/13065748.html