视觉SLAM十四讲 – 笔记
第2讲:初识SLAM
1. 概述
经典视觉SLAM架构
- 传感器信息读取。
- 视觉里程计(Visual Odometry, VO)。视觉里程计任务是估算相邻图像间相机的运动,以及局部地图的样子。VO又称为前段(Front End)。
- 后端优化(Optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对他们进行优化,得到全局一致的轨迹和地图。由于接在VO之后,又称为后端(Back End)。
- 回环检测(Loop Closing)。回环检测判断机器人是否曾经到达过先前的位置。如果检测是回环,它会把信息提供给后端进行处理。
- 建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。
2. 视觉里程计
视觉里程计(Visual Odometry,VO,又称为前段,Front End)关心相邻图像之间的相机运动,最简单的情况当然是两张图像之间的运动关系。
计算机是如何通过图像确定相机的运动呢?
视觉SLAM中,我们只能看到一个个像素,知道它们是某些空间点在相机的成像平面上投影的结果。所以,为了定量地估计相机运动,必须在了解相机与空间点的几何关系之后进行。
VO 能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构。叫它为“里程计”是因为它和实际的里程计一样,只计算相邻时刻的运动,而和再往前的过去的信息没有关联。
假定我们已有了一个视觉里程计,估计了两张图像间的相机运动。那么,只要把相邻时刻的运动“串”起来,就构成的机器人的运动轨迹,从而解决了定位问题。另一方面,我们根据每个时刻的相机位置,计算出各像素对应的空间点的位置,就得到了地图。
仅有VO产生的问题,仅通过视觉里程计来估计轨迹,将不可避免地出现累计漂移。这是由于视觉里程计(在最简单的情况下)只估计两个图像间运动造成的。我们知道,每次估计都带有一定的误差,而由于里程计的工作方式,先前时刻的误差将会传递到下一时刻,导致经过一段时间之后,估计的轨迹将不再准确。这也就是所谓的漂移(Drift)。
为了解决漂移问题,我们还需要两种技术:后端优化和回环检测。回环检测负责把“机器人回到原始位置”的事情检测出来,而后端优化则根据该信息,校正整个轨迹的形状。
3. 后端优化
笼统的说,后端优化主要指处理SLAM过程中噪声的问题。除了解决“如何从图像估计出相机运动”之外,我们还关心这个估计带有多大的噪音。后端优化要考虑的问题,就是如何从这些带有噪音的数据中,估计整个系统的状态,以及这个状态估计的不确定性有多大----这称为最大后验概率估计(Maximum-a-Posteriori, MAP)。这里的状态既包括机器人自身的轨迹,也包括地图。
后端负责整体的优化过程,它往往面对的只有数据,不必关心这些数据到底来自什么传感器。
在视觉SLAM中,前段和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法。
SLAM问题的本质:对运动主体自身和周围环境空间不确定性的估计。
4. 回环检测
回环检测,又称闭环检测(Loop Closure Detection),主要解决位置估计随时间漂移的问题。如果有某种手段,让机器人知道“回到了原点”这件事,或者把“原点”识别出来,我们再把位置估计值“拉”过去,就可以消除漂移了。这就是所谓的回环检测。
回环检测与“定位”和“建图”二者都有密切的关系。地图存在的主要意义,是为了让机器人知晓自己到达过的地方。为了实现回环检测,我们需要让机器人具有识别曾到达过的场景的能力。
视觉回环检测,实际上是一种计算图像数据相似性的算法。
在回环检测之后,我们会把“A与B是同一点”这样的信息告诉后端优化算法。然后,后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如果我们有充分而且正确的回环检测,就可以消除累积误差,得到全局一致的轨迹和地图。
5. 建图
建图(Mapping)是指构建地图的过程。地图是对环境的描述,但这个描述并不是固定的,需要视SLAM的应用而定。
(形形色色的地图:2D栅格地图,拓扑地图以及3D点云地图和网格地图)
地图的形式随SLAM的应用场合而定。大体上讲,它们可以分为度量地图与拓扑地图两种。
度量地图(Metric Map)
度量地图强调精确地表示地图中物体的位置关系,通常我们用稀疏(Sparse)与稠密(Dense)对它们进行分类。稀疏地图进行了一定程度的抽象,并不需要表达所有的物体。例如,我们选择一部分具有代表意义的东西,称之为路标(Landmark),那么一张稀疏地图就是由路标组成的地图,而不是路标的部分就可以忽略掉。相对的,稠密地图着重于建模看到的所有东西。对于定位来说,稀疏路标地图就足够了。而用于导航时,我们往往需要稠密的地图(否则撞上两个路标之间的墙怎么办)。
拓扑地图(Topological Map)
相比于度量地图的精确性,拓扑地图则更强调地图元素之间的关系。拓扑地图是一个图(Graph),由节点和边组成,只考虑节点间的连通性,例如A,B点是连通的,而不考虑如何从A点到达B点的过程。
6. SLAM问题的数学表述
下一篇更新。