摘要
视觉SLAM(同时定位与建图)是指仅仅利用图片这一外部信息来确定环境中机器人、车辆或者移动相机的位置,同时能够建立已探索区域的一种表示法(地图)。SLAM是移动机器人实现自主化的一项基本任务。当下,在小范围,静态的场景中,认为使用距离传感器(比如激光、声呐)来建立二维地图,能够很好的解决SLAM问题。然而,在动态,复杂,大场景下,仅使用视觉作为唯一的外部传感器来进行SLAM是当今的研究热点。应用于视觉SLAM的计算机视觉技术包括显著特征的检测、描述以及匹配,图像的识别与检索等等,这些技术仍然需要提升。本文的目的就是给那些初涉视觉SLAM的新手提供一个当前优秀方法的简短易懂的综述。
关键字:视觉SLAM 显著特征选取 图像匹配 数据关联 拓扑地图与度量地图
1. 介绍
移动机器人的自主导航问题被分成三大块:定位,建图,路径规划[1]。定位就是精确确定机器人在环境中的当前姿态。建图就是将环境的多个不完整观测集成到单个一致的模型中,路径规划就是在地图中确定一条通过环境的导航最优路径。
最初,建图和定位单独进行研究,后来人们意识到他们是相互关联,相互依赖的。这也就是说,为了得到环境中精确的定位需要正确无误的地图,但是,为了建立好的地图需要在新元素添加到地图时能够被准确地定位。这个就是SLAM(同时定位与建图),当相机被作为唯一的外部传感器时,这就是视觉SLAM。也可以用词语vision-based SLAM[2, 3]和vSLAM[4]表示。在这篇文章中我们使用广为人知的visual SLAM这一词语。视觉SLAM系统能够将来自本体传感器的信息作为补充,以此来增加精度和鲁棒性,也就是visual-inertial SLAM(视觉惯性SLAM)[5]。然而,当视觉被作为系统的唯一的感知来源时(不使用来自机器人的测距单元以及惯性传感器的信息),就叫做vision-only SLAM[6, 7]或者camera-only SLAM[8]。
在以下条件下,很多视觉SLAM系统都会失败,包括:在室外场景下,在动态场景中,场景有太多或者太少的显著特征,在大场景中,相机不规则运动期间,传感器出现部分或者全部的遮挡。一个成功的视觉SLAM系统的关键就是尽管有这些困难,但是依然能够正确地处理的能力。
SLAM的重要应用有:在未经预先订制的越野地形上进行车辆的自动驾驶[9];高危或者难以导航环境下的救援任务[10, 11];行星,宇宙,陆地和海洋探索[12-15];增强现实的应用(虚拟的物体被放置在现实世界场景中)[16, 17];视觉监控系统[18];医学[19, 20]等等。
在本文中,我们详细地展现了视觉SLAM的研究,以及最近的贡献和当前的各种问题。先前,Durrant和Bailey给出两个教程来总结SLAM问题[21, 22]。后一个教程描述了使用激光传感器,并以概率方法来建立地图的工作。相似地,[23]给出了SLAM问题的介绍,分析了三种解决方案(第一种是基于卡尔曼滤波的方法,其他两种是使用基于图和粒子滤波的优化方法),并且提出了问题的分类。然而,上述的文章并没有关注仅仅使用视觉作为唯一外部传感器的方法。另一方面,[24]给出了机器人中有关计算机视觉的综述,谈到了视觉SLAM问题,但是并没有详细阐述,这正是我们在这篇文章中想做的。
这篇文章的结构安排如下:第二部分概述了SLAM问题。第三部分中,相机作为唯一的外部传感器将被讨论,并且提到这样的系统有哪些不足。第四部分描述了可以提取的显著特征的类型,以及能够在图像遭受变化时而保持不变性的描述子。第五部分涉及到图像匹配和数据关联的问题。第六部分给出了解决视觉SLAM问题不同方法的详细介绍,以及它们各自的优缺点。第七部分中,描述了对观测到的世界的不同表示方式。第八部分给出总结,以及进一步研究中的潜在问题。最后一部分是参考文献。
2. 同时定位与建图
在1985-1990期间,[25]和[26]提出了同时定位与建图,一段时间之后,这个问题被命名为SLAM。读者可以参考Durrant和Bailey[21],Bailey和Durrant[22],它们对SLAM问题的历史有详细的描述。在一些文章中[27, 28]也叫作CML(Concurrent Mapping and Localization)。SLAM或者CML是这样一个过程,一个实体(机器人,交通工具,甚至一个佩戴在人身上的携有传感器的CPU单元)能够对探索过的环境建立一个全局的地图,同时能够在任何时候,利用这个地图去推测出自身的位置。
为了能够从环境中建立地图,这个本体必须拥有用来获取环境中信息的传感器。这些传感器又分为外部传感器和本体传感器。外部传感器包括:声呐[29, 30],激光雷达[31, 32],相机[2, 3, 33, 34]和GPS[9]。以上这些传感器都包含噪声,并且都有有限的测量能力。前三个传感器只能获取环境的局部信息。激光和声呐传感器能够获取环境的精确的,稠密的信息。然而,它们有下面的问题:不适用于杂乱的环境中以及物体识别;它们都非常昂贵,重量大,所需装配空间较大,因此很难用于机载机器人和人型机器人。另一方面,GPS在狭窄街道(城市狭窄街道),水下,其他星球上工作效果不好,在室内有时也不可用。
本体传感器能够获取速度,位置增量,加速度这些信息。比如:编码器,加速度计和陀螺仪。这些传感器能够通过航迹推算导航方法(也叫作推导计算)来本体移动的增量估计,但是,由于先天的噪声存在,它们不能一直对本体位置有一个精确的估计,因为误差是累积的。
正如之前一些研究[35-37]表明的那样,为了获得对机器人位置的精确地,鲁棒地估计,需要利用多传感器的信息融合。然而,额外的传感器的加入增加了成本,重量和系统的能耗,因此,如何仅仅使用相机来定位机器人位置并创建地图显得非常重要。
3. 相机作为唯一的外部传感器
在过去的十年里,公开发表的文章明显地显示出一种趋势,就是将视觉作为唯一的外部感知系统来解决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变得困难起来。
4. 显著特征的选取
有些文章对显著特征和路标点的描述含混不清,在这里我们将对它们区别对待。根据[67],路标点就是用三维坐标和外观信息描述的真实空间中的区域。而显著特征是用图片中二维坐标和外观信息描述的图像中区域。在这篇综述中,显著特征一词被泛化了,它可以表示从图像中获取的点,区域,甚至是分割出的边缘。
由人工路标点产生的显著特征更加容易定位[67]。这些路标点作为导航辅助,被加入到环境中,,比如固定在地板或者墙壁上的方块或者圆形标志。这些路标点的优点是我们事先知道他们的外观,这使得在任何时刻都很容易检测到它们。然而,这意味着在系统初始化之前我们要人为的布置环境。自然的路标点是本来就存在于环境中的[40]。室内环境中,门窗的转角通常可以作为自然路标点。在室外环境中,树干[68],区域[69],或者感兴趣的点[70]会被采用。感兴趣的点就是可以通过给定的检测子能够容易区别于其他点的点,感兴趣点是图片中利用邻近区域描述的图像像素。
一个好的特征有下面的性质:它必须是显著的(易于提取),精确的(测量是精确的),对旋转,平移,尺度缩放和光照变化是不变的[3]。因此,一个好的路标点在三维空间不同的视角下是有着相似的表观。显著特征的提取过程分为两个阶段:检测和描述。检测就是通过处理图像获得许多显著的元素。描述就是基于图像的视觉信息得到特征向量。特征描述子对于位置和方向的不变性能够保证提升图像匹配和数据关联的效果(在第五部分描述)。
4.1检测子
在大多数基于视觉的SLAM系统中,随处可见的自然的特征被采用,比如角点,感兴趣的点,分割的边缘或者区域。特征类型的选取很大程度上依赖于机器人所工作的环境。
有很多显著特征检测子可供选择。比如:Harris角点检测子[71],Harris-Laplace和Hessian-Laplace点检测子;还有他们相应的仿射不变性的版本Harris-Affine和Hessian-Affine[72];以及用于SIFT(Scale Invariant Feature Transform)[70]的高斯差分(DoG);最大稳定极值区域(MSERs)FAST(Features from Accelerated Segment Test)[73]和用于SURF(Speeded Up Robust Features)[74]的Fast-Hessian。[75]在不同视角,缩放,旋转,焦距未对准,JPEG压缩和光照变化时对这些算法进行了评估。
Hessian-Affine与MSER效果最好,MSER在不同视角和光照变化时最稳定,Hessian-Affine在焦距未对准和JPEG压缩时表现最好。在[76]中,根据它们的重复性,精度,鲁棒性,效率和不变性特点对它们进行了分类。
在大多数的视觉SLAM系统中,经常采用角点作为路标点,因为它们具有特征不变性以及在计算机视觉领域被广泛的研究。然而,[77]在实时的单目SLAM系统中使用叫做边缘元素的路标点,这使得能够使用高水平的几何信息来建立地图。由于其对于光照,方向和尺度的变化有很好的不变性,因此文章作者认为边缘是用于跟踪和SLAM的较好的特征。正是因为边缘对相机突然运动带来的模糊具有很好的不变性[60],使得边缘的应用看起来前景广阔。然而,边缘信息不容易提取和匹配。另一方面,为了提高SLAM系统的精度和创建环境更好的地图表达,[78]和[79]在单个地图中研究了多种特征的融合(点,线和平面结构)。
4.2描述子
物体识别中最广泛使用的描述子之一就是由[70]提出的直方图类型的SIFT描述子,它是基于显著点在领域的局部特征的空间分布,由128维向量表示。[80]对原来的SIFT进行了改进,叫做PCA-SIFT,它的初衷是希望用更少维数来获取和之前SIFT具有同样区分性和鲁棒性的描述子。这里的降维方法方法采用了主成分分析(PCA)的方式。直方图类型的描述子有着对平移,旋转和尺度不变性,并且在一定程度上对光照和视角的改变也具有不变性。你可以在[81]和[82]找到有关描述子算法评估和SIFT衍生的描述子的有关内容。
就视觉SLAM问题,[83]对不同的局部描述子算法进行了对比研究。在较大程度的改变尺度,视角和光照的情况下,统计在视频流中正确匹配和错误匹配的数量,以此来作为评估的标准。文中表明就鲁棒性和计算时间上来说,SURF描述子是优于SIFT描述子的。文章作者进一步证明SIFT描述子并不具有很好的稳定性,这意味着在某个位置检测到的路标点,对相机进行轻微的移动之后会消失不见。为了提高SIFT算法的性能,当前有很多SIFT变体,比如:ASIFT,其加入了仿射不变性[84],BRIEF(Binary Robust Independent Elementary Features)[85],ORB,基于BRIEF的快速二值描述子,对旋转具有不变性且抗噪声[86],PIRF(Positon-Invariant Robust Feature)[87],还有为了实现并行和实时而做的GPU-SIFT[88]。
5.图像匹配和数据关联问题
在立体相机的匹配中,图像匹配是指在一幅图像中搜索每一个元素,它对应的出现在另外一幅图像中。匹配技术可以分为两类:短基线和长基线。在视觉SLAM显著特征点的跟踪和回环检测阶段,匹配技术是不可或缺的。在机器人导航领域,数据关联就是联系传感器的测量信息和已存在于机器人地图中的元素[89]。数据关联问题包括判断传感器的测量信息是否可信和是否可加入到地图中的相应元素。如果有误差的话,很快将会导致地图错误
5.1短基线匹配
这里所说的基线就是说用来采集图像的两个相机光心之间的连线。当采集这两幅图像时的视角差别很小时,那么对应点在两幅图像中的位置几乎是差不多的,这将会大大减少问题的复杂度。在这种情况下,我们以显著特征点为中心画一个矩形框(也叫做patch),使用矩形框内像素的灰度值来简单地表示这个点。可以通过相关操作来比较这些像素的像素值,比如互相关,像素差的平方和,像素差绝对值的和等等。[90]给出了比较两个patch之间相似度的很多规则。文章[51, 57]证明归一化的互相关操作(NCC)表现出了最好的结果。归一化操作是的其对光照的均匀性变化保持不变性。在[33, 91] 计算出单应性用以变换patch,以及保证NCC得到的对应点对视角变换具有不变性,以此让相机更加自由的运动。不幸的是,使用NCC计算得到的对应点很容易受到假阳性和假阴性数据的影响。如果图像中有重复纹理,那么用NCC来计算对应点很可能会得到两个或更多强响应的点。
在短基线下的对应点匹配中,考虑patch的大小和搜索区域的尺寸是很重要的,否则会出现错误[57]。比如,patch太小的话,虽然可以获得较快的速度,但是也容易产生错误的对应点,反过来,如果太大,会消耗太多的时间。因此,建议使用9*9或者11*11大小的patch,并且放置在有角点的地方,因为这样的区域图像梯度会有不止一个的主方向,有利于对应点的计算。在短基线情况下帧与帧之间的匹配中,描述子不是必须的,但是如果跟踪失败或者相机丢失,那么描述子会是一个很好的补充。
短基线下的缺点就是深度的计算对噪声很敏感,比如,由于不同视角之间的距离很短,会造成图像坐标的错误测量。但是,用它也可以实现在视频流中对匹配特征的精确跟踪。对基于特征,轮廓或者区域的跟踪,文章[92-94]展示了最好的相关技术研究。
5.2长基线匹配
在长基线的情况下,由于图像之间尺度和视角的较大变化,这样会导致一幅图像中的某个点会出现在另外一幅图像中的任何位置(参见[95]的第三部分)。点领域的图像数据会因为视角和光照的变换有较大的扭曲,这使得相关操作很难得到好的结果。
最简单的方法就是将一幅图像中的所有特征逐一在另外一幅图像中搜索(暴力方式)。不幸的是,这个过程是随着特征数量呈平方关系增长的,这也使得对很多有实时性要求的应用不可行。
近年来,对于长基线下的匹配算法方面,出现了很多对图像各种变换具有不变性的算法。这其中的很多算法会为每个检测到的特征计算一个描述子,并通过一定的数据结构来搜索特征对,这大大就提高了效率。
有多种距离来衡量相似度,比如,欧式距离,曼哈顿距离,卡方距离等。数据结构可以使K-D树[96, 97]或者哈希表[98]。也有其他的标准来判断这两个特征是不是应该关联[82]。比如:(a)距离阈值法:如果两个特征的描述子距离小于设定的阈值,那么这两个特征就关联在一起。(b)最近邻法:如果两个特征描述子距离最近,并且小于一定的阈值,那么这两个特征就关联在一起,(c)最近距离比:这个方法类似与最近邻的方法,不过是计算离当前像素最近的两个特征的比值。如果使用第一种方法,图像中的一个特征可能有好几个匹配的特征。有一些技巧可以筛选这些候选特征,比如:松弛技术[99]或者点收集技术[100]。
几何约束可以加速匹配处理。对极约束描述:与能够匹配的条件就是在的对极极线上[47]。用这种方法,对应的匹配就会在这条直线上搜索而不会在整幅图像中搜索了。其中的一些细节,可以查看[69, 101, 102]。
其他的如[103-106]这些研究使用学习的策略来决定特征之间的相似度。这样特征的匹配关联问题被看成是一个分类问题,并且看起来是很有前景的。在SLAM应用中要求实时的特定场合下,这种方法由于需要持续进行在线学习而无法满足。尽管如此,[107, 108]已经提出了快速实现在线学习的方法,可以应用到未来的SLAM应用中。
[109-111]提出了一种不同的图像特征匹配方法,通过图的方式来描述点领域之间的关系。相匹配的图就是那些在两幅图像中的同一特征或者相似的特征。[112]用同样的方式,提出了基于图的迭代匹配算法,用来检索移动机器人的姿态。遗憾的是,这些研究仍然有局限性,因为它们不能处理实时和暂时性的遮挡问题。
使用高质量的描述子甚至使用不同类型的相似度量都不能避免出现错误匹配的情况。如果这些错误的匹配使用在SLAM系统中,那么会导致相机位姿和地图的估计产生严重的错误。因此,使用鲁棒的估计方法是很重要的,例如RANSAC(Random Sample Consensus), PROSAC(Progressive Sample Consensus)等,这些方法能够自动的处理错误匹配的情况。[113]给出了这些方法的对比研究。这些方法的主要区别在于对模型质量的评估不同。鲁棒的估计方法通常被用来通过对那些包含非典型值的数据中估计出模型参数。RANSAC估计全局的数据关系,并且同时将数据分为局内点(数据关系一致)和局外点(数据关系不一致)。由于对大量外点有较强的容忍度,因此,这个算法通常被用来解决各种各样的估计问题。
[114, 115]提出了一个RANSAC的替代方法,将贝叶斯技术用于帧间匹配,叫做主动匹配。主动匹配只搜索那些可能会包含正确匹配的区域,这样就减少了局外点的数量和图像的处理操作。这种算法是基于香农信息理论来做的。在处理相机快速移动的情况,主动匹配显示出了很好的效果。这种方法的缺点就是随着特征数量的增长,它的扩展性不是很好。为了解决这个问题,[116]提出了一种扩展,它可以实时的处理几百个特征,并且不会丢失关联数据的精度。
一种评价匹配算法性能的方法是Receiver Operating Characteristic curve,或者叫做ROC曲线[117]。这是一种图形化的表示方法,包含真阳性,假阳性,假阴性和真阴性,加上阳性预测值和准确性。真阳性是正确匹配的数目,假阴性是那些非正确检测的匹配,假阳性是那些不正确的匹配,真阴性是那些正确拒绝的非匹配。在一些信息检索的文章[36]中,经常使用下面两个指标:精度(正确匹配的数量除以总的匹配数量),召回率(正确匹配的数量除以应当被正确匹配的数量)。
5.3视觉SLAM中的数据关联
视觉SLAM中的数据关联问题通常使用Visual Place Recognition (视觉地点识别技术)。数据关联有一些特定的例子,比如:回环检测,机器人绑架(或者相机),多会话模式和协同建图。
5.3.1回环检测
回环检测就是识别出之前到达过的地方[118-120]。在解决大场景下的SLAM问题以及从严重的错误中恢复的问题中,回环检测是最大的障碍之一。从这个问题中还延伸出另外一个叫感知混叠[121, 122]的问题,即环境中不同的地方被识别为同一个地方。即使在使用相机作为传感器时也存在这个问题,因为环境是有重复特征的,比如:走廊,类似的建筑元素或者有大量灌木的区域。一个好的回环检测方法不能出现假阳性,并且要将假阴性控制在最低。
根据[123]视觉SLAM中的回环检测中的检测方法分为三类:(1)地图到地图,(2)图像到图像,(3)图像到地图。分类的主要区别在于关联数据从哪里获取(度量的地图空间或者图像空间)。理想的情况就是结合上面三种方法的优点来构建系统。回环检测是所有SLAM系统的重要问题,并且考虑到相机已经成为用于机器人的常见传感器,所以,许多研究人员都在专注于用视觉的方法来解决它。
[118]中使用相似矩阵来刻画所有可能配对图像之间的相似性。尽管有重复和模糊的图像存在,但是使用奇异值分解来做回环检测是可能的。[124]提出了一种统一方法,能够在实时单目视觉SLAM应用中恢复跟踪失败并且也可以进行回环检测。他们还给出了一个叫做GraphSLAM的系统,其中每一个节点存放着路标点,还有节点之间的转换关系。为了检测错误和进行回环检测,他们通过用视觉词袋(Bag of Visual Words)模型对表观信息进行建模,以此来找出和当前视频图像(参见附录二)相似的节点。[121]给出了这样一种方法来进行回环检测,它以贝叶斯滤波器作为框架,并使用增长的词袋模型,这样每一个采集到的视频图像都会被计算一个属于之前场景的可能性。[122]提出了一个仅仅使用图像表观信息的概率框架来进行地点识别。通过学习表观的生成模型,他们证明不仅可以计算两个观测的相似性,而且还可以计算它们属于同一个地方的概率,因此,他们计算观测位置的概率分布函数。最后,[120]提出了一个基于共同可见性的拓扑度量的地图表示,这种表示简化了关联数据问题,并且提升了基于表观信息的识别能力。
以上所有的回环检测方法的目标都是希望达到百分百的精度。因为在实际中,一个假阳性的数据就会对创建的地图带来不可救药的失败。在SLAM问题中,假阳性数据比假阴性数据更加可怕[125]。假阴性数据会降低召回率,但是对精度没有影响。因此,在精度是100%的情况下,为了确定回环检测的效率,召回率应当尽可能的高。
5.3.2机器人绑架问题
在机器人绑架问题中,在没有先验信息的情况下,确定地图中机器人的位姿。以下情景会发生这种情况,机器人被放置到建立好地图的区域中,但是机器人并不知道自己的位置,或者由于遮挡,传感器的暂时故障或者快速的相机移动而导致的未知运动[124, 126, 127]。
[126]提出了一种系统,这种系统能够容忍相机姿态的不确定性以及从由连续不规则运动或者遮挡所产生的小跟踪故障中恢复。这个工作包含产生一种多分辨率下的描述子(基于SIFT),能够在数据关联的任务中增加鲁棒性。此外,它还使用基于Harr小波低阶系数的索引方式。
[127]给出一个重定位的模块,它可以监视SLAM系统,检测跟踪故障,确定地图路标框架中的相机姿态,并且一旦条件改善就恢复跟踪。重定位是通过路标点识别算法来实现的,路标点识别算法使用了[103]提出的随机树分类技术,并且通过特征采集技术进行在线训练。这种方式下,可以获得高恢复率和快速识别。为了找到相机的位姿,从当前帧和地图上的地标点之间的对应来生成候选位姿。存在三个潜在匹配集合的选择,然后,通过三点法来计算这些集合的所有一致的姿态。通过RANSAC的方法,在这些姿态中寻找其一致性。如果找到具有最大一致性的姿态,那么这个姿态被认为是正确的。
5.3.3多会话和协同建图
多时段 和协同建图就是对齐那些同一机器人在不同时期建立的局部地图或者多个机器人同时建立的局部地图[118, 128, 129]。
在过去,地图中的路标点的关联问题已经被诸如最近邻、顺序兼容性最近邻和联合兼容分支与绑定等方法解决了[89]。然而,这些方法都很相似,只有保证机器人在地图上的初始假设良好,它们才会工作[122]。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【版权声明】
泡泡机器人SLAM的所有文章全部由泡泡机器人的成员花费大量心血制作而成 的原创内 容,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的 朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的 SLAM事业而努力!