从VINS-MONO到VIO学习(一)

写在前面:本文是基于深蓝学院从零开始手写VIO课程,结合本人对于VIO的理解书写而成的,因为刚刚入门SLAM,难免有一些理解错误以及不太透彻的地方,希望大家不吝赐教。

什么是VIO?

VIO(Visual-Inertial Odometry)是一种视觉惯性融合的里程计。一般来说,传感器由相机和IMU构成。相机采集信息的频率比较低,以图片的形式记录数据,主要用于特征点的提取和匹配以恢复出运动轨迹。但是相机有一些局限性,比如在光照条件较差,或者纹理不太清晰的地方可能会跟踪丢失,并且对于单目相机而言,它没办法得到拍摄物体真实的尺度,这也是我们要引入惯性单元的原因。

IMU传感器简介

IMU传感器一般分为六轴和九轴两大类,其中SLAM系统一般都是使用典型的6轴IMU。六轴IMU由两个部分构成:加速度计以及陀螺仪。其中加速度计是用于测量加速度,陀螺仪是用于测量角速度。通过IMU的信息我们可以解算出被测物体的位姿。但是IMU也是有局限性的,IMU采样频率很高,基本上频率在100-1000Hz之间,并且一般SLAM系统所使用的IMU为MEMS器件,精度不是很高,其示数受到自身温度,零偏,震动等因素的影响,并且在进行位姿结算的时候IMU的读数是要进行积分运算的,这就导致了误差的累计,如果不及时加以补偿,最终很可能导致结果出现很大错误。

松耦合和紧耦合

松耦合:IMU只提供自身所获取的读数,并不作为优化的内容进行优化。
紧耦合:IMU所测量的结果也作为参数加入到后端的优化之中。

三种表示旋转的方法

1. 旋转矩阵

旋转矩阵(定义为R),用于描述同一个向量,从一个坐标系到另一个坐标系的旋转关系。旋转矩阵是行列式为1的正交矩阵,当然所有行列式为1的正交矩阵也可以被成为旋转矩阵。所有旋转矩阵所构成的群称为特殊正交群[SO(3)]
请注意:特殊正交群属于李群。

特殊正交群定义: S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } SO(n)=\{R \in\Bbb R^{n×n} | RR^{T}=I,det(R)=1\} SO(n)={RRn×nRRT=I,det(R)=1}

2. 欧拉角

欧拉角是一种描述旋转的方法,它是由三个角度构成,它表示的是沿着对应的坐标轴旋转的角度。也就是说欧拉角是使用了三次沿着坐标轴的旋转来表示物体的一次旋转。
请注意:欧拉角每一次沿轴的旋转都是在上一次旋转的基础之上的。并且欧拉角旋转的顺序也会影响旋转的结果,比如XYZ欧拉角就是指先沿着X轴旋转然后沿着Y轴旋转最后沿着Z轴旋转。

  1. 绕物体的Z轴旋转,得到偏航角yaw;
  2. 绕旋转之后的Y轴旋转,得到俯仰角pitch;
  3. 绕旋转之后的X轴旋转,得到滚转角roll;
    绕每个轴旋转的旋转矩阵

对于欧拉角来说,它是使用三维向量表示三维旋转的,但是需要注意的问题是,欧拉角会面临着万向锁的问题,所谓的万向锁就是在旋转的时候可能会损失自由度,导致奇异。

3. 四元数

四元数相较与旋转矩阵更加紧凑,它只使用四个量来表示旋转,并且不存在万向锁的问题。单位四元数是一种比较好的表示3D旋转的方法。四元数由一个实部和三个虚部构成,并且拥有如下性质。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

一些量对于时间的导数

角速度: ω = lim ⁡ Δ t → 0 δ θ Δ t \begin{aligned}\omega=\lim\limits_{\Delta t\rightarrow0} \frac{\delta \theta}{\Delta t}\end{aligned} ω=Δt0limΔtδθ
四元数: q ˙ = lim ⁡ Δ t → 0 q ( t + Δ t ) − q ( t ) Δ t = lim ⁡ Δ t → 0 q ⊗ Δ q − q Δ t = q ⊗ [ 0 1 2 ω ] \begin{aligned} \dot{q}&=\lim\limits_{\Delta t\rightarrow0} \frac{q(t+\Delta t)-q( t) }{\Delta t}\\ &= \lim\limits_{\Delta t\rightarrow0} \frac{q \otimes \Delta q-q}{\Delta t} \\& = q \otimes \begin{bmatrix} 0 \\ \frac{1}{2\omega} \end{bmatrix}\end{aligned} q˙=Δt0limΔtq(t+Δt)q(t)=Δt0limΔtqΔqq=q[02ω1]
旋转矩阵: R ˙ = R ω ∧ \begin{aligned} \dot{R}=R\omega^\wedge \end{aligned} R˙=Rω
上式被称为泊松公式, ∧ \wedge 被称为反对称矩阵算子,也可表示为: ω × \omega_× ω× [ ω ] × [\omega]_× [ω]×

一些常用的公式

当 φ 很 小 的 时 候 e x p ( φ ∧ ) ≈ I + φ ∧ \begin{aligned} 当\varphi很小的时候 \quad exp(\varphi^\wedge)≈I+\varphi^\wedge \end{aligned} φexp(φ)I+φ
l n ( R    e x p ( Φ ∧ ) ) ∨ = l n ( R ) ∨ + J r − 1 Φ \begin{aligned} ln(R\;exp(\varPhi ^\wedge))^\vee =ln(R)^\vee +J_r^{-1}\varPhi \end{aligned} ln(Rexp(Φ))=ln(R)+Jr1Φ
R T    e x p ( Φ ∧ ) R = e x p ( ( R T Φ ) ∧ ) \begin{aligned} R^T\;exp(\varPhi ^\wedge)R=exp((R^T\varPhi)^\wedge)\end{aligned} RTexp(Φ)R=exp((RTΦ))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值