文章目录

  • SLAM 研究的时代划分

    • the classical age (1986 - 2004)
    • the algorithmic-analysis age (2004 - 2015)
    • the robust-perception age (now)
  • 自主机器人真的需要SLAM吗?
  • SLAM问题被解决了吗?
  • SLAM算法鲁棒性
    • SLAM算法鲁棒性面临的主要挑战

      • 数据关联(data association)
      • 恶劣环境(harsh environment)
    • 研究现状
      • 前端短期数据关联(short-term data association)
      • 前端长期数据关联(long-term data association)
        • 前端回环闭合检测(loop closure detection )
        • 前端回环闭合验证(loop closure validation)
      • 后端回环闭合验证
      • 动态环境的处理
    • 待解决的问题(open problem)
      • SLAM失效保护和恢复(failsafe SLAM and recovery)
      • 对硬件失效的鲁棒性(robustness to HW failure)
      • 几何重定位(metric relocalization)
      • 随时间变化的、可变形的地图(time varing and deformable map)
      • 自动化调参(Automatic parameter tuning)
  • SLAM的场景尺度(scalability)
    • 研究现状

      • 节点、边缘稀疏化(node and edge sparsification)
      • 去中心化(并行)SLAM(out-of-core (parallel) SLAM)
      • 分布式多机器人SLAM(distributed multi robot SLAM)
    • 待解决的问题
      • 地图维护(map maintenance)
      • 鲁棒分布式建图(robust distributed mapping)
      • 学习,遗忘,记忆(learning, forgetting, remembering)
      • 资源有限的平台(resource-constrained platform)
  • 地图表示:几何度量推理(metric reasoning)
    • 稀疏路标表示(landmark-based sparse representation)
    • 低层原始数据稠密表示(low-level raw dense representation)
    • 边界和空间分割稠密表示(boundary and spatial-partitioning dense representation)
    • 基于物体的高阶表示(high-level object-based representation)
    • 待解决的问题(open problem)
      • SLAM中的高层表示(high-level, expressive representations in SLAM)
      • 最优表示(optimal representations)
      • 自动、自适应表示(automatic, adaptive represetation)
  • 地图表示:语义推理(semantic reasoning)
    • 语义SLAM vs 拓扑SLAM(semantic SLMA vs topological SLAM)
    • 语义的结构和具体内容(semantic SLAM: structure and detail of concepts)
    • 语义建图的研究现状
    • 待解决的问题(open problem)
      • 语义建图不只是一个分类问题
      • 忽略、察觉和适应(ignorance, awareness, and adaptation)
      • 基于语义的推理
  • SLAM中的新理论工具
  • 主动SLAM(active SLAM)
  • SLAM中的新传感器

本文为对综述论文Simultaneous Localization And Mapping: Present, Future, and the Robust-Perception Age的理解和心得,本文受众为,对SLAM问题有一个全面的基础认知,想进一步寻找SLAM研究方向的童鞋。
对该综述论文的学习还可以参考:
【泡泡机器人翻译专栏】SLAM: 现在,未来和鲁棒年代(一)
【泡泡机器人翻译专栏】SLAM: 现在,未来和鲁棒年代(二)
【泡泡机器人翻译专栏】SLAM: 现在,未来和鲁棒年代(三)
【泡泡机器人翻译专栏】SLAM: 现在,未来和鲁棒年代(四)
【泡泡机器人翻译专栏】SLAM: 现在,未来和鲁棒年代(五)

SLAM 研究的时代划分

Cadena等人把SLAM问题的研究划分为3个时代:

  1. the classical age (1986 - 2004)
  2. the algorithmic-analysis age (2004 - 2015)
  3. the robust-perception age (now)

the classical age (1986 - 2004)

在SLAM问题研究的前20年,主要是提出问题和理清框架,这一阶段的主要有两个成果:

  1. 对SLAM问题,引入了一些主要的概率形式表述框架(probabilistic formulation),包括基于扩展卡尔曼滤波器(Extended Kalman Filters),Rao-Blackwellised 粒子滤波器(Rao-Blackwellised Partical Filter)和极大似然估计的方法(Maximum Likelihood Estimation);
  2. 指出了SLAM问题在效率(efficiency)和鲁棒的数据关联(robust data association)方面面对的挑战。

the algorithmic-analysis age (2004 - 2015)

这一阶段对SLAM问题进行算法上的分析,主要成果为:

  1. 研究了SLAM问题的基本性质,包括可观测性(observability),收敛性(convergence)和一致性(consistency);
  2. 理解了SLAM问题的稀疏性(sparsity),更具体一点,是理解了增量方程中H矩阵结构的稀疏性,这对于SLAM的效率起着至关重要的作用。
  3. 一些主要的开源SLAM框架也在这一阶段被开发了出来。

the robust-perception age (now)

Cadena等人认为,在我们正处于的这个时代,这个阶段SLAM领域的研究有以下特点:

  1. 鲁棒性能(robust performance)。未来的SLAM系统能够在任意环境下以低失效率长期运行,包含失效保护机制,有自动调参的能力,也就是能够调整系统参数来适应不同的场景;
  2. 高层次的理解能力(high-level understanding)。未来的SLAM系统不仅能够实现基本的几何重建,还能在更高的层次上理解环境信息(e.g., semantic, affordances, high-level geometry, physics);(affordance指的是,对于给定的环境或者物体,给定的机器人可以采取的动作的集合)
  3. 资源敏感(resource awareness)。未来的SLAM系统可以被裁剪以适应实际的传感器和可用计算资源,也可以根据可用计算资源调整计算负载(我理解这里的意思是,如果计算资源充足,可以充分利用计算能力提高精度)。
  4. 任务驱动的推理(task-driven inference)。未来的SLAM系统能够生成自适应的地图表示(adaptive map representations),地图表示的复杂性取决于机器人所要执行的任务。

自主机器人真的需要SLAM吗?

要回答这个问题,必须先理解是什么使得SLAM如此独特。SLAM旨在通过同时利用运动观测信息和回环闭合信息,建立一个全局一致的环境表示。其中回环闭合是至关重要的,如果去掉回环闭合,SLAM就退化为里程计。在一些早期的应用中,轮式编码器被作为里程计使用。使用轮式里程计估计位姿,很快就会发生漂移,移动几米后估计出的位姿可能就无法使用了 。而对外部路标的观测可以有效一致轨迹漂移,甚至能纠正它,这是发展SLAM的主要原因之一。然而,近期的一些基于视觉和惯导信息的里程计算法,漂移非常小(小于轨迹长度的0.5%)。因此这个问题就变得合理了:我们真的需要SLAM吗?我们的回答分为三部分:

  1. 首先,我们发现过去十年中,视觉-惯性里程计代表了SLAM研究的最新进展。从某种意义上说,视觉-惯性导航(VIN, visual-inertial navigation)就是SLAM:VIN可以看作回环闭合(或场景识别)模块被关闭的SLAM系统。如果只考虑简单场景(比如航空中的惯性导航),可能并不需要SLAM,但是在更一般的情况下,实际场景会更具挑战性(比如,灭有GPS信号,低性能传感器),这就需要SLAM研究实际场景中的多传感器融合问题。
  2. 第二个回答与回环闭合有关。一个忽略回环闭合的高性能里程计,会将世界(环境)解释为一个“无穷的走廊”(infinite corridor),机器人会在这个“走廊”中不断探索新的环境。而回环闭合会告诉机器人,这个“走廊”其实不是无穷的,沿着走廊走可能会回到之前到过的位置。

    现在回环闭合的优势就很明显:通过回环闭合检测,机器人可以理解环境真正的拓扑关系,可以找到位置之间的最短路径(比如,图中的点B与点C)。那么,既然获得环境的正确拓扑关系是SLAM的重要价值,那么为什么不丢弃几何度量信息,只做位置识别呢?答案很简单:几何度量信息使得位置识别更加简单、更加鲁棒。几何重建可以检测回环闭合,并且可以剔除错误的回环闭合。因此,尽管SLAM在理论上可能是冗余的(一个可靠的位置识别模块就可以实现拓扑建图),SLAM可以天然地抑制错误的数据关联(data association)和感知混淆(perceptual aliasing,感知混淆指的是环境中不同的地点,有着相似的场景外观,会造成错误的场景识别)。从这个意义上讲,SLAM地图(就是前面说的几何度量重建结果)可以预测并验证测量的有效性,我们认为一点对于SLAM系统的鲁棒运行至关重要。
  3. 我们的第三个回答是,我们需要SLAM,
    不同的SLAM系统有着各自擅长完成的任务,因此一个机器人专家设计SLAM系统时,需要面对多种设计选择。比如,拓扑地图可以用来分析一个给定的位置是否可以到达,但是不适合用于运动规划和底层控制;局部一致的几何度量地图,适合用于避障和与环境的局部交互,但是它的精度不高;全局一致的几何度量地图,可以使机器人完成全局路径规划,但这种地图的计算和维护成本比较高。选择合适的SLAM系统的更一般的方法是,把SLAM看作一个计算充分统计量(sufficient statistic)的机制,这个充分统计量包含了机器人过去所有的观测。从这个意义上讲,压缩的地图表示中需要保留哪些信息,是与任务深度相关的。

SLAM问题被解决了吗?

这个一个再机器人领域经常被提起的问题,在我初学SLAM的时候,这是一个很困扰的问题,因为一些现有的开源框架如ORB-SLAM2、SVO、DSO和、OKVIS、VINS-Mono等,在算法框架上已经很成熟了,而且在数据集上也有着很好的表现,似乎剩下的工作就只是将它们工程化、实用化,根据实际应用需求进行微小改动而已。
Cadena等人认为,这个问题很难去回答,之所以很难回答,困难来自于这个问题本身:SLAM是一个很宽泛的话题,只有再在给定了,机器人平台/环境/性能要求(robot/environment/performance)的配置组合时,这个问题本身才能得到清晰的定义。
更具体的,可以根据以下几个方面的内容来评估一个SLAM问题的成熟度:

  1. 机器人平台(robot):

    • 运动类型(比如,动力学、最大运动速度);
    • 可用的传感器(比如分辨率、采样频率);
    • 可用的计算资源。
  2. 环境(environment):
    • 平面环境/3D环境;
    • 自然路标/人工路标;
    • 动态元素的数量;
    • 对称的数量(?ammount of symmetry);
    • 感知混淆的风险。这个方面的问题实际上取决于传感器与环境的组合情况:比如两个不同的房间对于2D激光雷达来说可能扫描结果很相似(感知混淆),但是相机可以根据外观信息区分它们。
  3. 性能要求(performance requirements):
    • 机器人状态估计的期望精度;
    • 环境地图表示的类型与期望精度(比如,基于稀疏路标或者稠密点云);
    • 成功率(这里的成功率指的是,满足精度边界的测试结果占测试总量的比例);
    • 估计延时(estimation latency);
    • 最大运行时间;
    • 最大地图尺寸(地图面积或者地图体积);

举个例子,使用机器人构建一个室内环境的2D地图,机器人配置了轮式编码器和激光扫描仪,期望有足够的精度(<10cm)和鲁棒性(简单来说,就是低失效率),这种SLAM问题可以认为已经被解决。类似的,运动缓慢的机器人(比如火星探路车,室内机器人)使用的基于视觉的SLAM和视觉-惯性里程计被认为是成熟的研究领域。而另一些机器人平台/环境/性能要求配置下的SLAM问题,仍然需要大量的基础研究。当机器人运动或者环境条件过于具有挑战性时(比如机器人快速运动,高度动态的环境),当前的SLAM系统很容易失效。当前的SLAM系统通常也无法满足苛刻的性能要求,比如快速估计以用于机器人的闭环控制。

