在过去的十年里,公开发表的文章明显地显示出一种趋势,就是将视觉作为唯一的外部感知系统来解决SLAM问题[6, 7, 17, 38, 39]。这一趋势主要归功于基于相机的系统获取距离信息和检索环境表观信息,以及颜色,纹理的能力,使得机器人有可能集成类似人或物的检测识别这样的高级任务。此外,相机的价格低廉,轻便,并且低功耗。遗憾的是,以下原因会影响相机采集的数据:低分辨率,光照变化,缺少纹理的表面,由于快速移动造成的图像模糊,以及其他原因。
最早的有关视觉导航的工作是基于双目立体装置的[40, 41]。然而,由于价格原因,在很多情况下是很难使用双目立体相机或者三目立体相机的。一个可以替代的方案是使用两个单目相机(比如网络摄像头),这也带来了其他问题:(a)通过硬件或者软件实现摄像机的同步,(b)每个传感器对颜色和亮度的不同响应,(c)根据所选的几何方案(平行的或者收敛轴的)进行机械对准。
还有这样的一些工作,使用多相机,这些相机的视角重叠或者不重叠[42, 43],还有使用特殊的广角镜头[44]或者全景相机[45],以此来增加可见范围并在一定程度上减少姿态估计的累积误差。近年来,RGB-D(彩色与深度图像)相机被用于对室内环境进行建图[46],证明该方案是SLAM应用中有前途的替代方案。
与配置使用无关的是,相机必须进行标定(离线手动标定或者在线自动标定)。标定估计出内外参,内参由相机的几何构造(焦距和主点位置)确定,外参依赖于相机在空间中的位置(相对于某个坐标系的旋转和平移)。通常通过一系列多视角的标定板图像来估计出必要的参数,以此来关联图像坐标和世界坐标[47]。有很多进行标定的工具,比如:OpenCV的标定函数(基于[48]),matlab的相机标定工具箱,蔡氏相机标定软件,用于标定全景相机的OCamCalib工具箱,用于多相机标定的多相机自标定工具箱。
如果相机标定是线下进行的,那么就是假设在SLAM系统的整个工作期间相机的内参是不变的。这是一个普遍选择的做法,因为它减少了在线计算参数的数量。然而,由于一些环境的因素,相机的内参是会改变的,比如湿度和温度的影响。此外,在真实的环境中使用的机器人可能会发生碰撞或者损伤,这些都可以导致先前获得的标定参数失效[49]。
立体相机装置(双目、三目或者视野部分重叠的多个摄像机)的优点是:能够通过三角测量的方法[50],简单而准确地计算出场景中路标点的真实三维坐标(在视觉SLAM问题中这是一个很有用的信息)。[51-53]所做的工作代表了当前最有效的双目立体视觉SLAM系统。当使用单目相机进行SLAM的时候,会存在尺度不确定的问题[54, 55]。为了从单目相机中获得三维信息,根据相机的先验知识有以下两种方法:(a),仅仅使用内参,该方案下用不确定的尺度因子恢复环境结构和外参,如果空间中两个点之间的距离是已知的,则由此确定尺度因子。(b),在只有坐标变换已知的情况下,三维结构的重建是通过投影变换得到的。
自从single camera SLAM 和MonoSLAM[33](单目SLAM)出现,使用单个相机开始变得流行起来。另一个原因可能是因为单个相机更加常见,像手机,个人数码处理设备(单反之类的)和个人电脑。从硬件和处理速度上来说,单目算法给出了一个简单灵活又经济的解决方案。
单目SLAM是纯方位SLAM中的一个特例。纯方位SLAM是一个部分可观的问题,这里的传感器不能提供足够从简单的观测中获得路标深度的信息。这就带来了路标点的初始化问题,解决方法分为以下两类:时延和非时延的方法[3, 56]。通过对多个视角下的显著特征的跟踪,以此来从单目相机中获得三维信息。
虽然说关于视觉SLAM 已经有了很多的工作,但是仍然存在很多的问题。我们将会在第六部分对已经提出的视觉SLAM方案进行回顾。对很多视觉SLAM 系统来说,在探索环境的时候会出现较大累积误差的现象(在复杂场景下甚至完全失效),这会导致对机器人位置的估计不一致,得到完全不一致的地图。出现这种情况有以下三个主要原因:
(1)首先,通常假定相机运动是平滑的,并且显著特征的外观具有一致性[33, 57],但是实际中一般不是这样。上面的假设很大程度上是与显著特征检测算子和特征匹配技术相关的。如当捕捉的图片缺少纹理和相机快速移动而引起的图片模糊(由于震动或者较快的转向)[58],这都会导致对相机位置估计不准确。在人身上携带,人型机器人上,四旋翼直升机上的相机,等等,这种现象是很普遍的。使用关键帧[59, 60](参见附录1)可以在一定程度上消除这个问题。另外,[61]和[62]分析了模糊图像序列(由于相机没有聚焦导致)中的跟踪问题。
(2)第二,大多数的研究者假定环境是静态的,并且环境中仅包含固定的和刚性的元素,但大多数的环境中包含运动中的物体和人。如果不考虑这种情况,那么这些移动的元素将会导致错误的匹配,结果就是在系统中产生不可预测的错误。为了应对这种情况,[63-66]最先提出了解决方法。
(3)第三,真实世界在视觉上是重复的。例如重复的建筑元素,树叶,砖或石头的墙壁。还有在城市户外环境中重复出现的交通信号。这使得识别先前到达过的场景或者大范围的SLAM变得困难起来。