视觉slam十四讲学习笔记(1)

slam概述

SLAM是搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型。

定位和建图可以看成感知的内外之分,一方面要明白自身的状态,另一方面也要了解外在的环境。
将传感器分为两类,一类传感器是携带与机器人本体上的,例如机器人的轮式编码器、相机、激光灯等。一类是安装于环境中的,例如导轨、二维码标志等。安装于环境中的传感设备,通常能够直接测量到机器人的位置信息,简单有效地解决定位问题。
但是,由于必须在环境中设置,在一定程度上限制了机器人的适用范围。
按照相机的工作方式,将相机分为单目、双目和深度相机(RGB-D)三个大类。

单目相机 : 只使用一个摄像头进行SLAM的做法称为单目SLAM。这种传感器结构特别简单,成本很低。
由于单目相机只是三维空间的二维投影,所以如果真想恢复三维结构,必须移动相机的视角。移动相机后,估计相机的运动,同时估计场景中的物体的远近和大小,称之为结构。
由于相机往右移动,图像中的东西就会往左移动,同时近处的物体移动块,远处的物体移动缓慢。于是,相机移动时,这些物体在图像上的运动,形成了视差,通过视差可以判断物体的远近。
但是对于单目相机,将相机的运动和场景同时放大一定的倍数,看到的景象是一样的。
这说明了单目SLAM估计的轨迹和地图,将于真实的相差一个因子,也就是所谓的尺度。由于单目SLAM无法仅凭图像确定这个真实尺度,又称为尺度不确定性。
单目的缺点:
平移后才能计算深度
无法计算真实的尺度
本质原因是通过单张图像无法确定深度

双目相机和深度相机
双目相机和深度相机的目的,在于通过某种手段测量物体离我们的距离,克服单目无法知道距离的缺点。
如果知道了距离,场景的三维结构就可以通过单个图像恢复出来,也就消除了尺度不确定性。

双目相机与深度相机测量深度的原理不同

双目相机由两个单目相机组成,这两个相机之间的距离也就是基线是已知的。我们通过基线来来估计每个像素的空间位置。
这类似于人类可以通过左右眼图像的差异,判断物体的远近。对于双目相机进行拓展,也可以搭建多目相机,但是本质原理相同。
双目相机对于计算量有很大的要求。且双目相机测量的深度范围与基线有关。基线距离越大,能测量的范围越远。

深度相机可以通过红外结构光或tof原理,像激光传感器一样,测出距离,相比于双目相机,极大的减少了计算量。但是目前也主要应用于室内,室外较难应用。

经典视觉slam框架

在这里插入图片描述
对目前的slam框架以及包含的算法来说。如果把工作环境限定在静态、刚体、光照变化不明显、没有人为干扰的场景,那么slam系统已经相当成熟了。

三维空间刚体运动

旋转矩阵

想要确定一个点的位置,首先要确定它所在的坐标系,确定坐标系后可以得到该线性空间的基,就可以根据此来确定该点在这组基下的坐标了。
在这里插入图片描述
当我们用该表示法表示出多点坐标之后,它们之间存在着多种计算方式,重要的有内积:
在这里插入图片描述
可以描述向量间的投影关系

还有外积:
在这里插入图片描述
外积只对三维向量存在定义,还能用外积表示向量的旋转。因为a到b之间的旋转关系,可以使用旋转向量来描述,也就是三个实数就可以刻画出旋转的状态。

与向量间的旋转类似,坐标系之间也存在着变换关系。
坐标系之间的转换关系运用矩阵T来描述。
相机运动是一个刚体运动,保证了同一个向量在各个坐标系长度和夹角都不会发生变化,这种变换称为欧式变换。
利用同一个点在不同坐标系中坐标表示不同,但是位置不会发生变化,建立等式,推导出如下式子:
在这里插入图片描述
得到了矩阵R,这个矩阵有两个坐标系的基的内积组成,只要旋转相同,那么矩阵R一定相同,所以它又被称为旋转矩阵。

旋转矩阵存在着它是一个行列式为1的正交矩阵的性质。同时,行列式为1的正交矩阵也是一个旋转就很。所以旋转矩阵的集合定义为下:
在这里插入图片描述
SO(n)是特殊正交群的意思。SO(3)就是三维空间旋转的意思。旋转矩阵可以描述相机的旋转。
通过旋转矩阵和平移向量可以完整地描述欧式空间的坐标变换关系。
在这里插入图片描述

坐标系在经过多次变换后会变得过于负载,所以引入了齐次变换和变换矩阵重写式。
在这里插入图片描述
通过添加1,将三维向量变成四维向量,叫做齐次变换。这样旋转和平移在一个矩阵中,变为线性式,T称为变换矩阵。