SLAM算法鲁棒性

SLAM算法鲁棒性面临的主要挑战

数据关联(data association)

数据关联错误,是导致SLAM算法失效的一个主要原因。数据关联把观测值和相应的状态进行关联。以特征点法视觉SLAM为例,它把每一个特征点与相应的路标点进行关联。感知混淆(perceptual aliasing,感知混淆是指,对于不同的输入,传感器感知到了相同信号的现象)使得正确的数据关联变得特别困难。感知混淆会使数据关联建立错误的观测-状态(measurement-state)匹配关系(false positive,假阳性),这会导致后端优化作出错误的状态估计。

如果没有对环境的动态性(包括短期变化和长期的季节性变化)进行建模,数据关联错误的情况会很严重。当前的SLAM系统,通常都会假设机器人所处的环境是静态的。对于小尺度场景下的单次建图,如果环境在短期内没有动态性(比如没有人或者其它物体在周围移动),那么静态环境假设(static world assumption)是可取的。但是如果在更长的时间尺度和更大的空间尺度上进行建图,环境的变化是不可避免的,这种情况下静态环境假设就不合理了。环境的变化来自很多方面:昼夜变化,季节变化(比如树叶的变化),环境结构的变化(比如旧建筑物翻新)。这些环境变化都会影响SLAM系统的性能。比如:昼夜极端的光照变化,会使得依赖视觉特征复现性的SLAM系统失效;旧的环境结构消失,会导致基于环境几何结构的SLAM系统失效。

恶劣环境(harsh environment)

SLAM算法鲁棒性面临的另一个挑战,是其在恶劣环境下的运行,比如水下环境。这些恶劣环境下面临的挑战是:低能见度(low visibility),持续变化的环境,以及无法使用一些常用传感器(如激光雷达等)。

研究现状

前端短期数据关联(short-term data association)

由数据关联错误造成的鲁棒性问题,既可以在SLAM系统的前端进行处理,也可以在SLAM系统的后端处理。一般来说,SLAM前端建立的数据关联是可信的。短期的数据关联是最容易处理的:如果传感器的采样频率,相比于机器人自身的运动足够快的话,那么对于同一3D路标的跟踪就比较容易。比如,我们想从连续图像中跟踪一个3D点,且假设图像的帧率足够高,那么基于描述子的普通匹配方法,或者光流法就可以实现可靠的跟踪。直观上讲,在高帧率情况下,传感器(摄像头、雷达)的视角变化不大,因此t+1时刻的特征与t时刻的特征非常接近(相比于长期数据关联,短期的数据关联问题更加简单,关联结果更加可靠,这也是视觉/惯性里程计比SLAM简单的原因)。

前端长期数据关联(long-term data association)

在SLAM前端进行长期数据关联更具有挑战性,它包括回环闭合的检测和验证(loop closure detection and validation)。

前端回环闭合检测(loop closure detection )

对于SLAM前端的回环闭合检测,一个比较直观的方法就是,在当前观测(比如图像)中检测特征,将其之前所有检测到的特征进行对比,但考虑到计算量,这种暴力求解方法是不切实际的。词袋模型(bag-of-words)通过对特征空间进行量化,从而实现了更加有效的搜索,避免了暴力搜索。词袋模型可以设计为层级式字典树(hierarchical vocabulary tree),这种结构可以实现大规模数据集中的高效查找。

基于词袋模型的方法,在单次任务回环闭合检测中表现出了非常可靠的性能。但是这些方法无法处理剧烈的光照变化,因为光照剧烈变化时,就无法与字典树中的视觉单词(visual word)匹配上了。为了处理这个问题,有的方法匹配图像序列,有的方法把不同的视觉特征整合为同一的表示,还有的方法同时使用空间信息和视觉特征,视觉场景识别的详细内容可参考综述论文Visual Place Recognition: A Survey。在基于激光雷达的SLAM前端,基于特征的方法也可以用来进行回环闭合检测。

前端回环闭合验证(loop closure validation)

回环闭合验证,指的是通过额外的几何验证步骤来确保回环闭合的质量。在基于视觉的方法中,通常使用RANSAC进行几何校验,剔除离群点(outlier)。在基于激光雷达的方法中,激光雷达通过之前的扫描已经建出了地图,可以通过计算当前激光雷达的扫描值与地图的匹配度,来完成对回环闭合的验证。

后端回环闭合验证

尽管可以通过各种方法去增强SLAM前端在回环闭合检测中的鲁棒性,错误的回环闭合检测还是无法被完全避免,比如出现感知混淆(perceptual aliasing)的时候。SLAM后端获取错误的回环闭合检测信息,会严重影响后端极大后验估计(MAP)的质量。为了处理这个问题,有研究者提出了一些方法,可以使SLAM后端对于前端传递过来的错误回环闭合信息更加鲁棒。有些方法在后端优化中添加与回环闭合相关的残差项,通过残差值推断回环闭合检测的正确性。在有一些方法中,与里程计数据相悖的回环闭合检测结果被认为是错误的回环检测,进而在后端优化之前,获取关于错误回环检测的先验信息。

动态环境的处理

动态环境对SLAM算法研究的挑战主要有两方面:

  1. SLAM系统需要检测、丢弃和跟踪环境中的变化。目前的主流方法选择剔除环境中动态变化的部分,但也有一些研究把动态变化的元素作为环境的一部分进行建模。
  2. SLAM系统需要对环境中的永久变化(permanent change)或半永久变化(permanent change)进行建模,系统需要理解什么时候应该更新地图,以及该如何更新地图。现有的SLAM系统在处理动态场景时主要有两种方式:一是维护同一个位置的多个地图;二是只维护一个地图,但是构建地图的参数是时变的。

待解决的问题(open problem)

SLAM失效保护和恢复(failsafe SLAM and recovery)

尽管SLAM后端已经取得了很大进步,现在的SLAM系统求解器在出现离群点(outlier)时依然很脆弱。这主要是因为,几乎所有的鲁棒SLAM方案都是基于非凸目标函数的迭代优化,这会导致两个结果:第一,离群点的去除效果取决于优化过程中初始估计的质量;第二,系统具有内生的脆弱性:后端优化即使只使用了一个离群点,都会降低状态估计的质量,糟糕的状态估计又会反过来降低系统剔除后续离群点的能力。

一个理想的SLAM系统应该具有失效保护和失效侦测的能力,系统必须能检测到突发的失效情况(比如由离群点或者硬件老化造成的失效),要有恢复机制进行适当操作,使得系统能够重新正常工作。现有的SLAM系统没有这些功能。

对硬件失效的鲁棒性(robustness to HW failure)

解决硬件失效问题并不属于SLAM的研究范畴,但硬件失效会影响SLAM系统,SLAM系统反过来会对,检测、减少传感器失效和运动失效,发挥重要作用。如果传感器精度由于硬件故障或老化而降低,那么传感器的测量(包含噪声和偏置),就不再与后端优化中所使用的传感器噪声模型相匹配,这会导致较差的估计结果。这就引出了各种需要研究的问题:如何检测传感器的不良运行状态?如何相应地调整传感器噪声模型中的协方差和偏置?

几何重定位(metric relocalization)

几何重定位,是指估计机器人当前时刻,在已建地图中的位姿。相对于基于特征(feature-based)的重定位,基于外观(appearance-based)的重定位能在昼夜、不同的季节之间实现回环闭合检测,但得到的回环闭合结果,本质上是拓扑的,是没有几何度量信息的。对于几何度量重定位来说,基于特征的方法仍然是最常用的,而这种方法不能被扩展到昼夜、不同季节场景下的重定位。

目前很多SLAM系统都选择视觉传感器(摄像头),魂环闭合问题变成了一个传感器信号匹配的问题。尽管摄像头是主要的传感器,其它的传感器数据和SLAM系统中的一些其它信息也可以用于帮助重定位。Brubaker等人使用轨迹(trajectory)匹配来克服相机的缺陷;先使用一种传感器模式进行建图,然后再建好的图中使用另一种传感器模式进行重定位,这也是一个研究方向。

另一个问题是,如何根据不同来源、不同视角的传感器数据进行定位。Forster等人研究了在激光雷达地图中的视觉定位问题。Majdik等人研究了如何在Google街景图片的3D纹理图上定位无人机。Behzadin等人展示了如何使用激光扫描仪在手绘地图中定位。Winterhalter等人演示了如何在给定的2D户型图上,使用RGB-D传感器进行定位。

随时间变化的、可变形的地图(time varing and deformable map)

主流SLAM系统都假设世界是静止的,然而由于物体的动态变化,以及物体天然的变形特性,真实世界不是一成不变的。一个理想的SLAM方案应该能够处理环境中的非刚体性(non-rigidity)等动态因素,能够长时间工作生成全地形图(“all terrain map”),而且能够实时完成这些工作。

在计算机视觉领域,从80年代起就有研究尝试恢复非刚性物体的形状,但它们只能在限定条件下使用。比如Pentland等人的论文需要知道关于目标力学性质的先验性息。Bregler等人的论文需要对目标的变形进行限定,他们展示了人脸形状恢复的例子。近期的非刚体SFM研究成果,限定条件减少了,但仍然只能应用于小场景。在SLAM领域,Newcombe等人解决了非刚体场景下的小规模重建问题。然而,非刚体场景的大规模重建问题仍有待研究。

自动化调参(Automatic parameter tuning)

SLAM系统(尤其是数据关联模块)需要大量的参数调整,以保证其在给定的场景中能够正常工作。这些参数包括控制特征匹配的阈值,RANSAC参数,向因子图中添加新因子的标准,判断回环闭合的标准。如果想要SLAM系统不经手动调整,就能在各种场景下使用,那就必须考虑参数自动调整。

SLAM的场景尺度(scalability)

现代SLAM系统已经成功地应用于室内场景。但在许多应用尝试中,比如用于环境检测的海洋探索机器人、城市中7天24小时工作的清洁机器人、大场景下的高精度农业机器人应用等,机器人需要在大场景中长时间工作。在这些应用中,随着运行时间增长,机器人不断探索新的位置,SLAM系统中因子图的规模随会一直增长,可能没有边界。而实际应用中机器人的计算时间和内存容量有限,因此设计出时间复杂度和内存占用有限的SLAM系统非常重要。

在最坏情况下,基于直接线性求解器的连续线性方法,其内存占用按照公式6中的变量数量的二次方增长。当使用线性迭代求解器(比如共轭梯度法)时,内存占用随着变量数量线性增长。当多次路过同一个地方时,情况可能会更复杂,因为节点(node)和边(edge)会被持续添加到同一个空间中,会破坏因子图结构的稀疏性,因此因子图优化的效率会变低。

研究现状

这一部分的内容,回顾了当前控制、或者说是降低问题规模增长的方法。我们主要关注两种降低因子图复杂度的方法:

  1. 稀疏化方法。为了节省内存和提高计算效率,损失一些信息;
  2. 去中心化(out-of-core)和多机器人方法。讲计算任务分配到多个机器人/处理器上。

节点、边缘稀疏化(node and edge sparsification)

这一类方法,通过减少添加到图中的节点的数量,或者裁剪具有较少信息(less “informative”)的节点和因子,来解决问题规模过大的问题。Ila等人使用信息论方法,只将非冗余节点和信息含量高的节点添加到图中。Johannsson等人尽量避免往图中添加新的节点,而是在现有节点之间引入约束,这样变量数量只取决于探索空间的大小,而不是运行时间。Kretzschmar等人提出了一种基于信息的评判标准(an information-based criterion),来决定将位姿图优化中的哪些节点进行边缘化。Carlevaris-Bianco和Eustice提出了线性约束因子(Generic Linear Constraint (GLC) factors),Mazuran等人提出了非线性图稀疏化(Nonlinear Graph Sparsification (NGS) ),这两种方法在一个边缘化节点的马尔可夫毯(markov blanket)上进行操作,它们计算出毯的稀疏近似。Huang等人通过求解一个L1范数最小化问题将Hessian矩阵稀疏化。

