相机按照工作方式不同,分为:
- 单目相机(Momocular):结构简单、成本低
- 双目相机(Stereo):双目相机的距离估计是比较左右眼的图像获得的。双目与多目的缺点是配置与标定较为复杂,其深度量程和精度受双目的基线与分辨率所限,而且视差的计算非常消耗资源,需要使用GPU和FPGA设备加速,才能实时输出整张图像的距离信息。现有条件下,计算量是双目的主要问题之一。
- 深度相机(RGB-D):其最大特点是可以通过红外结构或Time-of-Flight(ToF)原理,像激光传感器那样,通过主动向物体发射光并接收返回的光,测出物体与相机之间的距离。相比于双目可节省大量的计算资源。缺点:测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质等诸多问题。slam方面主要用于室内,室外较难应用。
经典视觉SLAM框架
- 传感器信息读取。在视觉slam中主要为相机图像信息的读取和预处理。
- 前端视觉里程计(Visual Odemetry,VO):估计相邻图像间相机的运动,以及局部地图的样子。VO又称前端。
- 后端(非线性)优化(Optimazition)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对他们进行优化,得到全局一致的轨迹和地图。
- 回环检测(Loop Closure Detection)。回环检测判断机器人是否到达过先前的位置,如果监测到回环,他会把信息提供给后端进行处理。回环检测实质上是一种计算图像数据相似性的算法。
- 建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。构建地图的过程。
如果把工作环境限定在静态、刚体、光照变化不明显、没有人为干扰的场景,这种场景下的slam技术已经相当成熟。
度量地图(Metric Map):强调精确地表示地图中物体的位置关系,通常用稀疏(Sparse)与稠密(Dense)对其分类。定位时使用稀疏地图,导航使用稠密地图。
拓扑地图(Topological Map):是一个图,由节点个边组成只考虑节点的连通性。
视觉里程计
视觉里程计关心相邻图像之间的相机运动,最简单的情况是两张图像之间的运动关系。
视觉里程计能够通过相邻帧间的图像古遗迹相机运动,并恢复场景的空间结构。称它为‘里程计’是因为它和实际的里程计一样,只计算相邻时刻的运动,和过去的信息没有关联。
漂移:是由于视觉里程计的估计误差导致的,先前时刻的误差会传递到下一刻,导致经过一段时间后,估计的轨迹就不再准确。
后端优化和回环检测可以解决漂移问题。回环检测负责把“把机器人回到原始位置”的事情检测出来,后端优化则根据该信息校正整个轨迹的形状。
在视觉slam中,前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法。
SLAM问题的本质:对运动物体自身和周围环境空间不确定性的估计。为解决slam问题,我们需要状态估计理论,把定位和见图的不确定性表达出来,然后采用滤波器或非线性优化,估计状态的均值和不确定性(方差)。
视觉回环检测实质上是一种计算图像数据相似性的算法。
SLAM问题的数学表述
离散 时刻:;
轨迹:;
路标:N个,用表示
时刻位于处探测到某一个路标
运动方程:
这里,是运动传感器的读数或者输入,为该过程中加入的噪声。
观测方程:在时刻位于处探测到某一个路标,产生一个观测数据。用一个抽象函数h来描述这个关系:
是这次观测里的噪声。
SLAM过程可以总结为两个基本方程:
其中是一个集合,记录着哪个时刻观察到了哪个路标。这;两个方程描述了最基本的slam问题:
当知道运动测量的读数,以及传感器的读数,如何求解定位问题(估计)和建图问题(估计)?
我们就把slam问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?
第3讲:三维空间刚体运动
三位空间的刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角。
3.1旋转矩阵
1、内积
指向量的夹角。 也可以描述向量间的投影关系。
2、外积
外积的结果是一个向量,他的方向垂直于这两个向量,大小为,是两个向量张成的四边形的有向面积。
反对称符号:^
反对称矩阵: