"); //-->
Rana Azzam1 · Tarek Taha2 · Shoudong Huang3 · Yahya Zweiri4
接收日期:2019 年 10 月 30 日/接受时间:2020 年 1 月 8 日/在线发布时间:2020 年 1 月 16 日 © Springer Nature Switzerland AG 2020
翻译:幸运的石头
摘要视觉同步定位和建图(SLAM)在过去几年中引起了高度关注。在本文中,呈现了关于最先进的基于特征的视觉 SLAM 方法的综述。综述中根据在环境中观察到的视觉特征进行分类。视觉特征可以分为不同的层次:点和边这样的低级特征,平面和斑点这样的中级特征,以及语义标记的对象这样的高级特征。本研究得出的关于视觉 SLAM 方法的最关键研究空白之一是缺乏普遍性。虽然一些方法在准确性和效率方面表现得非常成熟。然而,它们是为非常特定的环境量身定制的,例如特征丰富的静态环境。在不同环境中运行时,此类方法的性能会严重下降。此外,由于软件和硬件的限制,保证视觉 SLAM 方法的鲁棒性极具挑战性。尽管语义在视觉 SLAM 中被大量使用,但通过结合特征之间的关系来理解场景尚未完全探索。整篇论文都对此类研究进行了详细讨论。关键词 机器人·SLAM·定位·传感器·因子图·语义1 引言经过几十年的详尽研究和深入调查,同步定位和建图 (SLAM) 持续在机器人社区进行的研究中占据主导地位。SLAM 是一个问题,即估计机器人车辆在以前未探索的环境中导航的位置,同时逐步构建它的地图。SLAM估计是基于通过安装在车辆上的传感器收集的测量值完成的,这些传感器包括:视觉、距离、光、位置和惯性传感器等等。SLAM 系统以多种不同的方法使用这些测量值来定位机器人并绘制其周围环境。然而,任何 SLAM 系统的搭建都包括一组通用组件,例如:地图/轨迹初始化;数据关联;和闭环。然后可以使用不同的估计技术来估计机器人的轨迹并生成环境地图。每个 SLAM 方法的实现其细节都依赖于所使用的传感器,也因此依赖于从环境中收集的数据。在本文中,我们彻底回顾了最新的视觉 SLAM 系统,重点关注基于特征的方法,使用传统的视觉传感器(如单目、深度或立体相机)来观察环境。从现在起,如果视觉 SLAM 系统分别使用单目相机、RGB-D 相机或立体(双目或多目)相机,则它们被称为单目 SLAM、RGB-D SLAM 或立体 SLAM。非常规的基于事件的视觉传感器,例如基于异步时间的图像传感器 (ATIS) [98] 和动态的有源像素视觉传感器 (DAVIS) [11],在 [64, 131, 132] 中被提出,也可用于解决 SLAM 问题。它的操作原理是受生物学启发的,它不是以设定的速率捕获帧,而是异步捕获事件,这些事件是独立像素亮度的时间戳变化。由于其从环境中获取信息的独特方式,需要进行范式转换来构建适应此类信息的算法。基于事件的 SLAM 超出了本文的范围,感兴趣的读者可以参考 [41] 中的综合调查。一些 SLAM 系统仅依赖于视觉测量,而另一些则通过不同的观察来增强它们,例如距离或惯性测量。多种类型的观察结果的融合可能会增加算法的复杂性,需要更多的计算资源,并增加平台的成本。但是,它使系统更可靠,对异常值更鲁棒,并且对故障具有弹性。要选择适合已开发的视觉 SLAM 系统的视觉传感器,应考虑以下几点。根据单个单目框架的观察是不可能辨别环境的尺度的。为了弥补这一点,单目 SLAM 系统采用不同的方法来推断深度,例如使用一组一个或多个其他传感器来获得可以推断深度的测量值、使用神经网络假设观察到的特征的深度,或者通过利用有关环境的先验信息,例如观察到的特征的大小。RGB-D 相机可以提供有关单帧深度的信息,但它们对光非常敏感,这可能会限制它们的应用场景或它们可以成功运行的环境。立体相机克服了单目和 RGB-D 相机的局限性,但它们更昂贵且更耗费计算资源。视觉传感器的选择还取决于要使用的机器人平台。例如,地面车辆对车载传感器的重量没有任何限制,这使得所有选项都可以选择。然而,如果要使用飞行器,单目相机似乎是最方便的选择,因为它可以无缝地安装在机上,因为它重量轻、体积小、功率要求低。然而,所采用的算法必须处理获得的视觉观察的尺度不确定性。视觉测量可以在不同的细节层次上进行处理。直接法 SLAM 系统,例如:[34, 85, 86],处理图像中所有像素或像素子集的强度。然后,基于亮度一致性约束[139],在多个观测值之间建立对应关系。另一方面,基于特征的 SLAM 以具有独特属性的特征为目标,并且可以通过所采用的检测算法重复检测。这种系统的例子包括 [65, 91, 97]。特征可以分为不同的等级;点、角和线等低级特征,斑点和平面等中级特征,以及语义标记的对象等高级特征,如图 1 所示。视觉 SLAM 系统可能采用单个 [23 , 45, 88] 或不同特征级别的混合 [10, 54, 138]。在我们的综述中,我们根据用于执行定位和建图的特征对最先进的基于特征的视觉 SLAM 解决方案进行分类。在每个类别中,都对所采用的 SLAM 的实现进行了彻底的讨论和比较。强调每个类别的优缺点,最后强调开放的研究问题。1.1 SLAM 的现有调查提出的 SLAM 方法由该领域的几位研究人员进行了调查,并强调了迄今为止的开放研究问题。图 1 从同一视觉框架中提取的不同视觉特征。左:低级特征(SURF [6]),中:中级特征(平面),右:高级特征(语义标记的对象)在 [14] 中,作者认为 SLAM 正在进入鲁棒感知时代并在可扩展性、鲁棒性和表示等几个性能指标方面彻底讨论了最先进解决方案的主要特征。此外,论文还讨论了硬件和算法层面的最新进展,并指出了尚待解决的研究问题。[139] 对基于关键帧的 SLAM 方法进行了全面回顾,其中介绍了基于关键帧的单目 SLAM 的一般架构和相应的实现方法。在 [109] 中进行的调查针对 SLAM 方法,这些方法忽略了所研究的环境是静态的假设,并解决了重建动态环境所采用的基础技术。同样,[96] 中提出的调查研究了可以在动态环境中运行的 SLAM 方法,以及那些使用可以通过视觉传感器获得的异构数据的方法,例如:颜色、深度和语义信息。依赖于观察场景中原始特征的视觉 SLAM 方法在 [44] 中进行了调查,并根据用于这些特征的描述符进行分类,强调了它们的优缺点。[141] 中提供了对视觉里程计和视觉 SLAM 的结构的概述,以及基础公式和设备选择。类似地,在 [40] 中,基于 SLAM 主要构建的实现分析了视觉 SLAM 的解决方案,并分析了它们在动态环境中的失败。[120] 中回顾的 SLAM 方法分为基于特征的方法、直接方法和基于 RGB-D 的方法。对 2016 年最先进的解决方案进行了比较,随后是与上述类别相关的一组开放研究问题。最后,可以在 [115] 中找到最近关于 SLAM 的一项调查,重点是语义。在本文中,我们对最新最先进的基于特征的视觉 SLAM 系统进行了全面调查,我们根据元素(即特征)对回顾过的方法进行分类,它们从视觉框架中提取以定位机器人和重建环境。这些特征属于以下类别之一:低级、中级或高级特征。因此,所回顾的方法分类如图 2 所示。图 2 基于特征的视觉 SLAM 方法分类我们的综述为有兴趣研究基于特征的视觉 SLAM 的各种实施选项和进展的研究人员提供了全面的参考。属于同一特征级别类别的方法会根据它们完成的其他目标进一步分组,例如实时性能、处理场景动态以及对数据关联失败的恢复能力。列出并分析了使这些目标成为可能的技术。这将帮助读者准确地确定这些方法中的每一种是什么,以及他们需要采用和/或改进哪些实施方法来开发一个可以实现一组特定目标的系统。本文的其余部分安排如下,通用 SLAM 系统的结构在第 3 节中介绍。图 2 中详细讨论了 SLAM 构建块以及不同的实现选项。第 3 节提供了对基于特征的视觉 SLAM 系统及其设计选择的回顾和分析。第4节我们强调了我们的综述结果并确定需要进一步调查的未解决问题。2 SLAM 构建块在深入研究当前最先进解决方案的实现细节之前,简要讨论视觉 SLAM 的常见组件,包括(1)地图/轨迹初始化,(2)数据关联,( 3) 闭环,(4) 重定位,和 (5) 估计算法,如图 3 所示。首先提供每个组件的目的,然后是最流行的实现方法(如果适用)。图 3 SLAM 流水线2.1 地图/轨迹初始化在新环境中开始机器人任务时,其先验地图不可用,因此有必要估计周围环境的 3D 结构以及机器人相对于它的位置.这是对地图的初步评估,将根据在整个任务中收集的传感器测量结果进行迭代更新。此过程仅需要在启动时引导系统。当使用不同的传感器时,有几种方法可以进行初始化。例如,一个深度帧或一个立体对足以初始化地图,如 [97, 118] 中所述,因为它们提供了单目帧所缺乏的深度和比例信息。另一方面,可以在单目相机运行时手动进行初始化,例如[32],其中系统提供了有关观察到的场景的先验信息,包括四个特征的位置和外观,解决了尺度不确定性问题。地图初始化常用的其他算法示例是迭代最近点 (ICP) [8, 20]、图像对齐 [80, 112]、五点算法 [114] 以及模型拟合算法,例如随机样本抽取 (RANSAC) [38] 或 MLESAC [ 123],以及相对于相机的逆深度参数化,用于参数化观察到的特征[25]。运动学模型,例如 [22] 和惯性测量的积分,如 [29] 中所述,可用于初始化轨迹。2.2 数据关联在环境中进行运动时,机器人可能会多次感知同一区域。建立每次观察相同场景时收集的图像帧之间的对应关系,对于估计地图和机器人的轨迹至关重要,被称为数据关联。基于特征的方法以特征为目标,这些特征是图像中表现出独特属性的区域。特征可以有不同的尺度:低级特征,如几何基元;中级特征,如超像素;或高级特征,如语义标记的对象。特征最关键的特征是可重复性,这使得特征在出现在从不同视点拍摄的多个帧中时可重复检测。为了检测图像中的特征,文献中针对不同的特征类型提出了几种检测器。对于低级特征,例如点、线、边和角,表 1 显示了特征检测器和描述符的一些示例。检测到特征后,将其与其周围像素一起从图像中提取,然后分配一个定量度量,称为描述符,以方便与其他特征匹配。表 1 特征检测器和描述符为了检测图像中的平面,使用了模型拟合算法,例如 RANSAC。还可以结合建模和卷积神经网络 (CNN) 来识别图像中的平面,例如墙壁 [136]。对于高级特征,提出了几种用于检测对象并在图像中对它们进行语义标记的技术,包括但不限于条件随机场 (CRF) [51]、支持向量机 (SVM) [30] 和深度神经网络(例如:single shot multi-box detector(SSD)[74],you only look once (YOLO) [104])。可以在两幅图像中的特征之间(2D-2D 匹配)、3D 地图中的一个点与其在图像帧上的投影之间(3D-2D 匹配)或两幅图像之间建立低级特征之间的对应关系。重建地图中的 3D 点(3D-3D 匹配)[140],如图 4a 所示。图 4 数据关联和闭环示例将当前图像中的特征与另一图像中的特征(2D-2D)匹配是通过在第二张图像中的窗口内搜索来执行的,该窗口包含当前图像中特征的位置。如果两个图像之间的转换是已知的,则搜索将减少到一维,因此可以建立对极几何[50]。特征描述符之间的相似性可以根据它们的类型使用不同的量来衡量,例如距离平方和、L1/L2 范数或汉明距离等等。由于它们的高计算要求,这些措施可能会阻碍系统的性能,并且可以被类似于 [89] 的 kd-tree 搜索或诸如 [42] 的二元词袋方法所取代。当需要在给定环境的 3D 结构的情况下估计相机的位姿时,3D-2D 匹配是必要的。将假设姿势周围的 3D 点投影到当前图像帧上。然后使用前面提到的技术将二维投影与图像中的 2D 特征进行匹配。在重新访问一个位置时,即关闭一个循环,相应的 3D 地标被匹配 (3D-3D),从而产生一个校正的、无漂移的路径。通过比较平面参数(例如法线(例如:[54])、重叠以及在当前帧中检测到的平面与地图中可用的那些(例如[138])。如果距离低于特定阈值,则建立对应关系。否则,会在地图中添加一个新平面。为了建立语义标记的地标之间的对应关系,预测标签用于将检测与地图中的地标相关联。如果环境中出现同一对象类别的多个实例,则必须超过它们之间的最小距离阈值才能考虑在地图中插入新的地标[10]。否则,检测与其最近的地标相关联。在最近提出的 SLAM 解决方案 [95] 中,对象在类别级别被检测和表征,而不仅仅是实例级别。这是基于这样一个事实,即一个类中的所有对象都具有共同的 3D 点,而与它们的不同类别无关。下一节将更详细地讨论数据关联的其他方法。2.3 闭环随着机器人完成其任务,来自多个来源的误差累积导致估计偏离真实轨迹(一个例子如图4b所示)。这种漂移可能会严重影响环境的重建,从而导致正在进行的机器人任务失败。为了纠正这种漂移,文献中提出了几种技术来检测回环闭合,即检测当前观察到的场景是否被机器人更早地评估,从而实现全局一致性。全局一致性是 SLAM 估计近似匹配地面实况并且重建地图符合观察区域的真实拓扑结构的条件。然而,局部一致性是指观察结果在局部匹配但可能不是全局匹配的情况[84]。闭环通常涉及两个主要步骤:视觉位置识别和几何验证。前者可以使用 kd-tree 搜索 [75]、词袋方法 [63]、贝叶斯过滤 [2]、深度学习 [43, 135] 和视觉特征匹配 [53, 79] 来完成,而后者可以通过图像对齐和 RANSAC [38] 来实现。2.4 重定位重定位是 SLAM 系统从机器人运动到任意位置的致命定位失败中恢复的能力。这种失败可能是由于多种原因造成的,例如突然运动、运动模糊或缺少特征 [139]。此外,机器人车辆可能会通过不受机器人控制的操作重新定位,在这种情况下,机器人的全局位置将被确定 [12]。这些情况被称为绑架机器人问题 [35],可以使用多种技术解决,包括但不限于匹配特征描述符 [71]、重新观察语义标记对象 [48、106]、极线几何[82],或二元词袋方法 [91, 105],2.5 估计算法估计算法需要解决 SLAM 约束,可以分为批量处理和增量算法。批量处理算法,例如全局束调整 (GBA) [125] 和全图 SLAM [122],处理机器人收集的大量测量值,需要相对较长的时间,来重建环境的地图以及机器人的轨迹。另一方面,增量算法在新测量值到达时计算地图和轨迹的估计值。一些增量算法,如 [61] 对整个机器人任务收集的整个测量值集进行操作,而其他算法,如 [60] 对在一小段时间内收集的这些测量值的子集进行操作,这有助于在线操作方式。虽然批量处理算法成功地实现了全局一致性,但它们的计算成本很高,因此可能会阻碍实时操作。此外,由于内存资源有限,它们可能不适用于大规模环境或连续操作系统,这强调了不受此类限制的增量算法的重要性。当运用增量算法进行估计时,由于增量算法不考虑所有的测量值,故而使用所有旧的数据进行关联决策是不可能的,与其他算法相比,这可能会增加累积误差。在下文中,批量处理算法,例如 GraphSLAM [122] 和 GBA [125],以及增量算法,例如扩展卡尔曼滤波器 (EKF) [122]、增量平滑和映射 [60、61],以及局部捆绑调整(LBA)[87],进行简要介绍。2.5.1 扩展卡尔曼滤波器 (EKF) [122]给定一段时间内记录的多个测量值,可能来自多个传感器,EKF 估计被观察系统的状态。系统的状态由环境和机器人车辆的状态组成。前者描述了在环境中观察到的地标的姿态,而后者描述了车辆的运动学。估计过程涉及过滤每个与测量相关的噪声,以减少估计状态的整体不确定性。然后,EKF根据从环境中收集的测量结果,通过多次预测迭代和更新来估计系统的状态,如图5所示。图 5 扩展卡尔曼滤波器算法 [108]2.5.2 因子图 SLAM [122]正如该算法的名称所表示的那样,一个图用于重建环境地图以及机器人在其中的轨迹。地图特征和机器人姿态表示为顶点,并使用编码两种非线性约束的边连接:运动和测量,如图 6a 所示。所有约束的总和使 SLAM 成为非线性最小二乘问题。为了获得全局一致的估计,首先对所有约束进行线性化,产生稀疏信息矩阵和信息向量。由于矩阵的稀疏性和为了更有效的计算,使用变量消除算法减小了矩阵的大小。然后采用推理方法来找到图节点的姿势分配,从而最大限度地减少由约束施加的误差。或者,可以单独使用环境中的连续机器人姿势来利用姿势图[119]估计机器人的位置。该问题中使用的图包括作为节点的机器人姿态和作为这些节点之间的边的运动约束,如图 6b 所示。捆绑调整 (BA) [125] 是因子图 SLAM 的一个实例,可以定义为一个细化过程,该过程使用从环境中收集的一系列图像同时优化图 6 因子和位姿图示例3D 结构、相机轨迹以及可能的校准参数,如图所示在图 7 中。评估系统误差的成本函数被最小化,以产生改进的重建估计。如果在估计中考虑了自机器人任务开始以来的所有测量,则该过程称为 GBA,并且已知计算量很大,这会阻碍在线操作 [36]。在 [87] 中提出了一种计算效率更高的方法,即增量调整 3维重建和相机轨迹,称为局部束调整 (LBA)。在接收到新测量时,仅调整 n 个最近帧的窗口。使用 LBA 可以实时执行 SLAM。图 7 束调整示例ParallaxBA 是 [145] 中提出的 BA 的另一种变体,其中使用视差角而不是其欧几里得坐标或反深度对特征进行参数化,ParallaxBA 在准确性和收敛性方面优于传统 BA。2.5.3 增量平滑和映射增量平滑和映射是一种 SLAM 方法,它在从环境中收集测量值的同时逐渐计算地图和机器人轨迹的估计。文献中提出了几种方法,其中最流行的是 iSAM [61] 和 iSAM2 [60]。iSAM 使用平方根信息矩阵的 QR 因子分解来执行平滑,而 iSAM2 对称为贝叶斯树的新数据结构进行操作,该数据结构是从因子图中获得的。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。