去中心化(并行)SLAM(out-of-core (parallel) SLAM)

SLAM并行算法,将因子图优化的计算任务分配给多个处理器。主要的思路就是将因子图拆分为子图,先对每一个子图进行局部优化,然后加上一个全局优化,这种方法通常被称为子图构建算法(submapping algorithm)。Ni等人展示了一种因子图优化的子图构建算法,还提出缓存子图的因子分解(cache the factorization of the submaps)来加速计算。Ni和Dellaert使用二叉树结构构建子图,并使用嵌套分割(nested dissection)来减少两个子树之间的依赖。Zhao等人提出了一种针对大场景SLAM的近似策略,他们先处理一个子图的序列,然后使用最小二乘法,以分治法(divide and conquer)的形式合并这些子图。Frese等人提出了一种多层松弛方法(multi-level relaxation approach)。Grisetti等人提出了一种子图层级结构:一旦有新的观测值,就改动最顶层的子图,只有被严重影响的区域,才在更底层的层级上去修改子图。Suger等人提出了一种基于层次分解(hierarchical decomposition)的SLAM近似方法。Choudhary等人通过ADMM算法(Alternating Direction Method of Multipliers)实现并行计算。Klein和Muray将定位和建图解耦为两个并行的线程。Sibley等人通过对局部邻域的相对参数化进行优化,来减少计算量。Strasdat等人采用了一种两步走的方法,首先优化局部位姿-特征图(pose-features graph),然后再优化位姿-位姿图(pose-pose graph)。Williams等人将因子图优化分解为两个线程:一个速度较快的滤波线程,和一个速度较慢的平滑线程,他们之间周期性地同步。

分布式多机器人SLAM(distributed multi robot SLAM)

一种实现大尺度场景建图的方法是使用多机器人SLAM,将整个大场景分成多个较小的区域,一个机器人负责一个小区域。这种方法主要有两个变种:

  1. 中心式(centralized)。在中心式方法中,机器人各自构建子地图,然后把局部信息传递给一个中心站,由中心站进行后续推断;
  2. 分散式(decentralized)。在分散式方法中,不存在做数据融合的中心站,各个agent通过局部通信实现估计的一致性。

Nerurkar等人提出了了一种基于分布式共轭梯度法的协作定位算法。Argues等人使用分布式雅可比方法估计一组2D位姿。Araguez等人调研了基于一致性的地图融合方法。Knuth和Barooah使用分布式梯度下降法估计3D位姿。Cunnigham等人使用高斯消元法,开发了一种称为DDF-SAM的方法,每个机器人通过隔离器(separators,多个机器人共享的变量)交换高斯边缘。

高斯消元法是最常用的方法,但是它有两个缺点:
第一,机器人之间需要交换的边缘值(marginal)是稠密(dense)的,而且通信代价是隔离器(separators,多个机器人共享的变量)数量的二次方。这就催生了使用稀疏化技术来降低通信代价的方法。

第二,高斯消元法需要对问题进行线性化,因此像DDF-SAM这样的方法需要很好的线性点,以及复杂的bookkeeping来确保多个机器人之间线性点的一致性。Choudhary等人提出Gauss-Seidel算法替代高斯消元法,这种算法的通信负担随隔离器数量线性增长。

待解决的问题

尽管有大量的研究工作致力于降低因子图优化的复杂度,SLAM系统在诸如长时间运行(long-term operation)等方面还有很长的路要走。

地图维护(map maintenance)

一个很少被研究的问题是,SLAM在长期工作的时候如何存储地图。即使在存储资源没那么紧张的情况下,比如将数据存储在云端,直接使用点云地图或者体素地图(volumetric map)这样的原始数据也是对存储资源的极大浪费。类似的在视觉SLAM中,视觉特征描述子所占据的存储空间很快就会变得很庞大。一些早期的方法最近被用来在压缩过的先验地图中进行定位,或者进行存储效率高的稠密重建。

鲁棒分布式建图(robust distributed mapping)

离群点(outlier)的去除在单机器人的情况下已经实现,但是在多机器人SLAM领域离群点的问题被忽略了。处理虚假的观测值非常有挑战性,这主要有两个方面的原因:

  1. 首先,多个机器人之间可能没有一个共同的参考坐标系,这使得检测和去除错误的回环闭合很困难;
  2. 其次,在分布式配置中,机器人需要从局部信息中检测离群点。这种方法也有待探索。

学习,遗忘,记忆(learning, forgetting, remembering)

在长期建图(long-term mapping)过程中,有很多有待解决的问题:以什么样的频率去更新地图中的信息?如何判断地图信息过期(outdated)且可以被丢弃?什么事件可以丢弃地图信息?哪些地图信息是可以被丢弃的?哪些地图信息是必须保留的?

这些问题都是与具体任务相关的(task-dependent),没有绝对的答案。

资源有限的平台(resource-constrained platform)

如何将现有的SLAM方案应用于计算资源非常有限的平台,也是一个有待解决的问题。当平台的尺寸变小时,这个问题就变得尤为重要,比如手机、微型无人机和机器昆虫等。许多SLAM算法计算成本很高,无法在这些平台上运行,因此需要开发能够平衡计算精度和计算成本的SLAM算法。在多机器人场景下也面临着资源限制的问题:如何保证机器人编队在带宽资源有限和通信不稳定的情况下可靠地运行?Cielewski等人提出的“版本控制”(“version control”)方法是在这个方向的最早尝试。

地图表示:几何度量推理(metric reasoning)

