VIO(1):简介以及基础知识

一 VIO简介

VIO(Visual-Ineritial Odemetry)是以视觉和IMU融合的里程计。

IMU(Inertial Meaurement Unit),惯性测量单元

  • 典型6轴IMU以较高频率(\geq 100Hz)返回被测量物体的角速度和加速度
  • 受自身温度,零飘,振动等因素干扰,积分得到的平移和旋转容易漂移

视觉里程计Visual Odometry

  • 以图像的形式记录数据,频率较低(15-60Hz)
  • 通过图像特征点或像素推测相机运动

IMU与视觉历程计的优缺点如下:

可以看出视觉和IMU在定位方面各有优缺点,但他们的优缺点又是可以互补的:

  • IMU适合计算短时间,快速运动
  • 视觉适合计算长时间,慢速运动

同时可以利用视觉定位来估计IMU的零偏,减少IMU由零偏导致的发散和累积误差;反之,IMU可以为视觉提供快速运动时的定位。

融合方案分为松耦合和紧耦合:

紧耦合是直接使用图像特征和IMU的位置信息来尽心优化定位结果,而松耦合则融合视觉里程计以及IMU的结果来给出最优的定位结果。

主流落地的项目基本都是使用的紧耦合的融合方法,因为:

  • 单凭(单目)视觉或则IMU都不具备估计Pose的能力:视觉存在尺度不确定性,IMU存在零偏导致漂移
  • 松耦合中,视觉内部BA没有IMU的信息,在整体层面来看不是最优的
  • 紧耦合可以一次性建模所有的运动和测量信息,更容易的达到最优

二 基础知识

2.1 三维刚体运动

首先是定义各个坐标系的名称:

  • 世界坐标系 W;
  • IMU坐标系 I;
  • 相机坐标系 C;

坐标系之间的变换关系由一个SE(3)给出,如从I变换到W的变换矩阵记作:T_{WI}

T_{WI} = \begin{bmatrix} R_{WI} & t_{WI}\\ 0^T & 1 \end{bmatrix}

其中R_{WI}是一个3*3的旋转矩阵,而t_{WI}则是3*1的平移向量。T_{WI}右乘一个IMU坐标系下的(其次)坐标,就可以得到该点在世界坐标系下的坐标。

2.2 四元数

知乎上大神放在Github上对于四元数介绍,详细地说明了四元数怎么来的,还有各种动图来解释。

https://github.com/Krasjet/quaternion/tree/master/demo/slerp_cube

https://krasjet.github.io/quaternion/quaternion.pdf

四元数是表示旋转向量的另一种形式,可以用四个数来同时表达旋转轴和旋转角度。可以将旋转矩阵R用四元数q来描述。四元数有一个实部和三个虚部,一般会把虚部写在前面,记为:

q = [q_0, q_1, q_2, q_3] ^Tq = [w ,x, y, z]

其中第一个元素为实部,后面三个为虚部。实部是标量,而虚部为矢量,所以也可以记作

q = [s, v] ^T

同时类似于旋转矩阵的乘法,四元数同样也定义了乘法运算:

考虑某一个绕旋转轴为单位向量u旋转\theta的旋转运动,它对应的四元数q可以表示为

q=\begin{bmatrix} cos \frac {\theta}{2}\\ u sin\frac{\theta}{2} \end{bmatrix}

当旋转为微小量时,这时候的四元数的变化为:

那么四元数对于时间的导数就是

2.3 旋转矩阵求导

对于旋转矩阵R,他的角速度矩阵记作w,那么它的导数可以表示为

R = Rw ^ \wedge

这个公式称为泊松公式(Possion‘s equation),其中\wedge称为反对称矩阵算子

w ^ \wedge =\begin{bmatrix} 0 & -w_3 & w_2\\ w_3 & 0 & -w_1\\ -w_2 & w_1 & 0 \end{bmatrix}

同样也可以记作w_ {\times}或则[w_ {\times}]


Github上大神的笔记

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值