T结构特殊,左上角为旋转矩阵,右侧为平移向量,左下角为0向量,右下角为1,这种矩阵又称为特殊欧式群:
在这里插入图片描述

旋转向量和欧拉角

任意宣战都可以用一个旋转轴和一个旋转角来表示,所以可以寻找一个向量,方向与旋转轴已知,长度等于旋转角,称为旋转向量。
这样表示旋转只需一个三维向量,表示变换旋转加平移,只需六维。

旋转向量到旋转矩阵的过程由罗德里格斯公式表示:
在这里插入图片描述
符号^表示向量到反对称的转换符。
同时也可以根据旋转矩阵计算旋转向量,求转角θ:
在这里插入图片描述

求转轴n,由于旋转轴上的向量在旋转爱庵后不发生改变。
在这里插入图片描述
转轴n是矩阵R特征值1对应的特征向量。

欧拉角提供了一种很直观的方式来描述旋转,使用了三个分离的转角,把一个旋转分解成三次绕不同轴的旋转。
欧拉角也存在着不同的定义方式,比如绕三个轴先后旋转的顺序,以及每次旋转是绕固定轴旋转,还是绕旋转之后的轴旋转的。

欧拉角的一个重大缺点是会碰到万向锁问题。
在俯仰角为90时,第一次旋转和第三次旋转将使用同一个轴,使得失去了一个自由度,这被称为奇异性问题。
在这里插入图片描述
产生的万向锁原因主要是由于旋转轴之间存在着层级关系,会导致旋转轴出现旋转面重合。

四元数

由于无法找到不带奇异性的三维向量描述方式。所以引用了一种类似于复数的代数,四元数。四元数是一种扩展复数,它既是紧凑的,也没有奇异性。缺点是不够直观,运算复杂。

一个四元数拥有一个实部和三个虚部。
在这里插入图片描述
i,j,k为四元数的三个虚部,满足关系式。
在这里插入图片描述
有时人们也用一个标量和一个向量来表示四元数。
在这里插入图片描述
s称为四元数的实部,v是它的虚部,如果一个四元数虚部为0,则称之为实四元数,反之,实部为0,则称之为虚四元数。

可以使用单位四元数表示三维空间中任意一个旋转。
假设进行了角度为θ的旋转,那么这个旋转的四元数形式为:
在这里插入图片描述
可以从中计算出旋转轴和夹角
在这里插入图片描述
任意的旋转都可以由两个互为相反数的四元数表示。

四元数运算表示

加法和减法
在这里插入图片描述

乘法
在这里插入图片描述
向量形式
在这里插入图片描述
由于最后一项外积的存在,四元数乘法通常是不可交换的,除非外积项为零。

共轭
虚部取相反数
在这里插入图片描述
四元数共轭乘自身,会得到一个实四元数,实部是模长的平方。
在这里插入图片描述

模长
在这里插入图片描述
乘积的模也是模的乘积
在这里插入图片描述


在这里插入图片描述
四元数和自己逆的乘积为实四元数的1
如果是单位四元数,逆和共轭就是一个量
在这里插入图片描述
数乘和点乘
点乘指两个四元数每个位置上的数值分别相乘
在这里插入图片描述
把一个三维空间点用一个虚四元数来描述
在这里插入图片描述

相当于用三个虚部表示空间中的三个轴
然后运用四元数表示这个旋转
在这里插入图片描述
所以旋转后的点可以表示为这样的乘积
在这里插入图片描述

四元数到矩阵旋转的转换

先将四元数转换为轴角θ和n,然后再根据罗德里格斯公式转换为矩阵。
也存在着简单的方法
设 四元数
在这里插入图片描述

对应的旋转矩阵R为:
在这里插入图片描述
反之,旋转矩阵对应的四元数为
在这里插入图片描述
由于q和-q表示同一个旋转,一个R对应的四元数表示的并不是唯一的。

相似、仿射、射影变换

相似变换

相似变换比欧式变换多了一个自由度,允许物体进行均匀的缩放
在这里插入图片描述
旋转部分多了缩放因子s,不再保持原来的长度不变。

仿射变换

在这里插入图片描述
与欧式变换不同,仿射变换只要求A是一个可逆矩阵,不必是一个正交阵。仿射变换也叫作正交投影。

射影变换

在这里插入图片描述

左上角为可逆矩阵A,右上为平移t,左下是缩放矩阵。
所以3D射影变换有15个自由度
7个相似变换,5个仿射变换,3个射影变换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值