几何度量地图,是编码环境几何信息的符号结构(symbolic structure)。在SLAM中,如何为SLAM选择合适的几何度量地图(或者扩展机器人当前所使用的几何度量地图),会影响许多研究领域,包括长时间导航、与环境的物理交互、人机交互。

在2D情况下,构建环境的几何模型相对简单,只有两种主要范式:

  1. 路标地图(landmark-based maps)。在路标地图中,环境被建模为路标的稀疏集合
  2. 栅格地图(occupancy grid maps)。在栅格地图中,环境被离散化为许多栅格,每一个栅格会被赋予一个概率值,该值表征了这个栅格被占据的概率。

2D环境中地图的标准化问题,已经被IEEE RAS Map Data Representation Working Group解决了,可参见他们的论文IEEE Standard for Robot Map Data Representation for Navigation。这个标准定义了平面环境的两种几何度量地图表示(还有拓扑地图),用于数据交换(data exchange),参照基准(benchmarking)和技术转移(techonology transfer)。

3D环境的集合建模相对复杂(delicate),如何有效地对3D环境进行几何建模,仍处于研究的早期阶段。下面会以一个跨越机器人学(robotics)、计算机视觉(computer vision)、计算机辅助设计(CAD, computer aided design)和计算机图形学(computer graphics)的广阔视角,回顾3D环境的几何建模方法。

稀疏路标表示(landmark-based sparse representation)

大多数SLAM方法把环境表示为3D稀疏路标的集合,这些路标对应着环境中有区分度的特征(比如线、角点等)。比较典型的例子有ORB-SLAM生成的稀疏点云地图:

这种地图通常被称为基于路标的表示(landmark-based representation)或者基于特征的表示(feature-based representation)。在SLAM的早期研究中,基于稀疏路标表示的地图就被广泛应用于移动机器人。这种地图都有一个共同的假设前提:路标是有区分度的。具体来说,传感数据不仅可以提供关于路标的几何方面的数据,还要提供一个描述子,用来建立测量值与对应路标之间的数据关联。大量稀疏路标地图的工作集中在点特征的估计,机器人领域将稀疏路标地图扩展到了更加复杂的几何路标,包括线、区域和圆弧等。

低层原始数据稠密表示(low-level raw dense representation)

与基于稀疏路标表示的地图不同,稠密表示旨在提供高分辨率的3D几何模型,这种模型更加适合机器人避障和路径规划,或者用于可视化和渲染:

在这些稠密表示模型中,低层原始数据描述3D几何信息的方式有:使用非结构化的点集(点云)、使用多边形集合(polygon soup)等。通过使用双目相机、RGBD相机以及3D激光扫描仪等传感器,点云模型(point cloud)已经在机器人领域中被广泛应用。点云模型最近在单目直接法SLAM中流行起来,这种方法直接使用所有图像像素的亮度值,估计机器人运动轨迹和构建环境的3D模型。

面元地图(surfel map, sufel 是surface element的缩写,在3D计算机图形学中,面元模型是多边形模型的一中替代选择)稍微复杂一些的表示,面元地图用圆片集合(a set of disks)编码几何信息。

这些稠密表示地图的视觉效果很好,但是它们很笨重,因为需要存储大量的数据。而且这种地图对几何信息的描述是低层级的,它们忽视了障碍物的拓扑结构。

边界和空间分割稠密表示(boundary and spatial-partitioning dense representation)

不同于使用低层数据的非结构化点云地图,边界和空间分割稠密表示显式地对表面(边界)和体积进行建模。

边界表示通过物体的表面边界对其进行3D建模。基于平面的模型是一种比较简单边界表示模型,更加一般的边界表示包括基于曲线的表示(比如NURBS或B-splines的张量积),表面网格模型(相互连接的一些列多边形)和隐式曲面表示(通过一个定义在R3上函数的零点来确定表面,这类函数包括径向基函数、符号距离函数SDF和截断符号距离函数TSDF等)。在机器人领域,TSDF是视觉SLAM常用的表示方法。

空间划分表示将3D物体表示为表面相邻的不相交基元,最常用的方法是空间占用枚举法(Spatial-occupancy Enumeration),这种方法将空间划分为相同的一系列小立方体(体素),这些小立方体通常用3D栅格的形式组织。更有效的空间分割方法有八叉树,多边形地图八叉树和二值空间分割树等。在机器人应用中,八叉树表示已经被用于3D建图。栅格占据地图(每个栅格是否被占据,由一个概率值表示)可以看作是空间划分表示的一种概率形式上的变体。在没有悬空障碍物的3D环境中,也可以使用2.5D高程地图。

基于特征的稀疏方法、基于直接法的稠密方法,哪一种更好?答案取决于具体任务和性能要求(比如时间、精度和失效率等)。基于特征的方法存在一些缺点:依赖于特征的类型;依赖用于检测和匹配的大量阈值参数;需要鲁棒估计技术来处理错误的匹配结果;大部分特征检测器在设计上的优化目标往往是速度,而不是准确度。基于直接法的稠密点云地图,使用图像中的所有信息,甚至是像素梯度很小的区域,因此它在低纹理场景、失焦和运动模糊的情况下性能由于基于特征的方法。然而稠密直接法需要很强的计算能力(GPUs),才能保证实时性。另外,如何联合估计环境的稠密结构和自身运动,仍然有待解决(目前只能依次进行:先估计一个,然后估计另一个)。有两种方法可以克服基于特征稀疏方法的缺点:

  1. 半稠密法(semi-dense)。半稠密法只使用梯度大的像素(比如图像边缘),以此来解决稠密法对计算能力的高要求。
  2. 半直接法(semi-direct)。半直接法同时采用了稀疏特征(比如角点和边缘)和直接法,使用了半直接法的SVO证明了其高效性。而且,由于半直接法使用稀疏特征,这使得它可以联合估计环境结构和运动

基于物体的高阶表示(high-level object-based representation)

尽管目前点云表示和边界表示在稠密建图领域占据着统治地位,但是高层表示,比如物体(object)和实体形状(solid shape)等,会在未来的SLAM中扮演着重要的角色。目前已有一些使用高阶物体表示的SLAM系统,比如SLAM++等。实体表示(solid representation)显式编码了这样一个事实:真实世界中的物体是三维的,而不是一维的(点)或者二维的(表面)。用实体形状表示对物体建模,便于把物理属性(比如体积、质量等)与物体进行关联,这些物理属性对机器人与环境交互至关重要。幸运的是,现有领域比如CAD和计算机图形学已经在这些方面有很大发展。举一些实体形状表示的例子:

除此之外,还有一些其它的表示方法,包括feature-based models in CAD、affordance-based models、generative and procedural models和scene graphs。值得一提的是,机器人领域和计算机视觉领域已经开始考虑使用基于词典的表示法,这种表示法通过词典中词的组合来定义实体。这个词典可以通过对数据的学习得到,也可以是基于现有的物体模型。

待解决的问题(open problem)

以下这些关于SLAM中几何度量表示的问题,需要大量的基础研究,仍然有很多未知领域有待探索。

SLAM中的高层表示(high-level, expressive representations in SLAM)

最优表示(optimal representations)

自动、自适应表示(automatic, adaptive represetation)

地图表示:语义推理(semantic reasoning)

语义建图(semantic mapping)需要将语义信息与机器人所处环境中的几何实体进行关联。最近,人们已经意识到了纯粹几何地图的局限性,在构建环境语义地图方面产生了很多的重要工作。语义地图可以提升机器人的自主性和鲁棒性、使机器人能够处理更加复杂的任务(比如在行驶过程中避免泥泞道路)、从路径规划(path-planning)变成任务规划(task-planning),以及实现高级的人机交互。在语义地图方面,有着大量不同的方法,它们所使用语义信息的数量和类别不尽相同,也使用不同的方法将语义信息与环境中的不同部分进行关联。此外,也有一些方法将低层的语义分析表述为一个分类问题,它们考虑的是传感器数据与语义信息之间的简单映射。

语义SLAM vs 拓扑SLAM(semantic SLMA vs topological SLAM)

拓扑建图舍弃了几何度量信息,仅仅通过场景识别来构建图(graph,图论中的图),图中的节点(node)表示不同的位置,图中的边(edge)表示不同位置之间的连通情况。语义建图与拓扑建图完全不同,拓扑建图需要识别之前看到过的地方(不管它到底是厨房、走廊、或者别的什么),而语义建图则需要根据语义标签对这些位置进行分类。

语义的结构和具体内容(semantic SLAM: structure and detail of concepts)

对于人类来说,可能有无数的概念,这些概念之间也有着无数的相互关系,但是人类是任务驱动的(task-driven),根据任务需求,人类可以更加睿智的去选择不同的层级和组织结构来使用这些概念。人类的这种特性,对于构建智能机器人是有借鉴意义的。语义的具体内容和组织方式,取决于机器人所处的环境,以及机器人所需要执行的任务。而语义的具体内容和组织方式,会在不同的阶段影响问题的复杂性。因此,构建语义地图需要确定以下两方面的内容:

  1. 语义的层级和具体内容(level/detail of semantic concepts)。对于一个给定的机器人任务,比如“从房间A到房间B”,初步的分类(比如房间、走廊、门)就可以很好的完成这个任务。但是对于其它的一些任务,比如“拿起一个茶杯”,就需要更加精细的分类(桌子、茶杯、玻璃杯)。
  2. 语义的组织形式(organization of semantic concepts)。语义信息并不是唯一的(exclusive),多个语义信息可以表达同一个实体(比如凳子、板凳),一个语义信息也可以表达多个实体(比如桌子一个词,既可以指课桌,也可以指饭桌)。一个实体可能有无穷多的属性。一个椅子的属性可能是“可移动的”和“可坐”,一个餐桌的属性可能是“可移动”和“不可坐”。椅子和餐桌都是家具,它们都具有“可移动”的共同属性,但是具有不同的用途。由于语义存在的这些特点,我们在组织语义信息时,不管使用扁平结构还是层级结构(flat or hierarchical organization),无论有没有共同属性,都必须要能够处理语义信息的多样性(multiplicity)。

语义建图的研究现状

在语义建图或赋予数据语义信息方面,目前有3种主要方法:

  1. SLAM帮助语义(SLAM helps semantics)
  2. 语义帮助SLAM(semantics help SLAM)
  3. SLAM与语义联合推理(joint SLAM and semantic inference)

待解决的问题(open problem)

语义SLAM不像几何度量SLAM那样有一套成熟的框架,而是尚处于研究的早期阶段。

人类通过语义理解,可以预测环境在不同时间尺度下的变化情况。以上图中中的一个工地为例,我们人类可以理解图片底部的吊车的运动,并且可以预测它在短期内不会移动,同时我们还可以预测工地在施工完成后的外形,这样在施工结束后,我们依然可以在完成自己在工地中的定位。这得益于人类可以对环境中目标的功能以及它们之间的相互关系进行推理,使机器人能够具备相似的能力是语义SLAM中有待解决的问题。从工地的例子中,可以发现语义SLAM面临的以下挑战。

语义建图不只是一个分类问题

语义概念要被处理为更加特定的信息,比如地图中实体的affordance和actionability(affordance指的是,对于给定的环境或者物体,给定的agent可能采取的动作的集合,actionability指的是这些动作的预期效用),以及环境中不同agent之间可能产生的交互。如何表示这些属性和相互关系,是高层的人机交互需要解决的问题。

忽略、察觉和适应(ignorance, awareness, and adaptation)

给定一些先验知识,机器人要能够推理出新的概念和它们的语义表示。也就是说,机器人要能够发现环境中新的目标和类别,在与其它机器人或人类的交互中学习新的属性,对环境中缓慢的或者突然的变化,自适应地采取相应的表示方法。

举个例子,一个轮式机器人需要分辨地形是否可行驶,然后通知导航系统。如果机器人发现道路上有泥巴,根据之前的分类结果,道路是可行驶的,机器人需要根据穿越这个泥泞地形的难度学习出一个新的类别,如果机器人察觉到有其它车辆陷在了泥泞中,那么它也要相应地调整它的分类器。

基于语义的推理

对于人类而言,我们可以利用语义信息,对环境进行压缩,以及加速对环境的推理,而确定精确的集合度量对人类来说是很困难的事情。然而对于目前的机器人来说,却不是这样,机器人可以处理(带有颜色信息)的集合度量表示,但它们不能真正地利用语义信息。目前我们的机器人还不能够通过环境中的语义信息(类别、相互关系和属性),进行有效的、高效的定位和持续建图。

举个例子:当机器人探测到一辆汽车时,它应该能够推理出汽车下的 地面(即使有遮挡),而且当这辆汽车移动时,机器人的传感器会获取新的数据,地图更新应该可以优化之前猜测的地面。甚至,在优化地面的同时,机器人应该能够通过单一有效的操作,将汽车作为一个整体更新其全局坐标,而不是更新每一个单一的体素。

SLAM中的新理论工具

主动SLAM(active SLAM)

SLAM中的新传感器

SLAM:现在,未来和鲁棒感知时代相关推荐

  1. 【泡泡机器人转载】SLAM: 现在,未来和鲁棒年代

    摘要 SLAM是由同步环境地图构建和运行于其中的机器人状态估计组成.SLAM领域过去30年取得了令人瞩目的成就,其在大场景应用成为了可能,这一技术被见证了成功地被应用于工业领域.本文中,我们研究了SL ...

  2. 机器人环境感知算法之鲁棒感知阶段

    关注同名微信公众号"混沌无形",有趣好文! 原文链接: 机器人环境感知研究现状简述(包含原文PDF百度云下载链接) 这一阶段要求SLAM系统具备更稳健的性能.更高阶的理解能力等多智 ...

  3. 2017CVPR NID-SLAM:基于归一化信息距离的鲁棒单目SLAM系统

    原作:Geoffrey Pascoe 翻译:Frank 转载请注明出处 水平有限,错误请指出 NID-SLAM:基于归一化信息距离的鲁棒单目SLAM系统 摘要 本文提出了一种基于归一化信息距离(NID ...

  4. 【源头活水】IEEE TIFS 2022 | 基于不确定因素感知的鲁棒虹膜识别

    "问渠那得清如许,为有源头活水来",通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉.为此,我们特别精选论文阅读笔记,开辟 ...

  5. 半直接单目VO | PL-SVO:快速、鲁棒的SLAM线特征跟踪

    作者 | 猛女瘦瘦  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/571034195 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨 ...

  6. Ultimate SLAM:结合事件、图像和惯性测量单元,在HDR和高速场景下实现鲁棒的视觉SLAM...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1 摘要 事件摄像机是受生物启发的视觉传感器,输出像素级亮度变化,而不是标准亮度帧.这些相机不会受到运 ...

  7. 论文翻译 | Mask-SLAM:基于语义分割掩模的鲁棒特征单目SLAM

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1 摘要 本文提出了一种将单目视觉SLAM与基于深度学习的语义分割相结合的新方法.为了稳定运行,vSL ...

  8. Mask-SLAM:基于语义分割掩模的鲁棒特征单目SLAM

    摘要 本文提出了一种将单目视觉SLAM与基于深度学习的语义分割相结合的新方法.为了稳定运行,vSLAM需要静态对象上的特征点.在传统的vSLAM中,随机样本一致性(RANSAC) 用于选择那些特征点. ...

  9. Robust Consistent Video Depth Estimation_具有鲁棒一致性的视频深度估计

    论文 Code 核心:利用卷积神经网络训练 单张图像深度估计 优化深度图的对齐 连续优化 共同优化相机位姿参数的内外参 估计的深度图3D对齐 解决Naive alignment:提出一种更灵活变形的模 ...

最新文章

  1. smarty的简单分页
  2. 替换openjdk的版本时遇到报错Transaction check error
  3. STL的pair键值对
  4. swarm 本地管理远程_带有WildFly Swarm的远程JMS
  5. delphi查看源码版本_[Mybatis]-IDEA导入Mybatis源码
  6. scala char_Scala中的Char数据类型
  7. 爱因斯坦鲜为人知的另一面
  8. 程序员再也不担心请不到假了!
  9. hdu 5017 Ellipsoid(西安网络赛 1011)
  10. RefineDetLite:腾讯提出轻量级高精度目标检测网络
  11. 【Kafka】kafka 创建 topic的时候 Replication factor 参数理解
  12. java 取余_JAVA面试解析(有赞)
  13. kvm启动报错Could not access KVM kernel module: Permission denied
  14. 使用socket实现基于select模型的网络聊天室
  15. 随手刷屏的波士顿动力机器人,用3D打印解决了哪些问题
  16. DataGridView的行的字体颜色变化
  17. 为什么微盟耗时 7 天 7 夜才找回删库数据?
  18. Creator性能优化
  19. Python使用pyhive库远程操作hive的配置和使用
  20. 报表控件是什么?常见报表类型有哪些?

热门文章

  1. 分布式检索系统的简单设计
  2. Linq to sql和lambda
  3. SpringCloud组件 源码剖析:Eureka服务注册方式流程全面分析
  4. xen虚拟化实战系列(六)之xen虚拟机破解密码
  5. 实战mariadb-galera集群架构
  6. 到底应该选择哪种Linux.NET的部署方式?
  7. 申论万用句型——背下来
  8. linux/CentOS 6忘记root密码解决办法
  9. IPSEC ××× 互通性测试结果(二)
  10. 浅谈C#中的异步编程