51c~SLAM~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374
#GSLAM
自动驾驶相关~~~ 一个通用的SLAM架构和基准
GSLAM:A General SLAM Framework and Benchmark
开源代码:https://github.com/zdzhaoyong/GSLAM
SLAM技术最近取得了许多成功,并吸引了高科技公司的关注。然而,如何同一现有或新兴算法的界面,一级有效地进行关于速度、稳健性和可移植性的基准测试仍然是问题。本文,提出了一个名为GSLAM的新型SLAM平台,它不仅提供评估功能,还为研究人员提供了快速开发自己的SLAM系统的有用工具。GSLAM的核心贡献是一个通用的。跨平台的、完全开源的SLAM接口,旨在处理输入数据集、SLAM实现、可视化和应用程序的统一框架中的交互。通过这个平台,用户可以以插件形式实现自己的功能,以提高SLAM的性能,并进一步将SLAM的应用推向实际应用。
从上世纪80年代以来,同时定位与地图构建(SLAM)一直是计算机视觉和机器人领域的热门研究主题。SLAM为许多需要实时导航的应用提供了基本功能,如机器人技术、无人机(UAVs)、自动驾驶、以及虚拟现实和增强现实。近来年,SLAM技术得到了迅速发展,提出了各种SLAM系统,包括单目SLAM系统(基于特征点,直接和半直接方法)、多传感器SLAM系统(RGBD、双目和惯性辅助的方法)以及基于学习的SLAM系统(有监督和无监督方法)。
然而,随着SLAM技术的迅速发展,几乎所有的研究人员都集中精力于自己的SLAM系统的理论和实施,这使得难以交流思想,并且不容易实现迁移到其他系统。这妨碍了SLAM技术快速应用于各种行业领域。此外,目前存在许多SLAM系统的不同实现版本,如何有效地进行速度、稳健性和可移植性的基准测试仍然是一个问题。最近,Nardi等人和Bodin等人提出了统一的SLAM基准测试系统,以进行定量、可比较和可验证的实验研究,也探究各种SLAM系统之间的权衡。通过这些系统,可以使用数据集和度量评估模块轻松进行评估实验。
由于现有的系统仅提供评估基准,该论文认为有可能建立一个平台,以服务SLAM算法的整个生命周期,包括开发、评估和应用阶段。此外,近年来深度学习基础的SLAM已取得显著进展,因此有必要创建一个平台,不仅支持C++,还支持Python,以更好地支持几何和深度学习基础的SLAM系统的集成。因此,在本文中,介绍了一个新型的SLAM平台,不仅提供评估功能,还为研究人员提供了有用的工具,以快速开发他们自己的SLAM系统。通过这个平台,常用功能以插件形式提供,因此用户可以直接使用它们或创建自己的功能以实现更好的性能。希望这个平台能进一步推动SLAM系统的实际应用。总而言之,本文的主要贡献如下:
- 本文提出了一个通用的、跨平台的、完全开源的SLAM平台,旨在用于研究和商业用途,超越了以往的基准测试系统。SLAM接口由多个轻量级、无依赖的头文件组成,这使得在统一框架中以插件形式与不同数据集、SLAM算法和应用进行交互变得容易。此外,还提供了JavaScript和Python,以支持基于Web和深度学习的SLAM应用。
- 提出的GSLAM平台中,引入了三个经过优化的模块作为实用工具类,包括Estimator、Optimizer和Vocabulary。Estimator旨在提供一组封闭形式的求解器,涵盖所有情况,具有强大的样本一致性(RANSAC);Optimizer旨在提供流行的非线性SLM问题的统一接口;Vocabulary旨在提供高效且可移植的词袋实现,用于多线程和SIMD优化的地点识别。
- 受益于上述接口,该工作在一个统一的框架中实现并评估了现有数据集、SLAM实现和可视化应用的插件,未来出现的基准测试或应用也可以轻松地进行进一步集成。
下面首先介绍GSLAM框架的接口,并解释GSLAM的工作原理。其次,介绍三个实用组件,即Estimator, Optimizer和Vocabulary。然后,使用几个典型的公共数据集,使用GSLAM框架来评估不同流行的SLAM实现。最后,总结这些工作,并展望未来的研究方向。
Simultaneous Localization And Mapping
SLAM技术用于在未知环境中构建地图,并将传感器在地图中进行定位,主要侧重于实时操作。早期的SLAM主要基于扩展卡尔曼滤波(EKF)。将6自由度的运动参数和3D地标以概率方式表示为单一状态向量。经典EKF的复杂性随着地标数量的增加呈二次增长,限制了其可拓展性。近年来,SLAM技术得到了快速发展,提出了许多单目视觉SLAM系统,包括基于特征点、直接法和半直接方法。然而,单目SLAM系统缺乏尺度信息,无法处理纯旋转情况,因此一些其他多传感器SLAM系统,包括RGBD,双目和惯性辅助方法出现,以提高鲁棒性和精度。
尽管提出了大量的SLAM系统,但在统一这些算法的接口方面几乎没有什么工作,也没有对它们的性能进行全面的比较。此外,这些SLAM算法的实现通常以独立的可执行文件的形式发布,而不是以库的形式,而且往往不符合任何标准结构。
最近,基于深度学习的有监督和无监督的视觉里程计(VO)与传统的基于几何的方法相比,提出了新颖的思路。但是,进一步优化多个关键帧的一致性仍然不容易。GSLAM提供的工具可以帮助获得更好的全局一致性。通过该框架,更容易可视化或评估结果,并进一步应用于各种行业领域。
Computer Vision and Robotics Platform
在机器人技术和计算机领域,机器人系统(ROS)提供了节点之间非常便捷的通信方式,受到大多数机器人研究人员的青睐。许多SLAM实现提供了ROS包装器,以订阅传感器数据并发布可视化结果。但它并未统一SLAM实现的输入和输出,难以进一步评估不同SLAM系统。
受ROS消息架构的启发,GSLAM实现了一个类似的进程间通信实用类,称为Messenger。这为替代SLAM实现内部的ROS提供了另一种选择,并保持了兼容性,也就是说,该框架内支持所有ROS定义的消息,并自然地实现了ROS包装器。由于采用了进程内设计,消息传递时没有序列化和数据传输,消息可以无延迟和额外成本地发送。与此同时,消息的有效载荷不仅限于ROS定义的消息,还可以是任何可复制的数据结构。此外,不仅提供评估功能,还为研究人员提供了有用的工具,以快速开发和集成他们自己的SLAM算法。
SLAM Benchmarks
目前存在几种SLAM基准测试系统,包括KITTI基准测试、TUM RGB-D基准测试和ICL-NUIM RGB-D基准数据集,这些系统仅提供评估功能。此外,SLAMBench2将这些基准测试扩展为算法和数据集,要求用户将已发布的实现与SLAMBench2兼容,以进行评估,这难以扩展到更多应用领域。与这些系统不同,本文提出的GSLAM平台提供了一个解决方案,可为SLAM实现的整个生命周期提供服务,从开发、评估到应用。为研究人员提供了有用的工具,以快速开发他们自己的SLAM系统,并进一步基于统一接口开发可视化、评估和应用程序。
通用SLAM架构
Framework Overview
GSLAM的框架如图所示。总的来说,接口旨在处理三个部分的交互。
- 处理SLAM实现的输入。运行SLAM时,需要传感器数据和一些参数。对于GSLAM,使用Svar类进行参数配置和命令处理。所有SLAM实现所需的传感器数据都由Dataset实现提供,并使用Messenger进行传输。GSLAM实现了几个流行的视觉SLAM数据集,用于可以自由实现自己的数据集插件。
- SLAM实现。GSLAM将每个实现视为插件库。开发人员可以非常容易地基于GSLAM接口和实用类设计一个SLAM实现。开发人员还可以使用接口包装实现,而无需引入额外的依赖。用户可以专注于核心算法的开发,而无需关心SLAM实现外部需要处理的输入和输出。
- 可视化部分或使用SLAM结果的应用。在SLAM实现处理输入帧后,用户可能希望展示或利用结果。为了通用性,SLAM结果应以标准格式发布。默认情况下,GSLAM使用Qt进行可视化,但用户可以自由实现自定义的可视化工具,并添加应用插件,如评估应用程序。
该框架被设计为与各种不同类型的SLAM实现兼容,包括但不限于单目、双目、RGBD和多摄像头视觉惯性里程计与多传感器融合。现代深度学习平台和开发人员更喜欢使用Python进行编码,因此GSLAM提供了Python绑定,开发人员能够使用Python实现SLAM,并使用GSLAM调用它,或者使用Python调用基于C++的SLAM实现。此外,还支持JavaScript用于基于Web的用途。
Basic Interface Classes
SLAM接口通常使用的一些数据结构包括参数设置/读取、图像格式、姿态变换、相机模型和地图数据结构。以下是一些基本接口类的简要介绍。
Paramter Setting
GSLAM使用一个小巧的参数解析和参数设置类Svar,它仅包含一个头文件,依赖于C++11,并具有以下特点:
a.参数解析和配置加载以及帮助信息。类似于流行的参数解析工具,如Google gflags,变量配置可以从命令行参数、文件和系统环境中加载。用户还可以定义不同类型的参数,并提供介绍信息,这些信息将显示在帮助文档中。
b.一个小型脚本语言,支持变量、函数和条件语句,使配置文件更加强大。
c.线程安全的变量绑定和共享。建议将使用频率非常高的变量绑定到指针或引用上,这不仅提供了高效性,还提供了便利性。
d,简单的函数定义和从C++或纯脚本进行调用。命令和函数之间的绑定有助于开发人员解耦文件依赖关系。
e.支持树形结构表示,这意味着可以轻松地使用XML、JSON和YAML格式加载或保存配置。
Intra-Process Messaging
由于ROS提供了一个非常便捷的节点间通信方式,受到大多数机器人研究人员的青睐。受到ROS2消息架构的启发,GSLAM实现了一个类似的进程间通信实用类,称为Messenger。这为替代SLAM实现内部的ROS提供了另一种选择,并保持了兼容性。由于采用了进程间设计,Messenger能够发布和订阅任何类,而无需额外成本。以下是更多功能的介绍:
a.该接口采用了ROS的风格,对用来说容易上手。而且支持所有ROS定义的消息,这意味着只需要很少的工作就能替代原来的ROS消息传递系统。
b.由于没有序列化和数据传输,消息可以无延迟和额外成本地发送。与此同时,消息的有效载荷不仅限于ROS定义的消息,还支持任何可复制的数据结构。
c.源代码只包括基于C++11的头文件,没有额外的依赖,使其具有可移植性。
d.API是线程安全的,并在列队大小大于零时支持多线程条件通知。在发布者和订阅者相互连接之前,会对主题名称和RTTI数据结构进行检查,以确保正确地调用。
3D Transforamtion
类似地,定义了刚体和相似性变换的李代数se(3)和sim(3)。GSLAM使用四元数来表示旋转部分,并提供了一种表示形式转换为另一种表示形式的函数。表格1展示了变换实现,并于另外三种流形的实现(Sophus, TooN和Ceres)进行了比较。由于Ceres实现使用角轴表示,因此不需要旋转的指数和对数。如表格所示,GSLAM的实现性能更佳,因为它使用四元数并具有更好的优化,而TooN使用矩阵实现,在点变换方面性能更好。
Image format
图像数据的存储和传输是视觉SLAM中最重要的功能之一。为了提高效率和便利性,GSLAM使用了一个数据结构GImage,它与cv::Mat兼容。它具有智能指针计数器,以确保内存安全释放,并且可以在不进行内存复制的情况下轻松传输。数据指针对齐,以便更容易进行单指令多数据(SIMD)加速。用户可以在GImage和cv::Mat之间无缝、安全地进行转换,而无需进行内存复制。
Camera Models
由于SLAM可能包含由于制造不完美而引起的径向和切向畸变,或者是由鱼眼或全景相机捕捉的图像,因此提出了不同的相机模型来描述投影。GSLAM提供了包括OpenCV(ORB-SLAM使用)、ATAN(PTAM使用)和OCamCalib(MultiCol-SLAM使用)在内的实现。用户也可以轻松继承这些类并实现其他相机模型,如Kannala-Brandt和等距全景模型。
Map Data Structure
对于SLAM实现,其目标是实时定位并生成地图。GSLAM建议使用一个统一的地图数据结构,有多个地图帧和地图点组成。这个数据结构适用于大多数已有的视觉SLAM系统,包括基于特征或直接方法。
地图帧用于表示不同时间的位置状态,包括由传感器捕捉的各种信息或估算结果,包括IMU或GPS原始数据、深度信息和相机模型。SLAM实现估算它们之间的关系,它们之间的连接形成了一个姿势图。
地图点用于表示由帧观察到的环境,通常由基于特征的方法使用。但是,一个地图点不仅可以表示一个关键点,还可以表示一个GCP(地面控制点)、边缘线或3D对象。它们与地图帧的对应关系形成了一个观察图,通常被称为捆绑图。
SLAM实现工具
为了更容易实现一个SLAM系统,GSLAM提供了一个实用类。本节将简要介绍三个经过优化的模块,分别是Estimator, Optimizer和Vocabulary。
Estimator
纯几何计算仍然是一个需要强大和准确的实时解决方案的基本问题。传统的视觉SLAM算法或现代的视觉惯性解决方案都依赖与几何视觉算法来进行初始化、重定位和回环闭合。OpenCV提供了多个几何算法,Kneip提供了一个用于几何视觉的工具箱OpenGV,该工具箱仅限于相机姿态计算。GSLAM的Estimator旨在提供一系列包括所有情况的封闭形式解算器,并使用了鲁棒的随机采样一致性方法(RANSAC)。
表2列出了Estimator支持的算法。根据给定的观测数据,它们被分成三类。2D-2D匹配用于估计极线或单应约束,并且可以从中分解相对姿态。2D-3D对应于估计单目或多摄像头系统的中心或非中心绝对位姿,这是著名的PnP问题。还支持3D几何函数,如平面拟合,以及估算两个点云的SIM变换。大多数算法都依赖与开源线性代数库Eigen,它是一个仅包含头文件的库,并且适用于大多数平台。
Optimizer
非线性优化是现代几何SLAM系统的核心部分。由于Hessian矩阵的高纬度和稀疏性,图结构被用来建模SLAM的复杂估计问题。提出了几种框架,包括Ceres、G2O和GTSAM,用于解决一般的图优化问题。这些框架在不同的SLAM系统中广泛使用。ORB-SLAM、SVO使用G2O进行BA和位姿图优化。OKVIS、VINS使用Ceres进行带IMU因素的图优化,滑动窗口用于控制计算复杂性。Forster等人提出了一种基于SVO的视觉初始化方法,并使用GTSAM实现后端。
GSLAM的Optimizer旨在为大多数非线性SLAM问题提供一个统一的接口,如PnP求解器,BA,姿态图优化。基于Ceres库实现了这些问题的通用插件。对于特定问题,如BA,还可以提供一些更高效的实现,如PBA和ICE-BA作为插件。使用优化器工具,开发人员可以使用统一的接口访问不同的实现,特别是用于基于深度学习的SLAM系统。
Vocabulary
地点识别是SLAM系统中最重要的部分之一,用于重新定位和回环检测。词袋(BoW)方法在SLAM系统中广泛使用,因为它高效且性能出色。FabMap提出了一种基于外观的地点识别的概率方法,该方法用于RSLAM、LSD-SLAM等系统。由于它使用了像SIFT和SURF这样的浮点描述子,DBoW2为训练和检测构建了一个词汇树,支持二进制和浮点描述子。Refael提出了DBoW2的两个改进版本,DBoW3和FBoW,它们简化了接口并加快了训练和加载速度。之后,ORB-SLAM采用了ORB描述子,并使用DBoW2进行回环检测、重定位和快速匹配。随后,一系列SLAM系统,如ORB-SLAM2、VINS-Mono和LDSO,使用DBoW3进行回环检测。它已经成为实现SLAM系统地点识别的最流行工具。
受上述工作的启发,GSLAM对DBoW3词汇进行了仅包含头文件的实现,具有以下特点:
- 去除了对OpenCV的依赖,所有函数都在一个仅依赖C++11的头文件中实现。
- 结合DBoW2/3和FBoW的优点,具有极快的速度和易于使用。提供了类似于DBoW3的接口,并使用SSE和AVX指令加速了二进制和浮点描述子。
- 改进了内存使用和加速了加载、保存或训练词汇以及从图像特征到BoW向量转换的速度。
表3展示了四个词袋库的比较。在实验中,每个父节点有10个子节点,ORB特征检测使用ORB-SLAM,SIFT检测使用SiftGPU。实现结果中使用了ORB词汇,分别有4级和6级,以及一个SIFT词汇。FBoW和GSLAM都使用多线程进行词汇训练。GSLAM的实现在几乎所有项目中的表现都优于其他实现,包括加载和保存词汇、训练新词汇、将描述符列表转换为用于地点识别的BoW向量和用于快速特征匹配的特征向量。此外GSLAM实现使用更少的内存,并分配了更少的动态内存块,因为DBoW2需要大量内存的主要原因是碎片问题。
SLAM评估基准
现有的基准需要用户下载测试数据集并上传结果以进行精确性评估,这不足以统一运行环境并评估公平的性能比较。得益于GSLAM的统一接口,SLAM系统的评估变得更加优雅。在GSLAM的帮助下,开发人员只需上传SLAM插件,便可以在一个使用固定资源的docker化环境中进行速度、计算成本和准确性的各种评估。在本节中,将首先介绍一些数据集和已实现的SLAM插件。然后,对速度、准确性、内存和CPU使用率进行三个代表SLAM实现的评估。此评估旨在展示具有不同SLAM插件的统一SLAM基准实现的可能性。
Datasets
运行SLAM系统通常需要传感器数据流和相应的配置。为了让开发人员专注于核心SLAM插件的开发,GSLAM提供了一个标准的数据集接口,开发人员不需要关心SLAM的输入。通过不同的数据集插件,提供了在线传感器输入和离线数据,正确地插件会根据给定的数据集路径后缀动态加载。数据集的实现应该提供所有请求的传感器流以及相关配置,因此不需要为不同的数据集进行额外设置。所有不同的传感器流通过Messenger发布,使用标准的主题名称和数据格式。
GSLAM已经实现了几个流行的视觉SLAM数据集插件,如表4所示。用户也可以非常容易地基于仅包含头文件的GSLAM核心来实现一个数据集插件,并将其发布为插件并与应用程序一起进行编译。
SLAM Implementations
图2展示了一些使用内置Qt可视化器运行的开源SLAM和SfM插件的屏幕截图。该框架支持不同体系结构的SLAM系统,包括直接法、半直接法、基于特征的方法,甚至SfM方法。DSO实现需要发布结果,例如点云、相机姿势、轨迹和姿态图,以便像基于ROS的实现一样进行可视化。用户可以使用统一的框架访问不同的SLAM插件,根据C++、Python和Node-JS接口开发基于SLAM的应用程序非常方便。由于许多研究人员在开发中使用ROS,GSLAM还提供了ROS可视化插件,以无缝传输ROS定义的消息,并使开发人员可以利用Rviz进行显示或继续开发其他基于ROS的应用程序。
Evaluation
由于大多数现有的基准只提供数据集,或者没有groundtruth供用户自行进行评估,GSLAM提供了一个内置插件和一些脚本工具,用于计算性能和精度评估。
论文中使用TUM RGBD数据集中的序列nostructure-texture-near-withloop来演示评估的执行情况。接下来的实验采用三个开源的单目SLAM插件DSO, SVO和ORB-SLAM。在所有实验中,使用一台搭载i7-6700 CPU、GTX 1060 GPU和16GB RAM的计算机,运行64位Ubuntu 16.04。
计算性能评估包括内存使用、分配内存块数量、CPU使用率以及统计每帧所用的时间,如图3所示。结果表明,SVO使用的内存和CPU资源最少,并获得了最快的速度。而且由于SVO只是一个视觉里程计,在实现内部只维护了一个本地地图,所以成本保持稳定。DSO分配的内存块数较少,但消耗了100MB以上的内存,且增长较慢。DSO的一个问题是当帧数低于500时,处理时间会急剧增加,此外,关键帧的处理时间甚至更长。ORB-SLAM使用了最多的CPU资源,计算时间稳定,但内存使用快速增加,并且它分配和释放了大量的内存块,因为其BA使用了G2O库,没有使用增量优化方法。
图4展示了里程计轨迹的评估结果。如图所示,SVO速度较快,但漂移较大,而ORBSLAM在绝对姿态误差(APE)方面达到了最高的精度。由于综合评估是一个可插拔的插件应用程序,可以重新实施更多的评估指标,例如点云的精度。
总结
本文介绍了一个名为GSLAM的新型通用SLAM平台,该平台提出了从开发、评估到应用的支持。通过这个平台,常用的工具包以插件形式提供,用户还可以轻松地开发自己的模块。为了使平台易于使用,使接口只依赖于C++11。此外,还提供了Python和JavaScript接口,以更好地集成传统SLAM和基于深度学习的SLAM,或在Web上进行分布式操作。
在接下来的研究中,会提供更多的SLAM实现、文档和演示代码,以便学习和使用。此外,还将提供传统SLAM和基于深度学习的SLAM的集成,以进一步探索SLAM系统的未知可能性。
#SLAM ~
这是一篇多传感器/姿态估计/动态环境/视觉里程计的文章
近年来,基于视觉的传感器在SLAM系统中显示出显著的性能、精度和效率提升。在这方面,视觉SLAM(VSLAM)方法是指使用相机进行姿态估计和地图生成的SLAM方法。许多研究工作表明,VSLAM优于传统方法,传统方法仅依赖于特定传感器,例如激光雷达,即使成本较低。VSLAM利用不同的摄像机类型(例如单目、双目和RGB-D),在不同的数据集(例如KITTI、TUM RGB-D和EuRoC)和不同的环境(例如,室内和室外)中进行测试,并采用了多种算法和方法论,以更好地解析环境。
上述变化使这一主题受到研究人员的广泛关注,并产出了许多经典VSLAM算法。在这方面,论文调查的主要目的是介绍VSLAM系统的最新进展,并讨论现有的挑战和未来趋势。论文对在VSLAM领域发表的45篇有影响力的论文进行了深入的调查,并根据不同的特点对这些方法进行了分类,包括novelty domain、目标、采用的算法和语义水平。最后论文讨论了当前的趋势和未来的方向,有助于研究人员进行研究。
总结来说,图1显示了标准VSLAM方法的整体架构。系统的输入可以与其他传感器数据集成以提供更多信息,例如惯性测量单元(IMU)和激光雷达,而不是只有视觉数据。此外,对于VSLAM 范式中使用的直接或间接方法,视觉特征处理模块的功能可能会被更改或忽略。例如,“特征处理”阶段仅用于间接方法。另一个因素是利用一些特定模块,如回环检测和光束法平差,以改进执行。
视觉SLAM 的算法的发展
VSLAM系统在过去的几年中已经成熟,一些框架在这个开发过程中发挥了重要作用。图2展示了视觉SLAM发展过程中的里程碑算法。
首篇实时单目VSLAM于2007年由Davison提出,名为Mono SLAM的框架[17]。他们的间接框架可以使用扩展卡尔曼滤波(EKF)算法估计现实世界中的相机运动和3D元素[18]。尽管缺乏全局优化和回环检测模块,Mono SLAM开始在VSLAM域中发挥主要作用。然而用这种方法重建的地图只包括地标,没有提供关于该区域的进一步详细信息。
Klein等人[14]在同一年提出了Parallel Tracking and Mapping(PTAM),他们将整个VSLAM系统分为两个主要线程:tracking和mapping。PTAM为后续很多工作奠定了基石。PTAM方法的主要思想是降低计算成本,并使用并行处理来实现实时性能。当tracking实时估计摄像机运动时,mapping预测特征点的3D位置。PTAM也是第一个利用光束法平差(BA)联合优化相机姿态和3D地图创建的方法。其使用Features from Accelerated Segment Test(FAST)[19]的角点检测器算法进行关键点匹配和跟踪。尽管该算法的性能优于Mono SLAM,但其设计复杂,在第一阶段需要用户输入。
Newcombe等人于2011年提出了一种用于测量深度值和运动参数来构建地图的直接方法,即密集跟踪和映射(DTAM)。DTAM是一种密集建图和密集跟踪模块的实时框架,可通过将整个帧与给定深度图对齐来确定相机姿态。为了构建环境地图,上述阶段分别估计场景的深度和运动参数。虽然DTAM可以提供地图的详细信息,但实时执行需要较高的计算成本。作为3D 建图和基于像素的优化领域中的另一种间接方法,Endres等人在2013年提出了一种可用于RGB-D相机的方法。他们的方法是实时的,专注于低成本嵌入式系统和小型机器人,但在无特征或具有挑战性的场景中无法产生准确的结果。同年,Salas Moreno等人[22]提出了SLAM++,是实时SLAM框架中利用语义信息的开山之作。SLAM++采用RGB-D传感器输出,并进行3D相机姿态估计和跟踪以形成姿态图。然后通过合并从场景中的语义目标获得的相对3D姿态来优化预测姿态。
随着VSLAM基线的成熟,研究人员专注于提高这些系统的性能和精度。Forster等人在2014年提出了一种混合VO方法,称为Semi-direct Visual Odometry(SVO)[24]。SVO可以结合基于特征的方法和直接方法来实现传感器的运动估计和建图任务。SVO可以与单目和双目相机一起工作,并配备了一个姿态细化模块,以最小化重投影误差。然而,SVO的主要缺点是采用短期数据关联,并且无法进行回环检测和全局优化。
LSD-SLAM[25]是Engel等人于2014年提出的另一种有影响力的VSLAM方法,包含跟踪、深度估计和地图优化。该方法可以使用其姿态图估计模块重建大规模地图,并具有全局优化和回环检测功能。LSD-SLAM的弱点在于其初始化阶段,需要平面中的所有点,这使其成为一种计算密集型方法。Mur Artal等人介绍了两种精确的间接VSLAM方法,迄今为止广受关注:ORB-SLAM[26]和ORBSLAM 2.0[27]。这些方法可以在纹理良好的序列中完成定位和建图,并使用Oriented FAST and Rotated BRIEF(ORB)特征实现高性能的位置识别。ORB-SLAM的第一个版本能够使用从相机位置收集的关键帧来计算相机位置和环境结构。第二个版本是对ORB-SLAM的扩展,有三个并行线程,包括查找特征对应的跟踪、地图管理操作的局部建图,以及用于检测新环路和纠正漂移错误的回环。尽管ORB-SLAM 2.0可以与单目和立体相机一起使用,但由于重建具有未知比例的地图,因此不能用于自主导航。这种方法的另一个缺点是其无法在没有纹理的区域或具有重复模式的环境中工作。该框架的最新版本名为ORB-SLAM 3.0,于2021提出[28]。它适用于各种相机类型,如单目、RGB-D和双目视觉,并提供改进的姿态估计输出。
近年来,随着深度学习的快速发展,基于CNN的方法可以通过提供更高的识别和匹配率来解决许多问题。类似地,用学习特征替换人工设计的特征是许多最近基于深度学习的方法提出的解决方案之一。在这方面,Tateno等人提出了一种基于CNN的方法,该方法处理相机姿态估计的输入帧,并使用关键帧进行深度预测,命名为CNN-SLAM[29]。CNN-SLAM实现并行处理和实时性能的核心思想之一是,将相机帧分割成较小的部分以更好地理解环境。Engel等人还引入了Direct Sparse Odometry(DSO)[30],其将直接方法和稀疏重建相结合,以提取图像块中的最高强度点。
综上所述,VSLAM系统演进过程中的里程碑表明,最近的方法侧重于多个专用模块的并行执行。这些模块形成了与广泛的传感器和环境兼容的通用技术和框架。上述特性使它们能够实时执行,并且在性能改进方面更加灵活。
相关综述
VSLAM领域已有不少综述,对不同的现有方法进行了全面调查。每一篇论文都回顾了使用VSLAM方法的主要优点和缺点。Macario Barros等人[31]将方法分为三个不同类别:仅视觉(单目)、视觉惯性(立体)和RGB-D。他们还提出了简化分析VSLAM算法的各种标准。然而[31]并没有包括其他视觉传感器,比如基于事件的传感器。Chen等人[32]调查了广泛的传统和语义VSLAM。他们将SLAM开发时代分为经典、算法分析和鲁棒感知阶段。并总结了采用直接/间接方法的经典框架,研究了深度学习算法在语义分割中的影响。
尽管他们的工作提供了该领域高级解决方案的全面研究,但方法的分类仅限于基于特征的VSLAM中使用的特征类型。Jia等人[33]调查了大量文献,并对基于图优化的方法和配备深度学习的方法进行了简要比较。在另一项工作中,Abaspur Kazerouni等人[34]涵盖了各种VSLAM方法,利用了感官设备、数据集和模块,并模拟了几种间接方法进行比较和分析。它们只对基于特征的算法进行分析,例如HOG、尺度不变特征变换(SIFT)、加速鲁棒特征(SURF)和基于深度学习的解决方案。Bavle等人[35]分析了各种SLAM和VSLAM应用中的态势感知方面,并讨论了它们的缺失点。还有一些其他综述如[15]、[36]、[37]、[32]、[37]在此不再赘述。
与上述综述不同,本文对不同场景的VSLAM系统进行全面调查,主要贡献如下:
对各种最近的VSLAM方法进行分类,这些方法涉及研究人员在提出新解决方案方面的主要贡献、标准和目标;
通过深入研究不同方法的不同方面,分析VSLAM系统的当前趋势;
介绍VSLAM对研究人员的潜在贡献。
VSLAM 设置标准
考虑到各种VSLAM方法,论文将可用的不同设置和配置分为以下类别:传感器和数据采集、目标环境、视觉特征处理、系统评估和语义类别,下面逐一介绍。
1.传感器和数据采集
Davison等人[17]引入的VSLAM算法的早期阶段配备了用于轨迹恢复的单目摄像机。单目相机是最常见的视觉传感器,用于各种任务,如物体检测和跟踪[39]。另一方面,立体相机包含两个或更多图像传感器,使其能够感知图像中的深度,从而在VSLAM应用中实现更准确的性能。相机设置具有成本效益,并为更高的精度要求提供信息感知。RGB-D相机也是VSLAM中使用的视觉传感器,其可以提供场景中的深度和颜色。上述视觉传感器可以提供丰富的环境信息,例如,适当的照明和运动速度,但它们通常难以应对照明度低或场景动态范围高的情况。
近年来,事件摄像机也被用于各种VSLAM应用中。当检测到运动时,这些低延迟仿生视觉传感器产生像素级亮度变化,而不是标准强度帧,从而实现高动态范围输出,而不会产生运动模糊影响[40]。与标准相机相比,事件传感器在高速运动和大范围动态场景中可以提供可靠的视觉信息,但在运动速度较低时无法提供足够的信息。另一方面,事件相机主要输出关于环境的不同步信息。这使得传统的视觉算法无法处理这些传感器的输出[41]。此外,使用事件的时空窗口以及从其他传感器获得的数据可以提供丰富的姿态估计和跟踪信息。
此外,一些方法使用多目相机设置来解决在真实环境中工作的常见问题,并提高定位精度。利用多目传感器有助于解决复杂问题,例如遮挡、伪装、传感器故障或可跟踪纹理稀疏等,为摄像机提供重叠视角。尽管多目相机可以解决一些数据采集问题,但纯视觉的VSLAM可能会面临各种挑战,例如遇到快速移动目标时的运动模糊、低照度或高照度下的特征不匹配、高速变化场景下的动态目标忽略等。因此,一些VSLAM应用程序可能会在摄像机旁边配备多个传感器。融合事件和标准帧[42]或将其他传感器(如激光雷达[43]和IMU)集成到VSLAM是一些现有的解决方案。
2.目标环境
作为许多传统VSLAM实践中的一个有力假设,机器人在静态世界中工作,没有突然或意外的变化。因此,尽管许多系统可以在特定环境中成功应用,但环境中的一些意外变化(例如,移动目标的存在)可能会导致系统复杂化,并在很大程度上降低状态估计质量。在动态环境中工作的系统通常使用诸如光流或随机采样一致性(RANSAC)[44]之类的算法来检测场景中的移动,将移动目标分类为异常值,并在重建地图时跳过它们。这样的系统利用几何/语义信息或试图通过组合这两个结果来改进定位方案[45]。
此外作为一般分类法,论文将环境分为室内和室外两类。室外环境可以是具有结构地标和大规模运动变化(如建筑物和道路纹理)的城市区域,或具有弱运动状态(如移动的云和植被、沙子纹理等)的越野区域,这增加了定位和回环检测失败的风险。另一方面,室内环境包含具有完全不同的全局空间属性的场景,例如走廊、墙和房间。论文认为,虽然VSLAM系统可能在上述区域中的一个工作良好,但在其他环境中可能表现不出相同的性能。
3.视觉特征处理
如前文所述,检测视觉特征并利用特征描述子信息进行姿态估计是间接VSLAM方法的一个必要阶段。这些方法使用各种特征提取算法来更好地理解环境并跟踪连续帧中的特征点。特征提取算法有很多,包括SIFT[46]、SURF[47]、FAST[19]、BRIEF[48]、ORB[49]等。其中,与SIFT和SURF[50]相比,ORB特征具有快速提取和匹配而不大幅损失准确度的优点。
上述一些方法的问题是它们不能有效地适应各种复杂和不可预见的情况。因此,许多研究人员使用CNN来提取图像特征,包括VO、姿态估计和回环检测。根据方法的功能,这些技术可以表示有监督或无监督的框架。
4.系统评估
虽然一些VSLAM方法,特别是那些能够在动态和挑战性环境中工作的方法,在真实世界中进行测试。但许多研究工作都使用了公开的数据集来证明其适用性。在这方面,Bonarini等人[51]的RAWSEEDS数据集是一个著名的多传感器基准测试工具,包含室内、室外和混合机器人轨迹与真值数据。它是用于机器人和SLAM目的的最古老的公开基准测试工具之一。McCormac等人[52]的Scenenet RGB-D是场景理解问题的另一个受欢迎的数据集,例如语义分割和目标检测,包含500万个大规模渲染的RGB-D图像。
最近在VSLAM和VO领域的许多工作已经在TUM RGB-D数据集上测试了它们的方法[53]。此外,Nguyen等人[54]的NTU VIRAL是由配备3D激光雷达、相机、IMU和多个超宽带(UWB)的无人机收集的数据集。该数据集包含室内和室外实例,旨在评估自动驾驶和空中操作性能。其他数据集如EuRoC MAV[55]、OpenLORIS Scene[56]、KITTI[57]、TartanAir[58]、ICL-NUIM[59]和基于事件相机的数据集[60]可以参考相关论文。
根据传感器设置、应用和目标环境,上述数据集用于多种VSLAM方法。这些数据集主要包含摄像机的内外参以及GT。表I和图3分别显示了数据集的总结特征和每个数据集的一些实例。
5.语义等级
机器人需要语义信息才能理解周围的场景并做出更优决策。在许多最近的VSLAM工作中,将语义级信息添加到基于几何的数据中优于纯几何的方法,使其能够提供环境的概念知识[61]。在这方面,预先训练的目标识别模块可以将语义信息添加到VSLAM模型[62]。最新的方法之一是在VSLAM应用中使用CNN。一般来说,语义VSLAM方法包含以下四个主要组成部分[43]:
跟踪模块:它使用从连续视频帧中提取的二维特征点来估计相机姿态并构建三维地图点。相机姿态的计算和3D地图点的构建分别建立了定位和建图过程的基线;
局部建图模块:通过处理两个连续视频帧,创建了一个新的3D地图点,该点与BA模块一起用于改进相机姿态;
回环模块:通过将关键帧与提取的视觉特征进行比较并评估它们之间的相似性,进一步调整相机姿态并优化构建的地图;
非刚性上下文消隐 (Non-Rigid Context Culling,NRCC):使用NRCC的主要目标是从视频帧中过滤时间目标,以减少它们对定位和建图阶段的不利影响。其主要包含一个分割过程,用于分离帧中的各种不稳定实例,例如人。由于NRCC可以减少待处理的特征点的数量,因此简化了计算部分并获得了更鲁棒的性能。
因此,在VSLAM方法中利用语义信息可以改善姿态估计和地图重建的不确定性。然而,当前的挑战是如何正确使用提取的语义信息,而不影响计算成本。
基于主要目标的VSLAM方法目标一:多传感器处理
这一类别涵盖了使用各种传感器以更好地了解环境的VSLAM方法的范围。虽然一些技术仅依赖摄像机作为所使用的视觉传感器,但其他技术将各种传感器结合起来以提高算法的准确性。
1)使用多相机
一个相机重建运动物体的3D轨迹可能很困难,一些研究人员建议使用多相机。例如,CoSLAM是Zou和Tan[63]推出的一个VSLAM系统,它使用部署在不同平台上的单摄像机来重建鲁棒地图。CoSLAM结合了在动态环境中独立移动的多个摄像机,并根据它们重叠的视场重建地图。该过程通过混合相机内和相机间姿态估计和建图,使得在3D中重建动态点更容易。CoSLAM使用Kanade-Lucas-Tomasi(KLT)算法跟踪视觉特征,并在静态和动态环境中运行,包括室内和室外,其中相对位置和方向可能会随时间变化。这种方法的主要缺点是需要复杂的硬件来理解大量的摄像机输出,并通过增加更多的摄像机来增加计算成本。
对于具有挑战性的野外场景,Yang等人[64]开发了一种多摄像机协同全景视觉VSLAM方法。[64]赋予每个摄像机独立性,以提高VSLAM系统在挑战场景下的性能,例如遮挡和纹理稀疏。为了确定匹配范围,他们从摄像机的重叠视场中提取ORB特征。此外,[64]还使用了基于CNN的深度学习技术来识别回环检测的类似特征。在实验中,作者使用了由全景相机和集成导航系统生成的数据集。相关工作还有MultiCol-SLAM[65]。
2)使用多传感器
其他一些方法建议融合多传感器,并使用基于视觉和惯性的传感器输出以获得更好的性能。在这方面,Zhu等人[66]提出了一种称为CamVox的低成本间接激光雷达辅助VSLAM,并证明了其可靠的性能和准确性。他们的方法使用ORB-SLAM 2.0,将Livox激光雷达作为高级深度传感器提供的独特功能与RGB-D相机的输出相结合。作者使用IMU来同步和校正非重复扫描位置。CamVox贡献是提出了一种在不受控制的环境中运行的自主激光雷达-相机校准方法。在机器人平台上的实测表明,CamVox在能够实时运行。
[67]提出了一种名为VIRAL(视觉-惯性-测距-激光雷达)SLAM的多模态系统,该系统将相机、激光雷达、IMU和UWB耦合起来。并提出了一种基于激光雷达点云构建的局部地图的视觉特征地图匹配边缘化方案。使用BRIEF算法提取和跟踪视觉分量。该框架还包含用于所使用的传感器的同步方案和触发器。VIRAL在NTU VIRAL[54]数据集上测试了他们的方法,该数据集包含相机、激光雷达、IMU和UWB传感器捕获的数据。然而,由于处理同步、多线程和传感器冲突解决,他们的方法计算量很大。其他相关算法Ultimate SLAM[68]、[69]可以参考相关论文。
目标二:姿态估计
这类方法的重点是如何使用各种算法改进VSLAM方法的姿态估计。
1)使用线/点数据
在这方面,Zhou等人[70]建议使用建筑结构线段作为有用的特征来确定相机姿态。结构线与主导方向相关联,并编码全局方向信息,从而改善预测轨迹。方法名为StructSLAM,是一种6自由度(DoF)VSLAM技术,可在低特征和无特征条件下运行。
Point and Line SLAM(PL-SLAM)是一种基于ORB-SLAM的VSLAM系统,针对非动态低纹理场景进行了优化,由Pumarola等人提出[71]。该系统同时融合线和点特征以改进姿态估计,并帮助在特征点较少的情况下运行。作者在生成的数据集和TUM RGB-D上测试了PL-SLAM。其方法的缺点是计算成本和必须使用其他几何图元(例如平面),以获得更稳健的精度。
Gomez-Ojeda等人[72]介绍了PL-SLAM(不同于Pumarola等人[71]中同名的框架),这是一种间接VSLAM技术,使用立体视觉相机中的点和线来重建看不见的地图。他们将从所有VSLAM模块中的点和线获得的片段与从其方法中的连续帧获取的视觉信息合并。使用ORB和线段检测器(LSD)算法,在PL-SLAM中的后续立体帧中检索和跟踪点和线段。作者在EuRoC和KITTI数据集上测试了PL-SLAM,在性能方面可能优于ORB-SLAM 2.0的立体版本。PL-SLAM的主要缺点之一是特征跟踪模块所需的计算时间以及考虑所有结构线以提取关于环境的信息。其他相关算法[73]可以参考论文。
2)使用额外特征
[74]中提出了Dual Quaternion Visual SLAM(DQV-SLAM),一种用于立体视觉相机的框架,该框架使用广泛的贝叶斯框架进行6-DoF姿态估计。为了防止非线性空间变换组的线性化,他们的方法使用渐进贝叶斯更新。对于地图的点云和光流,DQV-SLAM使用ORB功能在动态环境中实现可靠的数据关联。在KITTI和EuRoC数据集上,该方法可以可靠地得到预测结果。然而,它缺乏姿态随机建模的概率解释,并且对基于采样近似的滤波的计算要求很高。其他相关算法SPM-SLAM[75]可以参考论文。
3)深度学习
Bruno和Colombini[76]提出了LIFT-SLAM,它将基于深度学习的特征描述子与传统的基于几何的系统相结合。并扩展了ORB-SLAM系统的流水线,使用CNN从图像中提取特征,基于学习得到的特征提供更密集和精确的匹配。为了检测、描述和方向估计,LIFT-SLAM微调学习不变特征变换(LIFT)深度神经网络。使用KITTI和EuRoC MAV数据集的室内和室外实例进行的研究表明,LIFT-SLAM在精度方面优于传统的基于特征和基于深度学习的VSLAM系统。然而,该方法的缺点是其计算密集的流水线和未优化的CNN设计。
Naveed等人[77]提出了一种基于深度学习的VSLAM解决方案,该解决方案具有可靠且一致的模块,即使在极端转弯的路线上也是如此。他们的方法优于几种VSLAM,并使用了在真实模拟器上训练的深度强化学习网络。此外,它们还为主动VSLAM评估提供了基线,并可在实际室内和室外环境中适当推广。网络的路径规划器开发了理想的路径数据,由其基础系统ORB-SLAM接收。[77]制作了一个数据集,包含了挑战性和无纹理环境中的实际导航事件,以供评估。其他方法RWT-SLAM[78]可参考相关论文。
目标三:现实世界可行性
这类方法的主要目标是在各种环境中使用,并在多种场景下工作。论文注意到,本节中的引用与从环境中提取的语义信息高度集成,并展示了端到端的VSLAM应用。
1)动态环境
在这方面,Yu等人[61]引入了一个名为DS-SLAM的VSLAM系统,该系统可用于动态上下文,并为地图构建提供语义级信息。该系统基于ORB-SLAM 2.0,包含五个线程:跟踪、语义分割、局部建图、回环和密集语义图构建。为了在姿态估计过程之前排除动态目标并提高定位精度,DS-SLAM使用了实时语义分割网络SegNet的光流算法[80]。DS-SLAM已经在现实世界环境中、RGB-D相机以及TUM RGB-D数据集上进行了测试。然而,尽管它的定位精度很高,但它仍面临语义分割限制和计算密集型特征的问题。
Semantic Optical Flow SLAM(SOF-SLAM)是基于ORB-SLAM 2.0的RGB-D模式构建的间接VSLAM系统[45]。他们的方法使用语义光流动态特征检测模块,该模块提取并跳过ORB特征提取提供的语义和几何信息中隐藏的变化特征。为了提供准确的相机姿态和环境信息,SOF-SLAM使用了SegNet的像素级语义分割模块。在极端动态的情况下,TUM RGB-D数据集和现实环境中的实验结果表明,SOF-SLAM的性能优于ORB-SLAM 2.0。然而,非静态特征识别的无效方法和仅依赖于两个连续帧是SOF-SLAM的缺点。其他相关算法[81]、[82]可以参考相关论文。
2)基于深度学习的解决方案
在Li等人[83]的另一个名为DXSLAM的工作中,深度学习用于找到类似于SuperPoints的关键点,并生成通用描述子和图像的关键点。他们训练先进的CNN HF-NET,通过从每个帧中提取局部和全局信息,生成基于帧和关键点的描述子。此外还使用离线Bag of Words(BoW)方法训练局部特征的视觉词汇表,以实现精确的回环识别。DXSLAM在不使用GPU的情况下实时运行,并且与当代CPU兼容。即使这些品质没有得到特别的处理,它也有很强的抵抗动态环境中动态变化的能力。DXSLAM已经在TUM RGB-D和OpenLORIS场景数据集以及室内和室外图像上进行了测试,可以获得比ORB-SLAM 2.0和DS-SLAM更准确的结果。然而,这种方法的主要缺点是复杂的特征提取架构和将深层特征合并到旧的SLAM框架中。
在另一种方法中,Li等人[84]开发了一种实时VSLAM技术,用于在复杂情况下基于深度学习提取特征点。该方法可以在GPU上运行,支持创建3D密集地图,是一个具有自监督功能的多任务特征提取CNN。CNN输出是固定长度为256的二进制代码串,这使得它可以被更传统的特征点检测器(如ORB)所取代。系统包括三个线程,用于在动态场景中实现可靠和及时的性能:跟踪、局部建图和回环。支持使用ORB-SLAM 2.0作为基线的单目和RGB-D相机的系统。其他相关算法[85]可以参考相关论文。
3)使用人工地标
Medina Carnicer等人提出的一种称为UcoSLAM[86]的技术,通过结合自然和人造地标,并使用基准标记自动计算周围环境的比例,从而优于传统的VSLAM系统。UcoSLAM的主要驱动力是对抗自然地标的不稳定性、重复性和较差的跟踪质量。它可以在没有标签或特征的环境中运行,因为它只能在关键点、地标和混合模式下运行。为了定位地图对应关系,优化重投影误差,并在跟踪失败时重新定位,UcoSLAM具有跟踪模式。此外,它有一个基于地标的回环检测系统,可以使用任何描述子描述特征,包括ORB和FAST。尽管UcoSLAM有很多优点,但系统在多线程中执行,这使得它成为一种耗时的方法。
4)广泛的设置
用于动态室内和室外环境的另一种VSLAM策略是DMS-SLAM[87],它支持单目、立体和RGB-D视觉传感器。该系统采用滑动窗口和基于网格的运动统计(GMS)[88]特征匹配方法来找到静态特征位置。DMS-SLAM以ORB-SLAM 2.0系统为基础,跟踪ORB算法识别的静态特征。作者在TUM RGB-D和KITTI数据集上测试了他们建议的方法,并优于先进的的VSLAM算法。此外,由于在跟踪步骤中删除了动态目标上的特征点,DMS-SLAM比原始的ORB-SLAM 2.0执行得更快。尽管有上述优点,但DMS-SLAM在纹理少、运动快和高度动态环境的情况下会遇到困难。
目标四:资源限制
在另一类中,与其他标准设备相比,一些VSLAM方法是为计算资源有限的设备构建的。例如,为移动设备和具有嵌入式系统的机器人设计的VSLAM系统就属于这一类别。
1)处理能力有限的设备
在这方面,edgeSLAM是Xu等人提出的用于移动和资源受限设备的实时、边缘辅助语义VSLAM系统[89]。它采用了一系列细粒度模块,由边缘服务器和相关移动设备使用,而不需要多线程。edgeSLAM中还包括基于Mask-RCNN技术的语义分割模块,以改进分割和目标跟踪。作者在一个边缘服务器上安装了一些商用移动设备,如手机和开发板。通过重用目标分割的结果,他们通过使系统参数适应不同的网络带宽和延迟情况来避免重复处理。EdgeSLAM已在TUM RGB-D、KITTI的单目视觉实例和为实验设置创建的数据集上进行了评估。
对于立体相机设置,Grisetti等人[90]提出了一种轻量级的基于特征的VSLAM框架,名为ProSLAM,其结果与先进技术不相上下。四个模块组成了他们的方法:triangulation模块,它创建3D点和相关的特征描述子;增量运动估计模块,其处理两个帧以确定当前位置;创建局部地图的地图管理模块;以及基于局部地图的相似性更新世界地图的重新定位模块。ProSLAM使用单个线程检索点的3D位置,并利用少量已知库来创建简单的系统。根据KITTI和EuRoC数据集的实验,他们的方法可以获得稳健的结果。然而,它在旋转估计方面表现出不足,并且不包含任何光束法平差模块。其他相关算法VPS-SLAM[91]、[94]可以参考相关论文。
2)计算迁移
Ben Ali等人[96]建议使用边缘计算将资源密集型操作迁移到云上,并减少机器人的计算负担。他们在其间接框架Edge-SLAM中修改了ORB-SLAM 2.0的架构,在机器人上维护了跟踪模块,并将剩余部分委派给边缘。通过在机器人和边缘设备之间拆分VSLAM流水线,系统可以维护局部和全局地图。在可用资源较少的情况下,它们仍然可以在不牺牲准确性的情况下正确运行。[96]使用TUM RGB-D数据集和两个不同的移动设备,基于RGB-D相机生成定制的室内环境数据集进行评估。然而,该方法的缺点之一是由于各种SLAM模块的解耦而导致架构的复杂性。另一个问题是,系统仅在短期设置下工作,在长期场景(例如,多天)中使用Edge SLAM将面临性能下降。
目标五:弹性化(Versatility)
VSLAM在这一类中的工作侧重于直接的开发、利用、适应和扩展。
在这方面,Sumikura等人[95]引入了OpenVSLAM,这是一个高度适应性的开源VSLAM框架,旨在快速开发并被其他第三方程序调用。他们基于特征的方法与多种相机类型兼容,包括单目、立体和RGB-D,并且可以存储或重用重建的地图以供以后使用。由于其强大的ORB特征提取模块,OpenVSLAM在跟踪精度和效率方面优于ORB-SLAM和ORB-SLAM2.0。然而,由于担心代码相似性侵犯了ORB-SLAM 2.0的权利,该系统的开源代码已经停止。
为了弥合实时能力、准确性和弹性之间的差距,Ferrera等人[97]开发了OV2SLAM,可用于单目和立体视觉相机。通过将特征提取限制在关键帧中,并通过消除测光误差在后续帧中对其进行监控,他们的方法减少了计算量。从这个意义上讲,OV2SLAM是一种混合策略,它结合了VSLAM直接和间接方法的优点。在室内和室外实验中,使用包括EuRoC、KITTI和TartanAir在内的著名基准数据集,证明OV2SLAM在性能和准确性方面优于几种流行技术。其他相关算法DROID-SLAM[98]、iRotate[99]可以参考相关论文。
目标六:视觉里程计(Visual Odometry)
此类方法旨在以尽可能高的精度确定机器人的位置和方向。
1)深度神经网络
在这方面,[100]中提出了Dynamic-SLAM框架,该框架利用深度学习进行准确的姿态预测和适当的环境理解。作为优化VO的语义级模块的一部分,作者使用CNN来识别环境中的运动目标,这有助于他们降低由不正确的特征匹配带来的姿态估计误差。此外,Dynamic-SLAM使用选择性跟踪模块来忽略场景中的动态位置,并使用缺失特征校正算法来实现相邻帧中的速度不变性。尽管结果很好,但由于定义的语义类数量有限,该系统需要巨大的计算成本,并面临动态/静态目标误分类的风险。
Bloesch等人[101]提出了Code-SLAM,它提供了场景几何体的浓缩和密集表示。他们的VSLAM系统是PTAM的增强版[14],该系统仅与单目摄像机一起工作。其将强度图像划分为卷积特征,并使用根据SceneNet RGB-D数据集的强度图像训练的CNN将其馈送到深度自编码器。EuRoC数据集的实验结果表明,其结果在准确性和性能方面很有希望。其他相关算法DeepVO[102]、[103]、DeepFactors[104]可以参考相关论文。
2)深度相邻帧处理
在另一项工作中,[106]的作者通过减少用于摄像机运动检测的两幅图像之间的光度和几何误差,为RGB-D摄像机开发了一种实时密集SLAM方法,改进了他们先前的方法[107]。他们基于关键帧的解决方案扩展了Pose SLAM[108],它只保留非冗余姿态,以生成紧凑的地图,增加了密集的视觉里程计特征,并有效地利用来自相机帧的信息进行可靠的相机运动估计。作者还采用了一种基于熵的技术来度量关键帧的相似性,用于回环检测和漂移避免。然而,他们的方法仍然需要在回环检测和关键帧选择质量方面进行工作。
在Li等人[109]介绍的另一项工作中,使用称为DP-SLAM的基于特征的VSLAM方法实现实时动态目标移除。该方法使用基于从运动目标导出的关键点的似然性的贝叶斯概率传播模型。使用移动概率传播算法和迭代概率更新,DP-SLAM可以克服几何约束和语义数据的变化。它与ORB-SLAM 2.0集成,并在TUM RGB-D数据集上进行了测试。尽管结果准确,但由于迭代概率更新模块,该系统仅在稀疏VSLAM中工作,并且面临较高的计算成本。其他相关算法[110]可以参考相关论文。
3)各种特征处理
此类别中的另一种方法是Li等人[111]提出的基于文本的VSLAM系统,称为TextSLAM。它将使用FAST角点检测技术从场景中检索的文本项合并到SLAM管道中。文本包括各种纹理、图案和语义,这使得使用它们创建高质量3D文本地图的方法更加有效。TextSLAM使用文本作为可靠的视觉基准标记,在找到文本的第一帧之后对其进行参数化,然后将3D文本目标投影到目标图像上以再次定位。他们还提出了一种新的三变量参数化技术,用于初始化瞬时文本特征。使用单目相机和作者创建的数据集,在室内和室外环境中进行了实验,结果非常准确。在无文本环境中操作、解释短字母以及需要存储大量文本词典是TextSLAM的三大基本挑战。其他相关算法[43]、[112]可以参考相关论文。
确定当前趋势统计数字
关于上述各方面调查论文的分类,论文将图4中的处理数据可视化,以找出VSLAM的当前趋势。在子图“a”中,可以看到,大多数拟议的VSLAM系统都是独立的应用程序,它们使用视觉传感器从头开始执行定位和建图的整个过程。虽然ORB-SLAM2.0和ORB-SLAM是用于构建新框架的其他基础平台,但只有很少的方法基于其他VSLAM系统,如PTAM和PoseSLAM。此外,就VSLAM应用程序的目标而言,子图“b”中最重要的是改进视觉里程计模块。因此,大多数最近的VSLAM都试图解决当前算法在确定机器人位置和方向方面的问题。姿态估计和真实世界生存能力是提出新的VSLAM论文的进一步基本目标。关于调查论文中用于评估的数据集,子图“c”说明了大多数工作都在TUM RGB-D数据集上进行了测试。此外,许多研究人员倾向于对他们生成的数据集进行实验。我们可以假设生成数据集的主要动机是展示VSLAM方法在真实场景中的工作方式,以及它是否可以作为端到端应用程序使用。EuRoC MAV和KITTI分别是VSLAM工作中下一个流行的评估数据集。从子图“d”中提取的另一个有趣信息涉及使用VSLAM系统时使用语义数据的影响。我们可以看到,大多数论文在处理环境时不包括语义数据。论文假设不使用语义数据的原因是:
在许多情况下,训练识别目标并将其用于语义分割的模型的计算成本相当大,这可能会增加处理时间;
大多数基于几何的VSLAM算法被设计在即插即用的设备上工作,因此它们可以用最少的努力使用相机数据进行定位和建图;
从场景中提取的不正确信息也会导致过程中增加更多的噪声。
当考虑环境时,我们可以在子图“e”中看到,一半以上的方法也可以在具有挑战性的动态环境中工作,而其余的系统只关注没有动态变化的环境。此外,在子图“f”中,大多数方法都适用于“室内环境”或“室内和室外环境”,而其余的论文仅在室外条件下进行了测试。应当指出的是,如果在其他情况下采用的方法只能在具有限制性假设的特定情况下工作,则可能不会产生相同的准确性。这是一些方法只集中于特定情况的主要原因之一。
分析当前趋势
本文回顾了最先进的视觉SLAM方法,这些方法吸引了大量关注,并展示了它们在该领域的主要贡献。尽管在过去几年中,VSLAM系统的各个模块都有了广泛的可靠解决方案和改进,但仍有许多高潜力领域和未解决的问题需要在这些领域进行研究,从而在SLAM的未来发展中采用更稳健的方法。鉴于视觉SLAM方法的广泛性,论文介绍以下开放的研究方向:
深度学习:深度神经网络在各种应用中显示出令人鼓舞的结果,包括VSLAM[15],使其成为多个研究领域的一个重要趋势。由于其学习能力,这些体系结构已显示出相当大的潜力,可以用作可靠的特征提取器,以解决VO和回环检测中的不同问题。CNN可以帮助VSLAM进行精确的目标检测和语义分割,并且在正确识别人工设计的特征方面可以优于传统的特征提取和匹配算法。必须指出的是,由于基于深度学习的方法是在具有大量多样数据和有限目标类的数据集上进行训练的,因此总是存在对动态点进行错误分类并导致错误分割的风险。因此,它可能导致较低的分割精度和姿态估计误差。
信息检索和计算成本权衡:通常情况下,处理成本和场景中的信息量应始终保持平衡。从这个角度来看,密集地图允许VSLAM应用程序记录高维完整场景信息,但实时这样做将需要计算量。另一方面,稀疏表示由于其较低的计算成本,将无法捕获所有需要的信息。还应注意的是,实时性能与摄像机的帧速率直接相关,峰值处理时间的帧丢失会对VSLAM系统的性能产生负面影响,而与算法性能无关。此外,VSLAM通常利用紧耦合的模块,修改一个模块可能会对其他模块产生不利影响,这使得平衡任务更具挑战性。
语义分割:在创建环境地图的同时提供语义信息可以为机器人带来非常有用的信息。识别摄像机视场中的目标(例如门、窗、人等)是当前和未来VSLAM工作中的一个热门话题,因为语义信息可用于姿态估计、轨迹规划和回环检测模块。随着目标检测和跟踪算法的广泛使用,语义VSLAM无疑将成为该领域未来的解决方案之一。回环算法:任何SLAM系统中的关键问题之一是漂移问题,以及由于累积的定位误差而导致的特征轨迹丢失。在VSLAM系统中,检测漂移和回环以识别先前访问过的位置会导致计算延迟和高成本[89]。主要原因是回环检测的复杂度随着重建地图的大小而增加。此外,组合从不同地点收集的地图数据并细化估计姿态是非常复杂的任务。因此,回环检测模块的优化和平衡具有巨大的改进空间。检测回环的常见方法之一是通过基于局部特征训练视觉词汇表,然后将其聚合来改进图像检索。
在具有挑战性的场景中工作:在没有纹理的环境中工作,很少有显著特征点,这通常会导致机器人的位置和方向出现漂移误差。作为VSLAM的主要挑战之一,此错误可能导致系统故障。因此,在基于特征的方法中考虑互补的场景理解方法,例如目标检测或线条特征,将是一个热门话题。
结论
本文介绍了一系列SLAM算法,其中从摄像机采集的视觉数据起着重要作用。论文根据VSLAM系统方法的各种特点,如实验环境、新颖领域、目标检测和跟踪算法、语义级生存能力、性能等,对其最近的工作进行了分类。论文还根据作者的主张、未来版本的改进以及其他相关方法中解决的问题,回顾了相关算法的关键贡献以及现有的缺陷和挑战。本文的另一个贡献是讨论了VSLAM系统的当前趋势以及研究人员将更多研究的现有开放问题。
#SLAM2
关于这个也到第2了
SLAM也称为CML, 即时定位与地图构建,或并发建图与定位。本文从SLAM的概念出发,对SLAM技术所用到的传感器做出详细介绍,接着对实现SLAM算法所涉及的4个要素进行讲解,最后介绍SLAM技术当前应用最广泛的四个领域。
什么是SLAM?
SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。
问题可以描述为:将一个机器人放入未知环境中的未知位置,是否有办法让机器人一边逐步描绘出此环境完全的地图,同时一边决定机器人应该往哪个方向行进。
例如扫地机器人就是一个很典型的SLAM问题,所谓完全的地图(a consistent map)是指不受障碍行进到房间可进入的每个角落。
SLAM最早由Smith、Self和Cheeseman于1988年提出。
由于其重要的理论与应用价值,被很多学者认为是实现真正全自主移动机器人的关键。
当你来到一个陌生的环境时,为了迅速熟悉环境并完成自己的任务(比如找饭馆,找旅馆),你应当做以下事情:
a.用眼睛观察周围地标如建筑、大树、花坛等,并记住他们的特征(特征提取)
b.在自己的脑海中,根据双目获得的信息,把特征地标在三维地图中重建出来(三维重建)
c.当自己在行走时,不断获取新的特征地标,并且校正自己头脑中的地图模型(bundle adjustment or EKF)
d.根据自己前一段时间行走获得的特征地标,确定自己的位置(trajectory)
e.当无意中走了很长一段路的时候,和脑海中的以往地标进行匹配,看一看是否走回了原路(loop-closure detection)。实际这一步可有可无。
以上五步是同时进行的,因此是simultaneous localization and mapping。
两类重要传感器
目前用在SLAM上的Sensor主要分两大类,激光雷达和摄像头。
这里面列举了一些常见的雷达和各种深度摄像头。激光雷达有单线多线之分,角分辨率及精度也各有千秋。
SICK、velodyne、Hokuyo以及国内的北醒光学、Slamtech是比较有名的激光雷达厂商。他们可以作为SLAM的一种输入形式。
这里展示的就是一种简单的2D SLAM。
这个小视频是宾大的教授kumar做的特别有名的一个demo,是在无人机上利用二维激光雷达做的SLAM。
而VSLAM则主要用摄像头来实现,摄像头品种繁多,主要分为单目、双目、单目结构光、双目结构光、ToF几大类。
他们的核心都是获取RGB和depth map(深度信息)。
简单的单目和双目(Zed、leapmotion)我这里不多做解释,我主要解释一下结构光和ToF。
结构光和TOF
结构光
结构光原理的深度摄像机通常具有激光投射器、光学衍射元件(DOE)、红外摄像头三大核心器件。
这个图(下图)摘自primesense的专利。
可以看到primesense的doe是由两部分组成的,一个是扩散片,一个是衍射片。
先通过扩散成一个区域的随机散斑,然后复制成九份,投射到了被摄物体上。根据红外摄像头捕捉到的红外散斑,PS1080这个芯片就可以快速解算出各个点的深度信息。
这儿还有两款结构光原理的摄像头。
第一幅图它是由两幅十分规律的散斑组成,最后同时被红外相机获得,精度相对较高。但据说DOE成本也比较高。
还有一种比较独特的方案(最后一幅图),它采用mems微镜的方式,类似DLP投影仪,将激光器进行调频,通过微镜反射出去,并快速改变微镜姿态,进行行列扫描,实现结构光的投射。(产自ST,ST经常做出一些比较炫的黑科技)。
TOF
ToF(time of flight)也是一种很有前景的深度获取方法。
传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息。
类似于雷达,或者想象一下蝙蝠,softkinetic的DS325采用的就是ToF方案(TI设计的)。
但是它的接收器微观结构比较特殊,有2个或者更多快门,测ps级别的时间差,但它的单位像素尺寸通常在100um的尺寸,所以目前分辨率不高。
在有了深度图之后呢,SLAM算法就开始工作了,由于Sensor和需求的不同,SLAM的呈现形式略有差异。
大致可以分为激光SLAM(也分2D和3D)和视觉SLAM(也分Sparse、semiDense、Dense)两类,但其主要思路大同小异。
这个是Sparse(稀疏)的
这个偏Dense(密集)的
SLAM算法实现的4要素
SLAM算法在实现的时候主要要考虑以下4个方面:
地图表示问题,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择
信息感知问题,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大
数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理
定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化
其他的还有回环检测问题,探索问题(exploration),以及绑架问题(kidnapping)。
640-3
这个是一个比较有名的SLAM算法,这个回环检测就很漂亮。但这个调用了cuda,gpu对运算能力要求挺高,效果看起来比较炫。
以VSLAM举个例子。
我大概讲一种比较流行的VSLAM方法框架。整个SLAM大概可以分为前端和后端。
前端相当于VO(视觉里程计),研究帧与帧之间变换关系。
首先提取每帧图像特征点,利用相邻帧图像,进行特征点匹配,然后利用RANSAC去除大噪声,然后进行匹配,得到一个pose信息(位置和姿态),同时可以利用IMU(Inertial measurement unit惯性测量单元)提供的姿态信息进行滤波融合后端则主要是对前端出结果进行优化,利用滤波理论(EKF、UKF、PF)、或者优化理论TORO、G2O进行树或者图的优化。最终得到最优的位姿估计。
后端这边难点比较多,涉及到的数学知识也比较多,总的来说大家已经慢慢抛弃传统的滤波理论走向图优化去了。
因为基于滤波的理论,滤波器稳度增长太快,这对于需要频繁求逆的EKF(扩展卡尔曼滤波器),PF压力很大。
而基于图的SLAM,通常以keyframe(关键帧)为基础,建立多个节点和节点之间的相对变换关系,比如仿射变换矩阵,并不断地进行关键节点的维护,保证图的容量,在保证精度的同时,降低了计算量。
列举几个目前比较有名的SLAM算法:PTAM,MonoSLAM, ORB-SLAM,RGBD-SLAM,RTAB-SLAM,LSD-SLAM。
所以大家如果想学习SLAM的话,各个高校提高的素材是很多的,比如宾大、MIT、ETH、香港科技大学、帝国理工等等都有比较好的代表作品,还有一个比较有前景的就是三维的机器视觉,普林斯顿大学的肖剑雄教授结合SLAM和Deep Learning做一些三维物体的分类和识别,实现一个对场景深度理解的机器人感知引擎。
http://robots.princeton.edu/talks/2016_MIT/RobotPerception.pdf
Multi-scale detection
SLAM技术从最早的军事用途(核潜艇海底定位就有了SLAM的雏形)到今天,已经逐步走入人们的视野,扫地机器人的盛行更是让它名声大噪。
同时基于三维视觉的VSLAM越来越显主流。在地面/空中机器人、VR/AR/MR、汽车/AGV自动驾驶等领域,都会得到深入的发展,同时也会出现越来越多的细分市场等待挖掘。
室内机器人
扫地机要算机器人里最早用到SLAM技术这一批了。
国内的科沃斯、塔米扫地机通过用SLAM算法结合激光雷达或者摄像头的方法,让扫地机可以高效绘制室内地图,智能分析和规划扫地环境,从而成功让自己步入了智能导航的阵列。
不过有意思的是,科沃斯引领时尚还没多久,一大帮懂Slam算法的扫地机厂商就开始陆陆续续地推出自己的智能导航,直到昨天雷锋网还看到一款智能扫地机新鲜出炉,而这追逐背后的核心,大家都知道就是SLAM技术的应用。
而另一个跟SLAM息息相关的室内移动机器人,因为目前市场定位和需求并不明确,我们目前只能在商场导购室内机器人和Buddy那样的demo视频里才能看到,国内Watchhhh Slam和Slam Tech两家公司都是做这方面方案提供的,以现实的观点看,现在室内移动机器人市场定位和需求没落地的时候,由方案商公司推动,商用室内移动机器人先行,这反而是一种曲线救国的发展方式。
AR
目前基于SLAM技术开发的代表性产品有微软的Hololens,谷歌的Project Tango以及同样有名的Magic Leap,后者4月20号公布它的新一代水母版demo后,国内的AR公司更加看到了这个趋势。
比如进化动力近期就公布了他们的SLAM demo, 用一个小摄像头实现VR头显空间定位,而易瞳去年10月雷锋网去试用新品的时候,就发现已经整合SLAM技术了,国内其他公司虽然没有正式公布,但我们可以肯定,他们都在暗暗研发这项技术,只等一个成熟的时机就会展现给大家。
进化动力CTO聂崇岭向雷锋网表示,如果用一个准确的说法。很多VR应用需要用到SLAM技术,定位只是一个feature,路径记录、3D重构、地图构建都可以是SLAM技术的输出。
无人机
国外的话,原来做 Google X Project Wing 无人机的创始人 MIT 机器人大牛 Nicholas Roy 的学生 Adam Bry 创办的 Skydio,挖来了 Georgia Tech 的 Slam 大牛教授 Frank Dellaert 做他们的首席科学家。
国内大家非常熟悉的大疆精灵四避障用的双目视觉+超声波,一位大疆工程师徐枭涵在百度百家的撰文里坦率承认“P4里面呈现的主动避障功能就是一种非常非常典型的Slam的弱应用,无人机只需要知道障碍物在哪,就可以进行 Planning,并且绕开障碍物。
当然Slam能做的事情远远不止这些,包括灾区救援,包括探洞,包括人机配合甚至集群,所有的关于无人机的梦想都建立在Slam之上,这是无人机能飞(具有定位,姿态确定以后)的时代以后,无人机最核心的技术。”
而近期另一个号称刷爆美国朋友圈的hover camera无人机,因为其创始人的的计算机视觉背景,正式把SLAM技术应用进来了,在介绍他们无人机的主要产品技术时,提到了SLAM(即时定位与地图构建):通过感知自身周围环境来构建3D增量式地图,从而实现自主定位和导航。
无人驾驶
因为Google无人驾驶车的科普,很多人都知道了基于激光雷达技术的Lidar Slam。
Lidar Slam是指利用激光雷达作为外部传感器,获取地图数据,使机器人实现同步定位与地图构建。虽然成本高昂,但目前为止是最稳定、最可靠、高性能的SLAM方式。
另外,2011 年,牛津大学Mobile Robotics Group 首次向公众展示他们的第一辆无人驾驶汽车野猫(Wildcat),这是一辆由 Bowler Wildcat 4X4 改装而成的车。汽车头顶的相机和激光能够搜集信息然后即时分析导航,已经成功通过了测试。
2014 年,他们改装的一辆 Nissan 的 Leaf 也成功路测。
Mobile Robotics Group主要研究领域是大规模的导航和对自然场景理解。
据称,团队所拥有的技术非常牛逼,其复杂和先进性远远超过一般的同步定位与地图构建(SLAM)算法。
可圈可点的是,对于无人驾驶技术,他们并没有使用 GPS 或者是嵌入式的基础设施(信标之类的),而是使用算法来导航,包括机器学习和概率推理来建立周围的地图等。
#SLAM3
到第3集了这次是密集单目 SLAM 的概率体积融合
我们提出了一种利用深度密集单目 SLAM 和快速不确定性传播从图像重建 3D 场景的新方法。所提出的方法能够密集、准确、实时地 3D 重建场景,同时对来自密集单目 SLAM 的极其嘈杂的深度估计具有鲁棒性。不同于以前的方法,要么使用临时深度过滤器,要么从 RGB-D 相机的传感器模型估计深度不确定性,我们的概率深度不确定性直接来自SLAM中底层BA问题的信息矩阵。我们表明,由此产生的深度不确定性为体积融合的深度图加权提供了极好的信号。如果没有我们的深度不确定性,生成的网格就会很嘈杂并且带有伪影,而我们的方法会生成一个精确的 3D 网格,并且伪影要少得多。我们提供了具有挑战性的 Euroc 数据集的结果,并表明我们的方法比直接融合单目 SLAM 的深度提高了 92% 的准确性,与最佳竞争方法相比提高了 90%
单目图像的 3D 重建仍然是最困难的计算机视觉问题之一。仅从图像实时实现 3D 重建就可以实现机器人、测量和游戏中的许多应用,例如自动驾驶汽车、作物监测和增强现实。
虽然许多 3D 重建解决方案基于 RGB-D 或激光雷达传感器,但单目图像的场景重建提供了更方便的解决方案。RGB-D 相机在某些条件下可能会失效,例如在阳光下,激光雷达仍然比单目 RGB 相机更重、更昂贵。或者,立体相机将深度估计问题简化为一维视差搜索,但依赖于在实际操作中容易出现错误校准的相机的精确校准。
相反,单目相机便宜、重量轻,代表了最简单的传感器配置来校准。不幸的是,由于缺乏对场景几何形状的明确测量,单目 3D 重建是一个具有挑战性的问题。尽管如此,最近通过利用深度学习方法在基于单眼的 3D 重建方面取得了很大进展。鉴于深度学习目前在光流 [23] 和深度 [29] 估计方面取得了最佳性能,因此大量工作已尝试将深度学习模块用于 SLAM。例如,使用来自单目图像 [22]、多幅图像的深度估计网络,如多视图立体 [10],或使用端到端神经网络 [3]。然而,即使有了深度学习带来的改进,由此产生的重建也容易出现错误和伪影,因为深度图大部分时间都是嘈杂的并且有异常值。
在这项工作中,我们展示了如何从使用密集单目 SLAM 时估计的嘈杂深度图中大幅减少 3D 重建中的伪影和不准确性。为实现这一点,我们通过根据概率估计的不确定性对每个深度测量值进行加权来体积融合深度图。与以前的方法不同,我们表明,在单目 SLAM 中使用从BA问题的信息矩阵导出的深度不确定性导致令人惊讶的准确 3D 网格重建。我们的方法在映射精度方面实现了高达 90% 的改进,同时保留了大部分场景几何。
贡献:我们展示了一种体积融合密集深度图的方法,该深度图由密集 SLAM 中的信息矩阵导出的不确定性加权。我们的方法使场景重建达到给定的最大可容忍不确定性水平。与竞争方法相比,我们可以以更高的精度重建场景,同时实时运行,并且仅使用单目图像。我们在具有挑战性的 EuRoC 数据集中实现了最先进的 3D 重建性能。
图 1.(左)原始 3D 点云通过反向投影逆深度图从密集单眼 SLAM 生成,没有过滤或后处理。(右)深度图的不确定性感知体积融合后估计的 3D 网格。尽管深度图中有大量噪声,但使用我们提出的方法重建的 3D 网格是准确和完整的。EuRoC V2 01 数据集。
密集 SLAM 和深度融合
Dense SLAM
实现Dense SLAM 的主要挑战是(i)由于要估计的深度变量的剪切量导致的计算复杂性,以及(ii)处理模糊或缺失的信息以估计场景的深度,例如无纹理表面或混叠图像。
从历史上看,第一个问题已通过解耦姿态和深度估计而被绕过。例如,DTAM [12] 通过使用与稀疏 PTAM [9] 相同的范例来实现Dense SLAM,它以解耦的方式首先跟踪相机姿势,然后跟踪深度。第二个问题通常也可以通过使用提供明确深度测量的 RGB-D 或激光雷达传感器或简化深度估计的立体相机来避免。
尽管如此,最近对Dense SLAM 的研究在这两个方面取得了令人瞩目的成果。为了减少深度变量的数量,CodeSLAM [3] 优化了从图像推断深度图的自动编码器的潜在变量。通过优化这些潜在变量,问题的维数显着降低,而生成的深度图仍然很密集。Tandem [10] 能够通过在单眼深度估计上使用预训练的 MVSNet 式神经网络,然后通过执行帧到模型的光度跟踪来解耦姿态/深度问题,从而仅使用单眼图像重建 3D 场景。Droid-SLAM [24] 表明,通过采用最先进的密集光流估计架构 [23] 来解决视觉里程计问题,有可能在各种情况下取得有竞争力的结果具有挑战性的数据集(例如 Euroc [4] 和 TartanAir [25] 数据集),即使它需要全局束调整以优于基于模型的方法。Droid-SLAM 通过使用下采样深度图避免了维度问题,随后使用学习的上采样运算符对深度图进行上采样。最后,有无数的作品避免了上述的维度和歧义问题,但最近已经取得了改进的性能。例如,iMap [21] 和 Nice-SLAM [31] 可以通过解耦姿态和深度估计以及使用 RGB-D 图像来构建精确的 3D 重建,并通过使用神经辐射场 [11] 实现光度精确重建.鉴于这些工作,我们可以期待未来学习的Dense SLAM 变得更加准确和稳健。
不幸的是,我们还不能从随意的图像集合中获得像素完美的深度图,将这些深度图直接融合到体积表示中通常会导致伪影和不准确。我们的工作利用 Droid-SLAM [24] 来估计每个关键帧的极其密集(但非常嘈杂)的深度图(参见图 1 中的左侧点云),我们通过根据深度的不确定性对深度进行加权,成功地将其融合到体积表示中,估计为边际协方差。
深度融合
绝大多数 3D 重建算法都基于将深度传感器提供的深度图融合到体积图 [13、15、17] 中。因此,大多数使用体积表示的文献都专注于研究获得更好深度图的方法,例如后处理技术,或融合深度时要使用的加权函数 [5、13、14、28]。大多数文献,通过假设深度图来自传感器,专注于传感器建模。或者,在使用深度学习时,类似的方法是让神经网络学习权重。例如,RoutedFusion [26] 和 NeuralFusion [27] 学习从 RGB-D 扫描中去噪体积重建。
在我们的例子中,由于深度图是通过密集BA估计的,我们建议使用估计深度的边际协方差直接融合深度图。这在计算上很难做到,因为在Dense SLAM 中,每个关键帧的深度数可能与帧中的像素总数一样高 (≈ 105)。我们在下面展示了我们如何通过利用信息矩阵的块稀疏结构来实现这一点。
方 法
我们方法的主要思想是将由概率不确定性加权的极其密集但嘈杂的深度图融合到体积图中,然后提取具有给定最大不确定性界限的 3D 网格。为实现这一目标,我们利用 Droid-SLAM 的公式来生成姿态估计和密集深度图,并将其扩展为生成密集不确定性图。
我们将首先展示如何从基础BA问题的信息矩阵中有效地计算深度不确定性。然后,我们提出了我们的融合策略以生成概率合理的体积图。最后,我们展示了如何在给定的最大不确定性范围内从体积中提取网格。
密集单目 SLAM
其核心,经典的基于视觉的逆深度间接 SLAM 解决了束调整 (BA) 问题,其中 3D 几何被参数化为每个关键帧的一组(逆)深度。这种结构的参数化导致了一种解决密集 BA 问题的极其有效的方法,可以将其分解为熟悉的箭头状块稀疏矩阵,其中相机和深度按顺序排列:
尽管如此,为了对实时 SLAM 进行足够快的推理,逆深度图的估计分辨率低于原始图像的 1/8,在我们的例子中为 69×44 像素(Euroc 数据集的原始分辨率为 752×480,这我们首先下采样到 512×384)。一旦解决了这个低分辨率深度图,学习的上采样操作(首先在 [23] 中显示用于光流估计,并在 Droid-SLAM 中使用)恢复全分辨率深度图。这使我们能够有效地重建与输入图像具有相同分辨率的密集深度图。
使用高分辨率深度图解决相同的 BA 问题对于实时 SLAM 来说是非常昂贵的,深度不确定性的计算进一步加剧了这个问题。我们相信这就是为什么其他作者没有使用从 BA 导出的深度不确定性进行实时体积 3D 重建的原因:使用全深度 BA 的成本高得令人望而却步,而使用稀疏深度 BA 会导致深度图过于稀疏,无法进行体积重建重建。替代方案一直是使用稀疏 BA 进行姿态估计和几何形状的第一次猜测,然后是与稀疏 BA 中的信息矩阵无关的致密化步骤 [20]。这就是为什么其他作者建议对密集 SLAM 使用替代 3D 表示,例如 CodeSLAM [3] 中的潜在向量。我们的方法也可以应用于 CodeSLAM.
逆深度不确定性估计
鉴于 Hessian 的稀疏模式,我们可以有效地提取每像素深度变量所需的边际协方差。逆深度图 Σd 的边际协方差由下式给出:
其中 di 是每个像素的逆深度之一。由于大多数操作都可以并行计算,因此我们利用了 GPU 的大规模并行性。
深度上采样和不确定性传播
最后,由于我们想要一个与原始图像分辨率相同的深度图,我们使用 Raft [23] 中定义的凸上采样运算符对低分辨率深度图进行上采样,该运算符也在 Droid [24] 中使用.这种上采样操作通过采用低分辨率深度图中相邻深度值的凸组合来计算高分辨率深度图中每个像素的深度估计。通过以下方式为每个像素给出生成的深度估计:
其中 z 是生成的深度,d 是反深度。
不确定性感知体积映射
鉴于每个关键帧可用的密集深度图,可以构建场景的密集 3D 网格。不幸的是,深度图由于它们的密度而非常嘈杂,因为即使是无纹理区域也会被赋予深度值。体积融合这些深度图降低了噪声,但重建仍然不准确并且被伪影破坏(参见图 4 中的“基线”,它是通过融合图 1 中所示的点云计算的)
虽然可以在深度图上手动设置过滤器(有关可能的深度过滤器示例,请参阅 PCL 的文档 [19])并且 Droid 实现了一个 ad-hoc 深度过滤器(参见图 4 中的 Droid),但我们建议改用估计的深度图的不确定性,这提供了一种稳健且数学上合理的方式来重建场景。
体积融合基于概率模型[7],其中假设每个深度测量是独立的和高斯分布的。在这个公式下,我们尝试估计的带符号距离函数 (SDF) φ 最大化了以下可能性:
其中 Wi 是存储在每个体素中的权重。权重初始化为零,W0 = 0,TSDF 初始化为截断距离 τ,φ0 = τ(在我们的实验中,τ = 0.1m)。上面的公式作为移动加权平均值,在使用的权重函数方面非常灵活。这种灵活性导致了融合深度图的许多不同方法,有时会偏离其概率公式。
图 2. 给定最大允许网格不确定性 Σdi 的 3D 网格重建从无穷大上限(即最小权重 0.0,最左侧的 3D 网格)到 0.01(即最小权重 10,最右侧的 3D 网格)呈对数下降.由于高度不确定性,用红色圆圈突出显示的区域首先消失。这些对应于无纹理和混叠区域。两个最接近的红色圆圈对应于与图 3 中描绘的区域相同的区域。
大多数方法通过对所用深度传感器的误差分布进行建模来确定权重函数,无论是激光扫描仪、RGB-D 相机还是立体相机 [7、15、18]。例如,Nguyen 等人。[14] 对来自 RGB-D 相机的残差进行建模,并确定深度方差由 z2 主导,z 是测量的深度。拜洛等人。[5] 分析了各种权重函数,并得出结论,在表面后面线性递减的权重函数会导致最佳结果。Voxblox [15] 将这两个工作组合成一个简化的公式,效果很好,它也被用于 Kimera [17]
在我们的例子中,不需要复杂的加权或传感器模型;深度不确定性是根据 SLAM 中固有的概率因子图公式计算的。具体来说,我们的权重与深度的边际协方差成反比,这是从方程式中的概率角度得出的。(13).值得注意的是,这些权重来自数百个光流测量与神经网络估计的相关测量噪声的融合(GRU 在 Droid [24] 中的输出)。
不确定性界限的网格划分
鉴于我们的体素对带符号的距离函数具有概率合理的不确定性估计,我们可以提取不同级别的等值面以允许最大不确定性。我们使用行进立方体提取表面,只对那些不确定性估计低于最大允许不确定性的体素进行网格划分。生成的网格只有具有给定上限不确定性的几何体,而我们的体积包含所有深度图的信息。
如果我们将不确定性边界设置为无穷大,即权重为 0,我们将恢复基线解决方案,该解决方案非常嘈杂。通过逐渐减小边界,我们可以在更准确但更不完整的 3D 网格之间取得平衡,反之亦然。在第 4 节中,我们展示了随着不确定性界限值的降低而获得的不同网格(图 2)。在我们的实验中,我们没有尝试为我们的方法找到特定的帕累托最优解,而是使用不确定性 0.1 的固定最大上限,这导致非常准确的 3D 网格,完整性略有损失(参见第 4 节进行定量评估)。请注意,在不固定比例的情况下,此不确定性界限是无单位的,可能需要根据估计的比例进行调整。
实现细节
我们使用 CUDA 在 Pytorch 中执行所有计算,并使用 RTX 2080 Ti GPU 进行所有实验(11Gb 内存)。对于体积融合,我们使用 Open3D 的 [30] 库,它允许自定义体积集成。我们使用相同的GPU 用于 SLAM 并执行体积重建。我们使用来自 Droid-SLAM [24] 的预训练权重。最后,我们使用 Open3D 中实现的行进立方体算法来提取 3D 网格。
结 果
第 4.2 节和第 4.3 节展示了我们提出的 3D 网格重建算法的定性和定量评估,相对于基线和最先进的方法,在 EuRoC 数据集上,使用具有以下场景的子集真实点云。
定性分析展示了我们方法的优缺点,并在感知质量和几何保真度方面与其他技术进行了比较。对于定量部分,我们计算了准确性和完整性指标的 RMSE,以客观地评估性能我们的算法对竞争方法的影响。我们现在描述数据集和用于评估的不同方法。
数据集和评估方法
为了评估我们的重建算法,我们使用了 EuRoC 数据集,该数据集由在室内空间飞行的无人机记录的图像组成。我们使用 EuRoC V1 和 V2 数据集中可用的地面实况点云来评估我们的方法生成的 3D 网格的质量。对于我们所有的实验,我们将最大允许网格不确定性设置为 0.1。
我们将我们的方法与两种不同的开源最先进的学习和基于模型的密集 VO 算法进行比较:Tandem [10],一种学习的密集单目 VO 算法,它使用 MVSNet 风格的架构和光度学捆绑包 -调整和 Kimera [17],一种基于模型的密集立体 VIO 算法。两者都使用体积融合来重建 3D 场景并输出环境的 3D 网格。我们还展示了在 Droid 的 ad-hoc 深度过滤器之后融合 Droid 的点云的结果,该过滤器通过计算在阈值(默认为 0.005)内重新投影的附近深度图的数量来计算深度值的支持。然后丢弃任何小于 2 个支持深度或小于平均深度一半的深度值。Droid 的过滤器用于去除深度图上的异常值,而我们融合所有由不确定性加权的深度图。作为我们的基线,我们使用 Droid 估计的原始点云,并将它们直接融合到体积重建中。
定性建图性能
图2显示了我们如何通过改变3D重建中允许的最大不确定性水平来权衡精确度的完整性。我们还可以看到不太确定的几何形状是如何逐渐消失的。最不确定的几何形状对应于漂浮在3D空间中的伪影,因为深度三角化不好,当反向投影时散落在3D射线中(图2中的第一列)。然后,我们看到消失的后续几何形状对应于无纹理区域(每列中最左边和最右边的红色圆圈)。有趣的是,在无纹理区域之后移除的几何形状对应于高度锯齿的区域(图2中每列中的中间红色圆圈),例如加热器或房间中棋盘格的中心。
图 3.(左列)第 i 帧。(右栏)第 j 帧。(左上)第 i 帧的估计深度图。(左下)帧 i 的估计深度图不确定性。(右上)从第 i 帧到第 j 帧的光流 x 分量的光流测量权重。(右下)y 分量的光流测量权重。请注意,流权重位于帧 i 在帧 j 中可见的位置。深度的不确定性来自多个光流测量的融合,而不是单个光流测量。对于左列,低值显示为黄色,高值显示为蓝色。对于右列,低值显示为蓝色,高值显示为黄色。EuRoC V1 01 数据集。
仔细观察图 3 可以看出,估计的深度不确定性 Σd 不仅对于无纹理区域很大,而且对于具有强混叠的区域也很难解决基于光流的 SLAM 算法(中间的加热器)图片)。实际上,对于具有强混叠或无纹理区域的区域,光流权重(图 3 中的右栏)接近于 0。这种新出现的行为是一个有趣的结果,可用于检测混叠几何,或指导孔填充重建方法。
图 4. Kimera [17]、Tandem [10]、我们的基线和 Droid 的深度过滤器 [24](使用默认阈值 0.005)重建的 3D 网格与我们使用最大容忍网格不确定性 0.1 的方法的比较。EuRoC V2 01 数据集。
图4定性地比较了Kimera[17]、Tan晚会[10]、基线方法、Droid[24]和我们的方法的3D重建。我们可以看到,与我们的基线方法相比,我们在准确性和完整性方面都表现得更好。Kimera能够构建完整的3D重建,但与我们的方法相比,缺乏准确性和细节。Tandem是表现最好的竞争方案,并且比我们提议的方法产生了相似的重建结果。从图4中,我们可以看到Tandem比我们的更完整(见我们重建中右下角缺失的地板条),同时稍微不太准确(见重建的左上角部分,在Tandem的网格中扭曲)。原则上,我们的方法也可以重建房间的底层(基线重建有这些信息)。尽管如此,在机器人环境中,最好是意识到哪个区域是未知的,而不是做出不准确的第一次猜测,因为这可能会关闭机器人可能穿过的路径(DARPA SubT挑战赛[1]中的一个常见场景,机器人探索隧道和洞穴网络)。最后,Droid的深度过滤器缺少重要区域,并对重建精度产生负面影响。
表 1. 精度 RMSE [m]:对于我们的方法生成的 3D 网格,与 Kimera、Tandem、Droid 的过滤器和我们的基线相比,在具有地面实况点云的 EuRoC 数据集的子集上。请注意,如果一种方法仅估计几个准确的点(例如 Droid),则准确度可以达到 0。粗体为最佳方法,斜体为次优,- 表示未重建网格。
表 2. 完整性 RMSE [m]:对于我们的方法生成的 3D 网格,与 Kimera、Tandem 和我们的基线相比,在具有地面实况点云的 EuRoC 数据集的子集上。请注意,如果一种方法估计密集的点云(例如基线),则完整性可以达到 0。粗体为最佳方法,斜体为次优,- 表示未重建网格
定量建图性能
我们使用精度和完整性度量根据地面实况评估每个网格,如[16,第4.3节]:(i)我们首先通过以104点/m2的均匀密度对重建的3D网格进行采样来计算点云,(ii)我们使用CloudCompare[6]将估计的和地面实况云注册到ICP[2],以及(iii)我们评估从地面实况点云到估计点云中最近邻居的平均距离(精度),反之亦然(完整性),具有0.5m最大差异。
第 4.2 节和第 4.3 节提供了我们提出的方法、Droid 的过滤器和我们的基线之间的定量比较,以及与 Kimera [17] 和 Tandem [10] 在准确性和完整性方面的比较。从表中可以看出,我们提出的方法在准确性方面表现最好,差距很大(与 Tandem 相比高达 90%,与 V1 03 的基线相比高达 92%),而 Tandem 达到了第二 -整体最佳准确度。在完整性方面,Tandem 实现了最佳性能(在基线方法之后),其次是我们的方法。Droid 的过滤器以基本不完整的网格为代价实现了良好的精度。
图 6 显示了 Tandem(顶部)和我们的重建(底部)的估计云(V2 01)根据到地面真实云中最近点的距离(准确性)进行颜色编码。我们可以从这个图中看到我们的重建比 Tandem 的更准确。特别是有趣的是,Tandem 倾向于生成膨胀的几何体,特别是在无纹理区域,例如 V2 01 数据集中的黑色窗帘(灰色几何体)。我们的方法具有更好的细节和更好的整体准确性。图。图 5 显示了 Tandem 和我们的方法重建的 3D 网格的特写视图。我们的重建往往不太完整并且存在出血边缘,但保留了大部分细节,而 Tandem 的重建缺乏整体细节和倾向于略微膨胀,但保持更完整。
实时性能
将 Euroc 图像下采样到 512×384 分辨率导致每秒 15 帧的跟踪速度。计算深度不确定性会使跟踪速度降低几帧/秒至 13 帧/秒。体积融合深度估计,有或没有深度不确定性,需要不到 20 毫秒。总的来说,我们的管道能够以每秒 13 帧的速度实时重建场景,通过并行摄像机跟踪和体积重建,并使用自定义 CUDA 内核。
图 5. 仔细观察 Tandem 的 3D 重建与我们的之间的差异。EuRoC V2 01 数据集
图 6. Tandem(上)和我们(下)的 3D 网格重建结果的精度评估。我们在 0.05m 处截断色标,并将其上方的任何内容可视化为灰色,最多 0.5m(超出此误差的几何图形将被丢弃)。请注意,我们的重建在 0.37m 处有最大误差,而 Tandem 的最大误差超出了 0.5m 的界限。EuRoC V2 01 数据集。
总结
我们提出了一种使用密集的单目SLAM和快速深度不确定性计算和传播的3D重建场景的方法。我们表明,我们的深度图不确定性是准确和完整的3D体积重建的可靠信息来源,从而产生具有显著降低噪声和伪影的网格。
鉴于我们的方法提供的映射精度和概率不确定性估计,我们可以预见未来的研究将集中在地图中不确定区域的主动探索上,通过结合语义学来重建其几何形状之外的3D场景,如Kimera语义[18],或者通过使用神经体积隐式响应进行光度精确的3D重建,如Nice-SLAM[31]。
#SLAM4
Arxiv链接:https://arxiv.org/abs/2304.09793
Github 链接:https://github.com/kun150kun/ESLAM-survey
视觉SLAM (vSLAM)是指移动机器人通过相机感知外部世界并估计机器人的位姿和重建周围环境的三维地图。vSLAM在各种应用中扮演着不可或缺的角色,包括自动驾驶,机器人导航和增强现实。例如,在机器人导航里,vSLAM能够提供环境信息和机器人的位置来帮助它到达指定的地点。vSLAM通常利用传统的RGB相机获取图片信息。然而传统的相机局限于低动态感光范围和运动中产生的动态模糊,而无法在复杂的场景下得到精准的位姿估计和三维重建结果。近年来,基于一种新的仿生相机,即事件相机,相应的vSLAM算法被相继提出。该类方法利用事件相机的高帧率、高动态感光范围、低能耗、低延迟等特性在一些复杂的场景下也能得到了非常优异的结果。
本综述综合性地概述了基于事件相机的vSLAM研究进展,同时也包含了事件相机的工作原理和事件数据的预处理和表征形式。我们将主流的算法分为四大类,即特征法、直接法 、运动补偿法和基于深度学习的方法。在每个类别中,我们对相应的算法框架、突出贡献、优势和局限性都进行了充分的论述。另外,本文还整合了包含事件相机及多模态的诸多vSLAM的数据集,并在典型的数据集上对具有代表性的方法进行了系统的结果评估,也同时讨论了不同方法各自适用的场景。最后,我们讨论了目前基于事件相机的vSLAM存在的挑战以及未来可能的研究方向。
本综述总结的方法细节、数据集、实验与评估的结果都已在线公开并会保持更新,详情请见链接https://github.com/kun150kun/ESLAM-survey。
事件相机vSLAM介绍
vSLAM能够通过视觉传感器来获取环境信息,以达到估计机器人位姿和周围环境三维重建的目的。但是传统的视觉传感器受限于它的硬件而导致的低动态感光范围和运动中产生的动态模糊,在一些复杂的场景下无法得到良好的结果,例如高速运动中的或者复杂的光照条件下的场景。
近年来,事件相机受到了研究者们的关注。由于事件相机的高帧率、低延迟和高动态感光范围,使得基于事件相机的vSLAM 能够胜任一些复杂的场景,尤其是高速运动和复杂光照下的场景。但是,事件相机产生的事件数据和传统相机产生的图像完全不同。如图1(a, b)所示,事件相机通过记录了每个像素点的光度变化而产生时间连续性的、异步的、稀疏的和不规则的数据。因此传统的vSLAM算法不能直接运用在事件数据上。同时,每个事件传递的信息极少,且极易受到硬件噪声的影响。此外,事件相机引入了更加复杂的多视图几何关系。所以,我们需要一个新的框架来处理事件数据来实现vSLAM。
为了能让基于事件相机的vSLAM在事件数据上实现位姿估计和三维重建,研究者设计出了多种多样针对事件相机的数据关联、位姿估计和三维重建的解决方案。我们将主流的算法分类为四种类别,分别为特征法、直接法、运动补偿法和基于深度学习的方法。特征法通过在事件数据中提取并跟踪特征点实现vSLAM;而直接法隐式关联事件数据一次实现vSLAM;运动补偿法通过消除投影在图像平面上的事件表征所产生的动态模糊来估计相机的运动;基于深度学习的方法利用神经网络实现端到端的预测位姿和三维图。本文对相关的研究算法做了详尽的介绍,并对一些具有代表性的方法进行了结果评估。
具体研究进展及讨论
为了处理事件相机产生的异步的、不规则的事件数据,研究者利用滤波器和脉冲神经网络来单独处理每一个原始的事件数据,但是这些方法通常需要大量的运算。另一方面,研究者提出将一组连续的事件数据转化成同步的事件表征形式,例如二维事件帧、时间平面和voxel grid,来平衡延迟和运算量。更多详情可见文章第三章。
主流的vSLAM算法通常包括三个主要的步骤:数据关联、位姿估计和三维重建。它们对相同三维点在不同二维图像平面上的像素点构建关联,通过多视角的几何学进行位姿估计和三维重建。基于事件相机的vSLAM也遵循了这一范式。
特征法通常从事件数据中提取并跟踪特征来构建数据关联,例如原始的点和线特征。利用特征和显式的特征关联,特征法能够估计每个特征点对应的相机位姿和三维点。特征法十分依赖于特征提取和算法的表现,而由于事件数据中的噪声和运动变化的特性,现有的基于事件相机的特征提取算法还不够成熟,使得特征法的效果相对比较差。VIO方法通过结合惯性数据提高特征法的鲁棒性并取得了较好的性能。更多详情可见文章第四章。
直接法分为两类:(a) 事件-图像对齐法利用光度变化和绝对光度的关系来建立每个事件和参照光度图像的像素点,(b) 事件表征对齐法利用了事件数据中的空间-时间的关系对齐两帧事件表征。由于事件一般产生于高图像梯度的区域,这一先验可以帮助直接法筛选像素点。同时,事件相机的高帧率特性保证了两帧之间的相对位姿较小,从而保证了直接法能够得到最优解。更多详情可见文章第五章。
长时间跨度的事件帧通常会产生动态模糊,而运动补偿法旨在优化事件数据的对齐锐化事件帧来估计相机的运动。这种方法能够保留长期的边缘模型,提高相机位姿估计的鲁棒性,同时它们能够运动到事件数据中的时间戳。但是,运动补偿法有可能产生事件塌缩的现象,即所有事件对齐到一个点或者一条线上,而得到不准确的相机位姿。更多详情可见文章第六章。
基于深度学习的方法通常将事件数据转换成二维的事件表征或者三维的voxel grid,采用神经网络提取特征来预测位姿和重建三维图。(a) 无监督学习法利用事件的光流作为训练信号来估计位姿和深度。(b) 监督学习法直接利用位姿和深度真 值来训练神经网络,从而直接预测位姿和深度。神经网络能够提取事件相机的非线性特征并处理事件噪声和异常。但是,深度学习方法需要大量的训练数据,并且其泛用性较差。另外,脉冲神经网络能够直接处理异步的、规则的事件数据,但是这项技术还不够成熟,它的脉冲消失问题和训练问题有待解决。更多详情可见文章第七章。
实验对比
我们首先详细介绍了常用的基于事件相机的vSLAM数据集以及近几年最新的相关数据集。它们提供了事件相机在不同场景、不同光照条件下的事件数据以及相机的位姿和深度图。另外,我们详细介绍了位姿和深度估计的评价标准。我们分别在相机位姿和深度估计两个子任务上对具有代表性的算法进行了详尽的比较。我们在相同的设定下以公正的评测目前的基于事件相机的vSLAM方法与传统相机的方法。相关指标结果如图4,5所示。最后,我们讨论了四种主流方法的适用场景。
挑战与展望
在这一节,我们讨论了基于事件相机的vSLAM面临的主要挑战和未来的研究方向。我们在这里做一个简要的讨论。更多详情可见文章第九章。
理论研究
理论分析能够提供基于事件相机的vSLAM方法泛用性和验证性提供理论保证。近几年,传统的vSLAM发展了许多理论研究,然而基于事件相机的vSLAM缺乏相应的理论研究。如何将传统的vSLAM的理论研究扩展到事件相机上或者建立新的理论体系是一个值得研究的未来方向。
提高恶劣环境下的鲁棒性
即将事件相机在高动态感光范围的环境下有巨大的优势,但是一些恶劣环境下的场景依旧会提高事件数据的噪声,降低基于事件相机的vSLAM方法的准确率,例如,夜晚场景和极端天气状况。如何提高vSLAM方法在恶劣环境下的鲁棒性保有精确的位姿估计和三维重建是一个充满潜力的研究方向。
全局优化
由于不准确的数据关联和传感器的噪声,基于事件相机的vSLAM算法会累积偏移误差,导致在长时间的相机运动下产生更大的误差,而偏离实际的位置。额外的全局优化有望消除累积的便宜误差,例如,全局地图优化和位姿图优化。
多模态的基于事件相机的vSLAM
将基于事件相机的vSLAM方法与多模态领域进行融合可以进一步提高算法的鲁棒性。例如,惯性传感器能够提供惯性数据防止相机跟踪丢失。事件-图像对齐直接法利用光度变化和绝对广度的关系对齐事件和图像上的像素点。未来可以进一步探究不同传感器和事件相机之间互补的特性来得到更精确、鲁棒的vSLAM方法。
总 结
我们提供了一份基于事件相机的vSLAM领域的综述,涵盖了事件相机的工具原理、事件预处理的表征形式、四种主要的vSLAM方法,公开的评估结果以及未来的研究方向。事件相机能够提高vSLAM算法在高速运动和高动态感光范围场景下的鲁棒性。为了能够利用事件相机的优势并运用到vSLAM上,未来还需要我们更好地处理异步的、稀疏的事件数据。我们将长期维护一个开放的github仓库来定期更新最新的工作进展和数据集(https://github.com/kun150kun/ESLAM-survey)。
#SLAM5~
作者(感谢大佬啊)更新博士毕业论文“Decentralized and Distributed Collaborative Simultaneous Localization and Mapping System for Aerial Swarms”的中文科普版,有别于更专业的原版,这一版本主要包括更多的图片,相关工作带有的评述和思考,结果展示;降低一部分算法细节。本系列文章大概会是中文互联网最适合入门多机SLAM的论文之一;读者也可以通过本系列文章对移动机器人感知进行一些了解。
由于工程量巨大(thesis大概有150多页),所以请读者做好本系列文章会更新到夏季的心理准备。一个比较好的预期是每周或者每半个月会写一篇。也请关注我的专栏方便接收更新。
什么是SLAM?为什么我们需要多机SLAM?
一个良好的科普通常从生活中的现象开始,本文也不例外。到2023年,扫地机器人已经走入了千家万户。
一个良好的扫地机器人不仅仅能够灵活的绕开障碍物,也能自动返回到充电器附近对自己进行充电。实现这一技术的核心就是SLAM(实时定位与地图构建,由于这个中文名实在太长,后文简称SLAM)
使用D^2SLAM估计出的不同机器人移动轨迹
使用D2SLAM构建出的稠密地图
大家可能都知道GPS能确定自己的位置,然而GPS很容易受到干扰,在室内环境中更完全无法使用,其基本原理又限制了精度。SLAM技术就像是人类的眼睛+小脑,是几乎一切移动机器人的基础。其目标包括了两个:确定机器人自身在三维空间中的位置和姿态,并且构建出周边环境的地图。这是人类和动物与生俱来的本能,在机器人上是相当复杂的。
随着国内机器人产业的大发展,SLAM技术也在这两年逐渐普及开来,典型的应用几乎涵盖了正在改变世界的大部分工业产品:正大量出货的自动驾驶汽车,逐渐普及开的VR/MR虚拟现实设备和“元宇宙”,市面上的高价无人机,各家各户的扫地机器人,海底捞的送货小车等等。
坦白的说,时至今日,随着视觉,Lidar(激光雷达)两开花,现在的SLAM技术已经趋于成熟,请看下面香港大学林博 @ziv.lin 的工作。
香港大学林博的杰作,激光视觉融合的SLAM:https://github.com/hku-mars/ImMesh
香港大学林博的杰作,激光视觉融合的SLAM:https://github.com/hku-mars/ImMesh
在单机slam逐渐成熟的同时,研究届也正在转向一些更加困难的课题,这其中就包括了多机SLAM。
为什么我们需要多机SLAM?
设想我们有一群无人机
我们希望他们能在狭窄的室内环境或者森林中自由飞翔,去执行救灾,探险等任务。那么想要这些无人机不要在物理上打成一片,我们就必须做到几点:
- 确定每个无人机自身在空间中的位置。
- 确定其他无人机相对于无人机自身在空间中的位置。
- 每个无人机对周围的环境进行感知。确定障碍物的位置。
比较早期的研究者和商业公司,选择了一种粗暴的方式解决这一问题,使用外部定位设施,包括昂贵的动作捕捉系统(对,就是拍电影和Vtuber出道要用的那个),UWB基站,或在在宽阔的室外架设基站,使用rtk-gps来飞行,几乎所有已经商业化的无人机集群(表演)都使用了这一技术。
然而,非常精确的动作捕捉设备不仅仅昂贵,也局限于实验室环境--你不能指望无人机去参加救灾活动的时候先花几个小时假设一套动捕或者UWB基站吧?GPS说过了,容易被干扰且局限于室外,那么有什么比较好的办法解决这一问题呢?
答案就是多机的相对定位以及多机SLAM技术。
截至2023年,这一类技术已经替代了用了20年的动捕,逐渐成为了无人机集群的标配。正是相对定位/多机SLAM技术的发展,使得真正完全自主的无人机集群成为了可能,相关工作的视频有两个值的一看。一个是高飞师兄组的science robotics大作,aerial swarm in the wild[1],这篇文章是全世界第一个完整展现了自然环境中的高度自主的无人机集群的演示,使用的多机技术互相定位技术正是参考了(或者说受启发?)接下来要介绍的我的工作Omni-swarm[2]
www.bilibili.com/video/BV1pv4y1K7zS/?spm_id_from=333.337.search-card.all.click&vd_source=5b500ce27249089310ee479674dfb683
其次是 @周博宇 博士和我合作的工作,Racer[3],这一工作展现了多个无人机集群对未知环境的探索。其定位方案则是直接使用的Omni-swarm
www.bilibili.com/video/BV1F14y1g7cG/?spm_id_from=333.337.search-card.all.click&vd_source=5b500ce27249089310ee479674dfb683
多机SLAM技术都有哪些?
在正式进入话题之前,我们要简单的回顾一下现有的工作。目前的相对定位方案包括了如下几类:
视觉方案
使用视觉进行,例如捕捉红外灯光,marker,直接对其他无人机进行visual detection等;优势是视觉测量精确的相对定位,缺点是歧义性:搞明白哪个飞机是哪个是最大的问题。对于这一问题,解决方案包括不同的灯光组合[4][5],算法硬解等[6]
UWB 信息
UWB可以提供十厘米上下精度的测距信息。使用UWB测距信息也可以用于辅助定位,但是单一uwb信息并不可观,也缺乏定向信息。这使得我们需要和其他方法的融合[7]。
地图环境
使用环境地图方案进行相对和绝对定位通常是一个不错的想法[8],但是仅仅适用于环境特征较为稠密的室内,在室外则有诸多局限性。地图环境定位的另一个问题是需要较大的通信带宽。
我们的方案
这里给出我们方案思路的简述,在后续文章会逐渐分析。
UWB-视觉去中心化定位
首先是针对相对定位和绝对定位这一问题,我首先研究了使用UWB-视觉融合的方法,不仅仅使用uwb和odometry(里程计)融合,同样引入了精度更高的视觉检测方法对精度进行增强。该方法已经在实验中展现出了厘米级别的精度;并且是第一个在环境狭窄的室内实现紧密配合情况下飞行的无人机集群。后来高飞组在science robotics中使用的方案就和这一方案类似。
该文章发表在机器人研究顶会ICRA上,文章链接是 http://www.xuhao1.me/files/ICRA2020hao.pdf
www.bilibili.com/video/BV1y7411y7Qx/?spm_id_from=333.999.0.0&vd_source=5b500ce27249089310ee479674dfb683
更全能的Omni-swarm
在前文所做的实验中,最令人头疼的事情之一是状态感知的初始化,作为一个高度自主的集群,我们希望他们能够只依赖自己而不是预先输入的信息完成初始化。于是后续对此方法进行了进一步改进,地图方案也被融入,于是不仅仅能完成相对定位,更展现出了全局一致性,并且针对初始化问题和可观测性进行了优化(ICRA版本需要运动来初始化,或者已知初始位置),这篇工作的名称是Omni-swarm。Omni意为全向和全能,我们还发现了对无人机集群很重要的事情:使用全向摄像头可以显著的改善可观测性。该文章也包含了迄今所有无人机相对定位的主流方案,所以被称作“Omni”。该文章发表于机器人研究顶刊,IEEE Transaction on Robotics (TRO)上,https://ieeexplore.ieee.org/document/9813359,
代码已经开源在:GitHub - HKUST-Aerial-Robotics/Omni-swarm: A Decentralized Omnidirectional Visual-Inertial-UWB State Estimation System for Aerial Swar.
www.bilibili.com/video/BV1FV411H7Kg/?spm_id_from=333.999.0.0
Racer:未知环境的无人机群探索
在Omni-swarm的基础上,我们进行了现实环境的无人机探索任务,这是世界第一个完全去中心化的无人机群自主探索研究,正是去中心化且全能的“omni-swarm”,是这种任务成为了可能。这篇文章同样发表于TRO上,https://ieeexplore.ieee.org/abstract/document/10038280
Racer飞行测试时的地面站截图,该地面站由我本人开发。
www.bilibili.com/video/BV1F14y1g7cG/?spm_id_from=333.337.search-card.all.click&vd_source=5b500ce27249089310ee479674dfb683
在Racer的研究中,我又得到了不少启发:1,自主无人机群仅仅在无人机互相距离较近的时候有相互高精度定位的必要,飞远了自然也没有必要互相避障了,这时候相对定位精度的重要性自然降低。2.当无人机相距较远的时候,互相并不碰面,这时候我们更关注的是全局一致性:也就是地图不能随着飞行轨迹的飞行而飘移,要飞一圈回来,飞机仍然在之前的地方,这样地图才能进行后续的应用。3.是uwb和视觉检测用起来有时候很麻烦,容易被复杂环境干扰。我们需要一个更加可靠且通用的方案,UWB也好,视觉检测也好,可以作为“dlc”挂进去,也可以根据环境的不同不去挂载。
D2SLAM:分布式,更高精度和全局一致性
- 无人机群的“近场“状态估计(near-field state estimation),当无人机集群中的飞机距离较近,通信良好的时候,我们有必要(为了互相避障和紧密协作)也有能力建立高精度的局部定位(自身状态估计)和无人机的互相定位。我把这部分能力称作近场估计
- “远场“状态估计(far-field state estimation),当无人机群中的飞机互相距离较远时,为了任务的完整性,我们关注的是地图全局一致性,也就是地图不能乱跑,这种能力被我称作远场估计。
SLAM的贡献在于良好的解决了上面的两种问题;在延续了我们已有的全向视觉的思想的同时,引入了分布式计算来改善计算效率。这篇文章已经投稿至TRO(是的我们就是这么热爱TRO), 预印本已经放在,https://arxiv.org/abs/2211.01538, 并且代码开源在了 https://github.com/HKUST-Aerial-Robotics/D2SLAM (文档和数据集逐步完善中)
www.bilibili.com/video/BV1eY4y1Q7j1/?spm_id_from=333.999.0.0
使用D2SLAM重建的实验室
本系列文章后续会略微详细介绍我们的算法,和我个人的一些思考,时间有限更新不一定稳定。敬请关注。感兴趣的也可以先下载对应的论文。
小结
无人机群的状态估计是构建一个自主集群的最关键的基础技术之一,并且还在不断的发展中,有大量的问题未被解决。相比于路径规划,互相避障,环境探索等任务,被大众所知的程度也更低一些。本系列文章从我个人的研究出发,希望能给大家一个对此问题的基础认知。也希望更多朋友参与到这一问题的研究中来。
#SLAM6
SLAM中的相机模型
在当今技术飞速发展的时代,相机已经成为自动驾驶领域不可或缺的一部分,扮演着极其重要的角色。自动驾驶技术的核心在于精确地感知和理解周围环境,其中,相机作为感知系统的眼睛,为车辆提供了丰富的环境信息。通过捕捉周围的图像,相机帮助自动驾驶系统实现了对道路状况、行人、车辆以及其他障碍物的识别和定位。特别是在同时定位与地图构建(SLAM)技术中,相机不仅能够实时地提供环境图像,还能够通过分析这些图像来帮助车辆理解其在环境中的位置,这对于无人驾驶汽车的导航和路径规划至关重要。
为了让相机能够准确地提供这些关键信息,了解和校准相机的内参变得尤为重要。相机内参包括了影响图像成像的各种因素,如焦距、主点坐标和镜头畸变参数等,这些参数决定了相机如何将三维世界映射到二维图像上。通过对这些内参进行精确的校准,我们可以校正由于镜头畸变等因素导致的图像扭曲,从而提高图像的准确性,这对于提高自动驾驶系统的识别和定位准确性至关重要。内参标定不仅确保了数据的可靠性,也是实现高级视觉算法,如深度估计、物体识别和三维重建等,的基础。因此,相机内参标定是自动驾驶系统开发中的一个重要步骤,它直接影响到自动驾驶汽车的性能和安全性。在自动驾驶技术不断进步的今天,深入理解相机模型和精确校准相机内参,是推动这一领域发展的关键。
本文总结了SLAM领域常见的“相机内参”形式,所谓的“相机内参”将从以下几个方面展开:
- 分别介绍“相机模型”和“畸变模型”
- “投影模型”是指在实际使用过程中,以上两者的组合形式、一些实用的去畸变技巧
本文仅做学术讨论,如有问题欢迎留言讨论和指正,希望能对图像数据操作、感知模型训练、SLAM前端处理等不同任务带来启发,下面正式开始!
相机模型
Pinhole
由两式可得:
Omnidirectional (omni)
全向模型也叫做统一相机模型 (Unified Camera Model), 由五个参数来描述,就是平时见到的Cata-fisheye-model (MEI)的相机模型,但是如果要完美的表达鱼眼相机,需要配合畸变模型。
所谓的CataCamera实际指的是catadioptric,意思就是在鱼眼相机及镜头的外侧,再加上一个反向正对的折反射镜,对应屈光度相机(dioptric camera,视野小于180):
为什么要加一个外部透镜?大大增加视野范围
主要解决的问题:
- 外部透镜与相机光心未对齐
- 不同透镜模型(双曲线、抛物线、椭圆、平面、鱼眼镜头)
- 相机镜头的畸变
- 过度参数化导致的难以解决的最小化问题
投影过程(简化模型,把折反镜、镜头、相机看作一个东西):
标定过程:
- 人工点选mirror的中心和镜子边界上的一点,或默认使用图片中心,估计主点
- 人工在鱼眼图中选取棋盘一条直线上的至少3个点,估计focal length
- 人工在每个图片上框选棋盘格ROI,估计外参
- 重投影图片,提取亚像素角点
- 全局优化
Extended Unified Camera Model
为什么要提出这个模型?只需要比pinhole多2个参数,就可以表达径向畸变
UCM原本是将世界点投影在单位球面上,EUCM在UCM模型的基础上再添加一个系数,用来控制投影的曲面,使其变成一个椭球面
可以将UCM重新参数化从:
Double Sphere
从各个模型的精度对比实验中可以发现双球模型的价值:
在精度表现中,双球模型基本排名第二(橘色),和第一名的KB 8参数模型(绿色)几乎达到了相同的精度,但是在计算时间上DS玩爆KB模型,甚至KB模型还需要估计畸变模型,导致需要估计的参数比DS多,综上得在重投影误差几乎类似的情况下,运行时间最快,是高阶多项式模型较好的替代。
但是内参标定在意的是精度,时间效率不是那么重要,从精度表现上可以很容易明白为什么OpenCV的cv::fisheye采用的是KB模型。
Scaramuzza (OCam)
其中黑色的是镜头,plane指的是图中粉红的数字传感器平面,pixel指的是第4个图片中最终看到的图片。
第3个表达的是:真实的数字传感器平面的“像素”不是理论上的“正方形且线性“的排列,但是在数字转换的时候会强行按照正方形且线性地排列,导致本来透镜看到的正圆,被数字转换强行转成了一个椭圆。笔者理解,这个弯曲的过程其实也可以包含镜头和成像平面没有对齐的情况,总而言之,这个拉伸矩阵的本质是仿射变换,矫正由于镜头和成像平面由于物理位置未对齐、信号转换过程等原因引起的畸变
B-spline
标定精度实验1, 对比2个相机同时垂直于玻璃、水平于玻璃放置,分别使用普通模型和B-spline模型,可以看到在垂直于玻璃时,玻璃带来的影响类似,故误差分布相似;另一种情况,B-spline更能标定出玻璃带来的影响。
标定精度实验2,对比不同相机,分别使用普通模型和B-spline模型,可以看到B-spline的误差分布更小
畸变模型
Radial-Tangential (radtan)
大家最熟悉、最常用、配合pinhole的畸变模型,分成径向畸变和切向畸变
一般k3可以不用估计,切向畸变一般也很小,根据需要可以估计
- 径向畸变
分为枕形畸变(长焦镜头)和桶形畸变(广角镜头)
光学镜头在生产制造过程中,很难保证厚度均匀,离中心越远,光线弯曲程度越高
切向畸变
相机感光成像平面没有完全和透镜平行
两者结合的公式:
Equidistant (equi)
其实一共有4种投影模型,但是都是奇函数,所以都可以用泰勒展开来表达,等距模型是为了简化采用的最简单的一种
当然畸变参数是可以增加的,阶数越高,精度越高,计算越慢。
Field-of-View (fov)
这个模型只是理想模型,这个角度是理论的视场角,但是真实的光学器件可能不完全遵循这个模型,比如制造偏差、硬件误差等
投影模型
模型组合
相机模型 + 畸变模型;一些应用举例
- pinhole + radtan: cv::pinhole (OpenCV [4] ), VINS, ORB-SLAM
- pinhole + equi (Kannala-Brandt [8] ): cv::fisheye (OpenCV), DSO
- pinhole + FOV: atan (SVO, DSO, Kalibr)
- omni + rantan: MEI (VINS Cata), cv::omnidir (OpenCV)
- Scaramuzza: SVO, NASA, Matlab
去畸变方式
Pinhole
那为什么去完畸变之后边界的图像会被拉扯得特别严重?
鱼眼镜头会把光线进行折射(粉色),使得可以看到更广泛的视野,对于世界下的同一条直线(绿色),针孔按照相似三角形原理在图像上的投影更长(蓝色),所以在鱼眼原图越靠近边缘的地方,去完畸变拉扯现象越严重
Panoramic
全景图片可以在保留原始大FOV的前提下,尽量减小畸变。但是图像内容也会变得比较奇怪,e.g. 相机在道路中间,道路会变成两半。
Cubemap
由于鱼眼图片直接投影成pinhole边缘区域会出现拉伸现象,为了有效缓解这个问题,可以将整个原图的像素投影在一个立方体的5个面上(后面是看不到东西的),除了前面和投影到pinhole没什么区别,其他面就是把外参多转90度。
这样做会在不同面的接缝处产生突然弯折的现象。
Cylindrical
圆柱面的投影会在有效降低拉伸现象的同时,最大保留原始FOV。可以想像这个相机坐标系下的单位球就是地球,这个圆柱投影就是“墨卡托投影”,会生成一张“世界地图”。
以下为畸变示意图,请主要关注左侧车辆的形状变化,从左至右分别为广角原图(形变)、pinhole投影(拉伸现象)、cylindrical投影(较为自然)
参考资料
[1] ETH Kalibr: https://github.com/ethz-asl/kalibr
[2] ETH CamOdoCal: http://github.com/hengli/camodocal
[3] ROS camera_calibration: http://wiki.ros.org/camera_calibration
[4] OpenCV: http://opencv.org
[5] Matlab Ocam calibration toolbox: http://sites.google.com/site/scarabotix/ocamcalib-toolbox
#SLAM7
解锁SLAM新纪元!基于NeRF和3D GS方法综述
在过去的二十年里,SLAM领域的研究经历了重大的发展,突出了其在实现未知环境的自主探索方面的关键作用。这种演变从手工制作的方法到深度学习时代,再到最近专注于神经辐射场(NeRFs)和3D高斯泼溅(3DGS)表示的发展。我们意识到越来越多的研究和缺乏对该主题的全面调查,本文旨在通过辐射场的最新进展,首次全面概述SLAM的进展。它揭示了背景、进化路径、固有优势和局限性,并作为突出动态进展和具体挑战的基本参考。
相关背景
现有SLAM综述回顾
SLAM有了显著的增长,诞生了各种各样的综合论文。在早期阶段,达兰特-怀特和贝利介绍了SLAM问题的概率性质,并强调了关键方法。Grisetti等人进一步深入研究了基于图的SLAM问题,强调了它在未知环境中导航的作用。在视觉SLAM领域,Yousif概述了定位和映射技术,结合了视觉里程计和SLAM的基本方法和进展。多机器人系统的出现使Saeedi和Clark回顾了最先进的方法,重点关注多机器人SLAM的挑战和解决方案。
在现有文献中,出现了两种主要的SLAM策略,即frame-to-frame和frame-to-model跟踪方法。通常,前一种策略用于实时系统,通常涉及通过闭环(LC)或全局束调整(BA)对估计的姿态进行进一步优化,而后一种策略从重建的3D模型中估计相机姿态,通常避免进一步优化,但导致对大场景的可扩展性较低。这些策略构成了我们即将深入研究的方法论的基础。
虽然现有的调查涵盖了传统的和基于深度学习的方法,但最近的文献缺乏对SLAM技术前沿的全面探索,这些前沿植根于辐射领域的最新进展。
图2展示了辐射场的三种表达形式
辐射场理论的演进
基于神经场的表面重建
尽管NeRF及其变体有可能捕捉场景的3D几何结构,但这些模型是在神经网络的权重中隐含定义的。通过3D网格获得场景的显式表示对于3D重建应用是可取的。从NeRF开始,实现粗略场景几何的基本方法是对MLP预测的密度进行阈值设置。更高级的解决方案探讨了三种主要表示形式。
占用情况。该表示通过用学习的离散函数o(x)∈{0,1}代替沿射线的α值αi,对自由空间和占用空间进行建模。具体而言,通过运行行进立方体算法来估计占有概率∈[0,1],并获得表面。
符号距离函数(SDF)。场景几何体的另一种方法是从任意点到最近曲面的符号距离,在对象内部产生负值,在对象外部产生正值。NeuS是第一个重新访问NeRF体积渲染引擎的人,用MLP预测SDF为f(r(t)),并用ρ(t)代替α,从SDF推导如下:
3D Gaussian Splatting
3DGS由Kerbl于2023年推出,是一种用于高效、高质量渲染3D场景的显式辐射场技术。与传统的显式体积表示(如体素网格)不同,它提供了一种连续而灵活的表示,用于根据可微分的3D高斯形状基元对3D场景进行建模。这些基元用于参数化辐射场,并可以进行渲染以生成新的视图。此外,与依赖于计算昂贵的体积射线采样的NeRF相比,3DGS通过基于瓦片的光栅化器实现实时渲染。这种概念上的差异在图3中突出显示。这种方法在不依赖神经组件的情况下提供了改进的视觉质量和更快的训练,同时也避免了在空白空间中进行计算。更具体地说,从具有已知相机姿势的多视图图像开始,3DGS学习一组3D高斯。这允许将单个高斯基元的空间影响紧凑地表示为:
相反对于优化,该过程从SfM点云或随机值的参数初始化开始,然后使用L1和D-SSIM损失函数对GT和渲染视图进行随机梯度下降(SGD)。此外,周期性自适应致密化通过调整具有显著梯度的点和移除低不透明度点来处理欠重建和过重建,优化场景表示并减少渲染错误。
数据集
本节总结了最近SLAM方法中常用的数据集,涵盖了室内和室外环境中的各种属性,如传感器、GT准确性和其他关键因素。图4展示了来自不同数据集的定性示例,这些示例将在剩余部分中介绍。
TUM RGB-D数据集包括带有注释的相机轨迹的RGB-D序列,使用两个平台记录:手持和机器人,提供不同的运动范围。该数据集有39个序列,其中一些带有循环闭包。核心元素包括来自微软Kinect传感器的彩色和深度图像,以30赫兹和640×480分辨率拍摄。GT轨迹来源于一个运动捕捉系统,该系统有八台高速摄像机,工作频率为100赫兹。数据集的多功能性通过典型办公环境和工业大厅中的各种轨迹得到了证明,包括不同的平移和角速度。
ScanNet数据集提供了真实世界室内RGB-D采集的集合,其中包括707个独特空间中1513次扫描的250万张图像。特别地,它包括估计的校准参数、相机姿态、3D表面重建、纹理网格、对象级别的详细语义分割以及对齐的CAD模型。
开发过程包括创建一个用户友好的捕获管道,使用定制的RGB-D捕获设置,将结构传感器连接到iPad等手持设备上。随后的离线处理阶段导致了全面的3D场景重建,包括可用的6-DoF相机姿势和语义标签。请注意,ScanNet中的相机姿势源自BundleFusion系统,该系统可能不如TUM RGB-D等替代系统准确。
Replica数据集具有18个照片级真实感3D室内场景,具有密集网格、HDR纹理、语义数据和反射表面。它跨越不同的场景类别,包括88个语义类,并结合了单个空间的6次扫描,捕捉不同的家具布置和时间快照。重建涉及定制的RGB-D捕捉设备,该设备具有同步IMU、RGB、IR和广角灰度传感器,通过6个自由度(DoF)姿势准确融合原始深度数据。尽管原始数据是在现实世界中捕获的,但用于SLAM评估的数据集部分是由重建过程中产生的精确网格综合生成的。因此,合成序列缺乏真实世界的特性,如镜面反射高光、自动曝光、模糊等。
KITTI数据集是评估双目、光流、视觉里程计/SLAM算法等的流行基准。该数据集来自一辆配备了双目摄像头、Velodyne LiDAR、GPS和惯性传感器的汽车,包含来自61个代表自动驾驶场景的场景的42000个立体对和LiDAR点云。KITTI里程计数据集包含22个激光雷达扫描序列,有助于评估使用激光雷达数据的里程计方法。
Newer College数据集包括在牛津新学院周围2.2公里步行过程中采集的传感器数据。它包括来自立体惯性相机、带惯性测量的多波束3D激光雷达和三脚架安装的勘测级激光雷达扫描仪的信息,生成了一张包含约2.9亿个点的详细3D地图。该数据集为每次激光雷达扫描提供了6 DoFGT姿态,精确到约3厘米。该数据集涵盖了各种环境,包括建筑空间、开放区域和植被区。
其他数据集
此外,在最近的SLAM研究中,我们提请注意利用率较低的替代数据集。
ETH3D-SLAM数据集包括来自定制相机设备的视频,适用于评估视觉惯性单目、双目和RGB-D SLAM。它具有56个训练数据集、35个测试数据集和5个使用GTSfM技术独立捕获的训练序列。
EuRoC MAV数据集为微型飞行器提供同步立体图像、IMU和准确的GT。它支持在各种条件下进行视觉惯性算法设计和评估,包括具有毫米精度GT的工业环境和用于3D环境重建的房间。
为重新定位性能评估而创建的7场景数据集使用Kinect以640×480的分辨率进行记录。GT姿势是通过KinectFusion获得的。来自不同用户的序列被分为两组——一组用于模拟关键帧采集,另一组用于误差计算。该数据集带来了诸如镜面反射、运动模糊、照明条件、平坦表面和传感器噪声等挑战。
ScanNet++数据集包括460个高分辨率3D室内场景重建、密集语义注释、单反图像和iPhone RGB-D序列。使用亚毫米分辨率的高端激光扫描仪拍摄,每个场景都包括1000多个语义类的注释,解决标签歧义,并为3D语义场景理解和新颖视图合成引入新的基准。
SLAM
本节介绍利用辐射场表示的最新进展的最新SLAM系统。这些论文以基于方法的分类法进行组织,按其方法进行分类,为读者提供清晰有序的展示。本节首先对RGB-D、RGB和激光雷达方法进行基本分类,为特定子类别的发展奠定基础。每个类别都按发表日期列出了在会议/期刊上正式发表的论文,然后是arXiv按其初始预印本日期排列的预印本。
为了全面了解,表1提供了调查方法的详细概述。此表提供了深入的摘要,突出显示了每种方法的关键功能,并包括对项目页面或源代码的引用(只要可用)。有关更多细节或方法细节,请参阅原始论文。
RGB-D SLAM
在这里,我们重点关注密集SLAM技术使用RGB-D相机,捕捉彩色图像和逐像素的深度信息的环境。这些技术分为不同的类别:NeRF风格的SLAM解决方案和基于3D高斯飞溅表示的替代方案。从这两种方法派生的专门解决方案包括用于大型场景的基于子映射的SLAM方法、处理语义的框架以及为动态场景量身定制的框架。在这种分类中,一些技术通过不确定性来评估可靠性,而另一些技术则探索集成其他传感器,如基于事件的相机。
NeRF-style RGB-D SLAM
隐式神经表示的最新进展已经实现了精确和密集的3D表面重建。这导致了源自NeRF或受其启发的新型SLAM系统,最初设计用于已知相机姿势的离线使用。在本节中,我们描述了这些密集神经VSLAM方法,分析了它们的主要特征,并对它们的优势和劣势进行了清晰的概述。
iMAP。这项工作标志着首次尝试利用SLAM的隐式神经表示。这一突破性的成就不仅突破了SLAM的界限,而且为该领域确立了新的方向。特别地,iMAP展示了MLP动态创建特定场景的隐式3D模型的潜力。
NICE-SLAM。与iMAP使用单个MLP作为场景表示不同,NICE-SLAM采用了集成多层次局部数据的分层策略。这种方法有效地解决了诸如过度平滑的重建和较大场景中的可扩展性限制等问题。
Vox Fusion。这项工作将传统的体积融合方法与神经隐式表示相结合。具体而言,它利用基于体素的神经隐式表面表示来编码和优化每个体素内的场景。虽然与NICE-SLAM有相似之处,但其独特之处在于采用了基于八叉树的结构来实现动态体素分配策略。
ESLAM。ESLAM的核心是实现了与传统体素网格不同的多尺度轴对齐特征平面。这种方法通过二次缩放优化内存使用,与基于体素的模型所表现出的三次增长形成对比。
其他工作如Co-SLAM、GO-SLAM、Point-SLAM、ToF-SLAM、ADFP、MLM-SLAM、Plenoxel-SLAM、Structerf-SLAM、iDF-SLAM、NeuV-SLAM可以参考具体论文。
3DGS-style RGB-D SLAM
在这里,我们概述了使用基于3D高斯飞溅的显式体积表示来开发SLAM解决方案的开创性框架。这些方法通常利用3DGS的优势,例如与其他现有场景表示相比,更快、更真实的渲染。它们还提供了通过添加更多高斯基元、完全利用每像素密集光度损失和直接参数梯度流来提高地图容量的灵活性,以促进快速优化。到目前为止,3DGS表示主要用于离线系统,该离线系统致力于从已知相机姿势合成新的视图。在下一节中,我们将介绍开创性的SLAM方法,这些方法能够同时优化场景几何结构和相机姿态。
GS-SLAM。GS-SLAM通过利用3D高斯作为表示,结合飞溅渲染技术,引入了一种范式转变。与依赖神经隐式表示的方法相比,GS-SLAM通过采用一种新方法,利用3D高斯以及不透明度和球面谐波来封装场景几何结构和外观,从而大大加速了地图优化和重新渲染,如图6所示。
Photo-SLAM。这项工作将显式几何特征和隐式纹理表示集成在超基元地图中。该方法结合了ORB特征、旋转、缩放、密度和球面谐波系数,以优化相机姿态和贴图精度,同时最大限度地减少光度损失。
SplaTAM。这种方法将场景表示为简化的3D高斯图的集合,从而实现高质量的彩色和深度图像渲染。SLAM管道包括几个关键步骤:相机跟踪-高斯稠密化-地图更新。
GSSLAM。该系统采用3D高斯飞溅作为其唯一的表示,使用单个移动的RGB或RGB-D相机进行在线3D重建。该框架包括几个关键组件,如跟踪和相机姿态优化、高斯形状验证和正则化、建图和关键帧以及资源分配和修剪。
高斯SLAM。该框架采用了涉及地图构建和优化的管道,创建由单独的3D高斯点云表示的单独的子地图,以防止灾难性遗忘并保持计算效率。
Submaps-based SLAM
在这一类别中,我们专注于解决灾难性遗忘的挑战以及先前讨论的受密集辐射场启发的SLAM系统在大型环境中面临的适用性问题的方法。
MeSLAM。MeSLAM引入了一种新的SLAM算法,用于具有最小内存占用的大规模环境映射。这是通过将神经隐式映射表示与新的网络分布策略相结合来实现的。具体而言,通过使用分布式MLP网络,全局映射模块有助于将环境分割成不同的区域,并在重建过程中协调这些区域的缝合。
CP-SLAM。这项工作是一种协作的神经隐式SLAM方法,其特点是包含前端和后端模块的统一框架。其核心是利用与关键帧相关的基于神经点的3D场景表示。这允许在姿势优化过程中进行无缝调整,并增强协作建图功能。
NISB地图。NISB Map采用多个小型MLP网络,遵循iMAP的设计,以紧凑的空间块表示大规模环境。与具有深度先验的侧面稀疏光线采样一起,这实现了低内存使用率的可扩展室内映射。
多个SLAM。本文介绍了一种新的协作隐式SLAM框架来解决灾难性遗忘问题。通过使用多个SLAM代理来处理块中的场景,它最大限度地减少了轨迹和建图错误。
MIPS-Fusion。如图8所示,这项工作引入了一种用于在线密集RGB-D重建的分治映射方案,使用了一种无网格的纯神经方法,该方法具有增量分配和多个神经子映射的动态学习。
NEWTON。大多数神经SLAM系统使用具有单个神经场模型的以世界为中心的地图表示。然而,这种方法在捕捉动态和实时场景方面面临挑战,因为它依赖于准确和固定的先前场景信息。这在广泛的映射场景中可能特别有问题。
NGEL-SLAM。该系统利用两个模块,即跟踪和映射模块,将ORB-SLAM3的鲁棒跟踪能力与多个隐式神经映射提供的场景表示相结合。
PLGSLAM。本工作中提出的渐进式场景表示方法将整个场景划分为多个局部场景表示,允许对更大的室内场景进行可扩展性,并提高鲁棒性。
Loopy-SLAM。该系统利用子地图形式的神经点云进行局部建图和跟踪。该方法采用帧到模型跟踪和数据驱动的基于点的子地图生成方法,在场景探索过程中基于相机运动动态生长子地图。
Semantic RGB-D SLAM
作为SLAM系统运行,这些方法本身包括映射和跟踪过程,同时还包含语义信息以增强环境的真实性。这些框架针对对象识别或语义分割等任务量身定制,为场景分析提供了一种整体方法——识别和分类对象和/或有效地将图像区域分类为特定的语义类(如桌子、椅子等)。
iLabel。该框架是一个用于交互理解和分割3D场景的新颖系统。它使用神经场表示将三维坐标映射到颜色、体积密度和语义值。
FR-Fusion。该方法将神经特征融合系统无缝集成到iMAP框架中。通过结合2D图像特征提取器(基于EfficientNet或DINO)并使用潜在体积绘制技术增强iMAP,该系统可以有效地融合高维特征图,同时降低计算和内存需求。
其他算法如vMap、NIDS-SLAM、SNI-SLAM、DNS SLAM、SGS-SLAM可以参考具体论文。
SLAM in Dynamic Environments
到目前为止,大多数SLAM方法都是基于以刚性、不移动物体为特征的静态环境的基本假设。虽然这些技术在静态场景中表现良好,但它们在动态环境中的性能面临重大挑战,限制了它们在现实世界场景中的适用性。因此,在本节中,我们概述了专门为应对动态环境中精确映射和定位估计的挑战而设计的方法。
DN-SLAM。这项工作集成了各种组件,以解决动态环境中准确位置估计和地图一致性方面的挑战。DN-SLAM利用ORB特征进行对象跟踪,并采用语义分割、光流和分段任意模型(SAM),有效地识别和隔离场景中的动态对象,同时保留静态区域,增强SLAM性能。具体而言,该方法包括利用语义分割进行对象识别,通过SAM细化动态对象分割,提取静态特征,以及使用NeRF生成密集地图。
DynaMoN。该框架建立在DROID-SLAM的基础上,通过运动和语义分割对其进行了增强。该方法将这些元素集成到密集BA过程中,利用运动和分割掩码对优化过程进行加权,并忽略潜在的动态像素。通过预先训练的DeepLabV3网络,语义分割有助于细化已知对象类的掩码,并结合了基于运动的过滤来处理未知的动态元素。
其他算法如DDN-SLAM、NID-SLAM可以参考具体论文。
不确定性估计
分析输入数据中的不确定性,尤其是深度传感器噪声,对于鲁棒系统处理至关重要。这包括过滤不可靠的传感器测量值或将深度不确定性纳入优化过程等任务。总体目标是防止SLAM过程中可能严重影响系统准确性的不准确。同时,承认神经模型重建中的内在不确定性为评估系统可靠性增加了一个关键层,尤其是在具有挑战性的场景中。本节标志着神经SLAM不确定性探索的开始,强调将认知(基于知识)和预测(基于环境噪声)不确定性信息作为提高SLAM系统整体性能的重要组成部分。
OpenWorld-SLAM。这项工作改进了NICE-SLAM。解决其非实时执行、有限的轨迹估计以及由于依赖预定义网格而适应新场景的挑战。为了增强在开放世界场景中的适用性,这项工作引入了新的改进,包括从RGB-D图像中集成深度不确定性以进行局部精度细化,来自惯性测量单元(IMU)的运动信息利用以及用于不同环境处理的有限前景网格和背景球面网格的NeRF的划分。这些增强提高了跟踪精度和地图表示,同时保持了基于NeRF的SLAM优势。这项工作强调了对支持基于NeRF的SLAM的专业数据集的需求,特别是那些提供户外网格模型、运动数据和特征良好的传感器的数据集。
UncLe-SLAM。UncLe-SLAM在飞行中联合学习场景几何和任意深度的不确定性。这是通过采用与输入深度传感器相关联的拉普拉斯误差分布来实现的。与缺乏深度不确定性建模集成的现有方法不同,UncLeSLAM采用了一种学习范式,根据不同图像区域的估计置信度,自适应地为其分配权重,而无需地面实况深度或3D。
Event-based SLAM
虽然辐射场启发的VSLAM方法在精确的密集重建中具有优势,但涉及运动模糊和照明变化的实际场景带来了重大挑战,影响了映射和跟踪过程的稳健性。在本节中,我们将探讨一类系统,这些系统利用事件摄像机捕获的数据来利用其动态范围和时间分辨率。由给定像素的亮度对数变化触发的异步事件生成机制在低延迟和高时间分辨率方面显示出潜在的优势。这有可能提高神经VSLAM在极端环境中的鲁棒性、效率和准确性。尽管基于事件相机的SLAM系统仍处于研究的早期阶段,但我们相信,正在进行的研究有望克服传统基于RGB的方法的局限性。
EN-SLAM。该框架通过隐式神经范式将事件数据与RGB-D无缝集成,引入了一种新的范式转变。它旨在克服现有SLAM方法在以运动模糊和照明变化等问题为特征的非理想环境中操作时遇到的挑战。
RGB-based SLAM
本节探讨RGB密集SLAM方法,该方法仅依赖于彩色图像的视觉提示,从而消除了对深度传感器的需求,这些传感器通常是光敏的、有噪声的,在大多数情况下仅适用于室内。因此,使用单目或双目相机的仅RGB SLAM在RGB-D相机不切实际或成本高昂的情况下越来越受到关注,使RGB相机成为适用于更广泛的室内和室外环境的更可行的解决方案。然而,这些方法经常面临挑战,特别是在单目设置中,因为它们缺乏几何先验,导致深度模糊问题。因此,由于较少的约束优化,它们往往表现出较慢的优化收敛。
NeRF-style RGB SLAM
DIM-SLAM。本文介绍了第一个使用神经隐式映射表示的RGB SLAM系统。与NICE-SLAM类似,它结合了可学习的多分辨率体积编码和用于深度和颜色预测的MLP解码器。该系统动态学习场景特征和解码器。此外,DIM-SLAM通过跨尺度融合特征,在一步中优化占用率,提高了优化速度。值得注意的是,它引入了受多视图立体启发的光度扭曲损失,通过解决与视图相关的强度变化,加强了合成图像和观测图像之间的对齐,以提高准确性。与其他RGB-D方法类似,DIM-SLAM利用并行跟踪和映射线程来同时优化相机姿势和隐含场景表示。
其他算法Orbeez-SLAM、FMapping、TT-HO-SLAM、Hi-Map可以参考具体论文。
辅助监督
在本节中,我们探讨了基于RGB的SLAM方法,该方法使用外部框架将正则化信息集成到优化过程中,称为辅助监督。这些框架包括各种技术,例如从从单视图或多视图图像获得的深度估计导出的监督、表面法线估计、光流等等。外部信号的结合对于消除优化过程的歧义至关重要,并且有助于显著提高仅使用RGB图像作为输入的SLAM系统的性能。
iMODE。该系统通过由三个核心进程组成的多线程体系结构运行。首先,定位过程利用ORB-SLAM2稀疏SLAM系统在CPU上进行实时相机姿态估计,为后续映射选择关键帧。其次,受iMAP的启发,半密集映射过程通过监督深度渲染几何体的实时训练来提高重建精度。
其他算法Hi-SLAM、NICER-SLAM、NeRF-VO、MoD-SLAM可以参考具体论文。
Semantic RGB SLAM
RO-MAP。RO-MAP是一种实时多目标建图系统,无需深度先验,利用神经辐射场进行目标表示。这种方法将轻量级的以对象为中心的SLAM与NeRF模型相结合,用于从单目RGB输入中同时定位和重建对象。该系统有效地为每个对象训练单独的NeRF模型,展示了语义对象建图和形状重建的实时性能。主要贡献包括开发了第一个3D先验免费单目多目标映射管道,一个为目标量身定制的高效损失函数,以及一个高性能CUDA实现。
不确定性估计
NeRF SLAM。通过采用DROID-SLAM作为跟踪模块和Instant NGP作为分层体积神经辐射场图的实时实现,该方法在给定RGB图像作为输入的情况下成功地实现了实时操作效率。此外,结合深度不确定性估计解决了深度图中的固有噪声,通过对神经辐射场的深度损失监督(权重由深度的边际协方差确定)改善了结果。具体来说,管道涉及两个实时同步的线程:跟踪和建图。跟踪线程最大限度地减少了滑动关键帧窗口的BA重新投影错误。映射线程在没有滑动窗口的情况下优化跟踪线程中的所有关键帧。只有当跟踪线程创建新的关键帧,共享关键帧数据、姿势、深度估计和协变量时,才会发生通信。
LiDAR-Based SLAM
虽然到目前为止讨论的VSLAM系统在RGB和密集深度数据都可用的较小室内场景中成功运行,但它们的局限性在RGB-D相机不切实际的大型室外环境中变得明显。激光雷达传感器在长距离和各种户外条件下提供稀疏而准确的深度信息,在确保这些环境中的稳健映射和定位方面发挥着关键作用。然而,激光雷达数据的稀疏性和RGB信息的缺乏对先前概述的密集SLAM方法在户外环境中的应用提出了挑战。我们现在的重点是利用3D增量激光雷达数据的精度来改善户外场景中的自主导航的新方法,同时利用基于辐射场的场景表示,即使在传感器覆盖范围稀疏的区域中,也有可能实现密集、平滑的环境地图重建。
NeRF-style LiDAR-based SLAM
NeRF-LOAM。NeRF LOAM引入了第一种神经隐式方法来联合确定传感器的位置和方向,同时使用激光雷达数据构建大规模环境的综合3D表示。该框架包括三个相互连接的模块:神经里程计、神经建图和网格重建。神经里程计模块通过固定的隐式网络最小化SDF误差,为每次进入的激光雷达扫描估计6-DoF姿态。随后通过反向投影对姿态进行优化。并行地,神经映射模块在基于八叉树的架构中使用动态体素嵌入,熟练地捕捉局部几何。这种动态分配策略确保了计算资源的有效利用,避免了预分配嵌入或时间密集型哈希表搜索的复杂性。该方法使用动态体素嵌入查找表,提高了效率并消除了计算瓶颈。关键扫描细化策略提高了重建质量,并解决了增量映射过程中的灾难性遗忘问题,从而在最后一步中生成详细的3D网格表示。
其他算法LONER、PIN-SLAM可以参考具体论文。
3DGS-style LiDAR-based SLAM
LIV-GaussMap。所提出的激光雷达惯性视觉(LIV)融合辐射场映射系统将硬件同步激光雷达惯性传感器与相机集成,以实现精确的数据对齐。该方法从激光雷达惯性里程计开始,利用尺寸自适应体素来表示平面表面。激光雷达点云被分割成体素,并计算初始椭圆飞溅估计的协方差矩阵。该系统是通过使用视觉衍生的光度梯度优化球面谐波系数和激光雷达高斯结构来改进的,提高了映射精度和视觉真实性。高斯的初始化涉及大小自适应体素分割,并基于指定参数进行进一步细分。3D高斯图的自适应控制通过结构细化和光度梯度优化来解决重建不足和过密场景。该系统使用光栅化和阿尔法混合实现实时渲染。
实验及分析
在本节中,我们比较了数据集之间的方法,重点是跟踪和3D重建。此外,我们还探索了新颖的视图合成,并分析了运行时和内存使用方面的性能。在随后的每个表中,我们使用粗体强调子类别中的最佳结果,并用紫色突出显示绝对最佳结果。在我们的分析中,我们使用通用评估协议组织了论文中的定量数据,并对结果进行了交叉验证。我们的首要任务是纳入具有一致基准的论文,确保为多个来源的比较提供可靠的基础。尽管这种方法并非详尽无遗,但它保证了在我们的表格中包含具有可验证结果和共享评估框架的方法。为了进行性能分析,我们使用了具有可用代码的方法来报告通用硬件平台(单个NVIDIA 3090 GPU)上的运行时和内存需求。关于每种方法的具体实施细节,鼓励读者参考原始论文。
Visual SLAM评测
表2提供了对TUM RGB-D数据集的三个场景的相机跟踪结果的全面分析,这些场景以具有挑战性的条件为标志,例如稀疏的深度传感器信息和RGB图像中的高运动模糊。关键基准包括Kintinous、BAD-SLAM和ORB-SLAM2等已建立的方法,这些方法表示传统的手工制作的基线。
表3给出了对ScanNet数据集的六个场景的相机跟踪方法的评估。
表4评估了Replica中八个场景的相机跟踪,与ScanNet和TUM RGB-D等具有挑战性的同行相比,使用了更高质量的图像。评估包括报告每个场景的ATE RMSE结果以及平均结果。
在表5中,我们提供了建图结果,突出了Replica数据集在3D重建和2D深度估计方面的性能。
在表6中,我们显示了Replica的训练输入视图上的渲染质量,遵循Point SLAM和NICE-SLAM的标准评估方法。
LiDAR SLAM/Odometry评测
表7显示了对KITTI数据集上的激光雷达SLAM策略的评估,详细说明了顶部的里程计准确性和底部的SLAM性能指标。
表8报告了根据ATE RMSE测量的Newer College数据集的跟踪精度。
表9收集了关于New College数据集上的3D重建质量的结果。
性能分析
我们通过考虑迄今为止综述的SLAM系统的效率来结束实验研究。为此,我们使用公开的源代码运行方法,并测量1)GPU内存需求(以GB为单位的峰值内存使用量)和2)在单个NVIDIA RTX 3090板上实现的平均FPS(计算为处理单个序列所需的总时间,除以其中的帧总数)。表10收集了我们在Replica上运行的RGB-D和RGB系统的基准测试结果,按平均FPS的升序排序。最重要的是,我们考虑RGB-D框架:我们可以注意到,尽管SplaTAM在渲染图像方面效率很高,但在同时处理跟踪和映射方面却慢得多。使用分层特征网格的混合方法也是如此,另一方面,所需的GPU内存要少得多——与SplaTAM相比低4到5倍。最后,使用更高级的表示,如散列网格或点特征,可以实现更快的处理。这也通过对仅RGB方法的研究得到了证实,在中间,NeRF-SLAM比DIM-SLAM快6倍。最后,关于激光雷达SLAM系统,我们可以观察到PIN-SLAM是如何比Nerf LOAM高效得多的,在以近7 FPS的速度运行时只需要7 GB的GPU内存,而Nerf LOAM需要近12 GB和每帧4秒。
该分析强调了尽管新一代SLAM系统带来了巨大的前景,但它们中的大多数在硬件和运行时要求方面仍然不令人满意,使它们还没有准备好用于实时应用。
讨论
本节中,我们重点强调调查的主要发现。我们将概述通过所审查的最新方法取得的主要进展,同时确定该领域当前的挑战和未来研究的潜在途径。
场景表示。场景表示的选择在当前的SLAM解决方案中至关重要,它会显著影响映射/跟踪精度、渲染质量和计算。早期的方法,如iMAP,使用基于网络的方法,使用基于坐标的MLP隐式地对场景进行建模。虽然这些提供了紧凑、连续的场景建模,但由于在更新局部区域和缩放大型场景方面的挑战,它们难以进行实时重建。此外,它们往往会产生过度平滑的场景重建。随后的研究探索了基于网格的表示,如多分辨率分层和稀疏八叉树网格,这些网格已经很受欢迎。网格允许快速查找邻居,但需要预先指定的网格分辨率,这导致在空闲空间中内存使用效率低下,并且捕获受分辨率限制的精细细节的能力有限。最近的进展,如Point SLAM,支持基于混合神经点的表示。与栅格不同,点密度自然变化,无需预先指定。与基于网络的方法相比,点可以有效地集中在曲面周围,同时为细节分配更高的密度,从而促进可扩展性和本地更新。然而,与其他NeRF风格的方法类似,体积射线采样显著限制了其效率。有前景的技术包括基于3D高斯飞溅范式的显式表示,与以前的表示相比,这种表示表现出更快的渲染/优化。然而,在各种限制中,它们严重依赖初始化,对未观察到的区域的原始生长缺乏控制。
尽管在过去三年中取得了重大进展,但正在进行的研究仍在积极克服现有的场景表示限制,并寻找更有效的替代方案来提高SLAM的准确性和实时性能。
灾难性遗忘。现有的方法往往表现出忘记先前学习的信息的趋势,特别是在大型场景或扩展视频序列中。在基于网络的方法的情况下,这归因于它们依赖于单个神经网络或具有固定容量的全局模型,这些网络或模型在优化过程中会受到全局变化的影响。缓解这一问题的一种常见方法是在从历史数据中回放关键帧的同时,使用当前观测的稀疏射线采样来训练网络。然而,在大规模增量映射中,这种策略会导致数据的累积增加,需要复杂的重新采样过程来提高内存效率。遗忘问题延伸到基于网格的方法。尽管努力解决这一问题,但由于二次或三次空间复杂性,仍存在障碍,这对可扩展性提出了挑战。同样,虽然显式表示(如3DGS风格的解决方案)为灾难性遗忘提供了一种实用的解决方案,但由于内存需求增加和处理速度缓慢,尤其是在大型场景中,它们面临着挑战。一些方法试图通过使用稀疏帧采样来减轻这些限制,但这会导致整个3D空间的信息采样效率低下,与集成稀疏射线采样的方法相比,导致模型更新速度较慢且不太均匀。
最终,一些策略建议将环境划分为子图,并将局部SLAM任务分配给不同的代理。然而,这在处理多个分布式模型和设计有效策略来管理重叠区域同时防止地图融合伪影的发生方面带来了额外的挑战。
实时限制。所审查的许多技术在实现实时处理方面面临挑战,通常无法与传感器帧速率相匹配。这种限制主要是由于所选择的地图数据结构或基于计算密集型光线渲染的优化,这在NeRF风格的SLAM方法中尤为明显。特别地,使用分层网格的混合方法需要较少的GPU内存,但表现出较慢的运行时性能。另一方面,散列网格或稀疏体素等高级表示允许更快的计算,但对内存的要求更高。最后,尽管目前的3DGS风格的方法在快速图像渲染方面具有优势,但它们仍难以有效处理多时间跟踪和映射处理,阻碍了它们在实时应用中的有效使用。
全局优化。实现LC和全局BA需要大量的计算资源,冒着性能瓶颈的风险,尤其是在实时应用程序中。由于更新整个3D模型的计算复杂性过高,许多已综述的帧到模型方法都面临着闭环和全局束调整的挑战。相比之下,帧对帧技术通过在背景线程中执行全局BA来促进全局校正,这显著提高了跟踪精度,如所报道的实验所示,尽管与实时速率相比计算速度较慢。对于这两种方法,计算成本很大程度上是由于潜在特征网格缺乏灵活性,无法适应环路闭合的姿态校正。事实上,这需要重新分配特征网格,并在校正循环和更新姿势后重新训练整个地图。然而,随着处理帧数的增加,这一挑战变得更加明显,导致相机漂移误差的累积,最终导致不一致的3D重建或重建过程的快速崩溃。
SLAM中NeRF vs. 3DGS。NeRF风格的SLAM主要依赖于MLP,非常适合于新的视图合成、映射和跟踪,但由于其依赖于每像素光线行进,因此面临着过度平滑、易发生灾难性遗忘和计算效率低下等挑战。3DGS绕过每像素光线行进,并通过基元上的可微分光栅化来利用稀疏性。这有利于SLAM的显式体积表示、快速渲染、丰富的优化、直接梯度流、增加的地图容量和显式的空间范围控制。因此,尽管NeRF显示出非凡的合成新视图的能力,但其训练速度慢和难以适应SLAM是显著的缺点。3DGS以其高效的渲染、明确的表示和丰富的优化能力,成为一种强大的替代品。尽管有其优点,但当前3DGS风格的SLAM方法仍有局限性。这些问题包括大型场景的可扩展性问题、缺乏直接的网格提取算法、无法准确编码精确的几何体,以及无法控制的高斯增长到未观察到的区域的可能性,从而导致渲染视图和底层3D结构中的伪影。
评估不一致。缺乏标准化的基准或具有明确评估协议的在线服务器,导致评估方法不一致,难以在方法之间进行公平比较,并在不同研究论文中提出的方法中出现不一致。ScanNet等数据集的挑战就是例证,其中地面实况姿态是从Bundle Fusion中得出的,这引发了人们对评估结果的可靠性和可推广性的担忧。此外,使用训练视图作为输入来评估渲染性能会引发对特定图像过拟合风险的合理担忧。我们强调有必要探索在SLAM背景下评估新视图渲染的替代方法,并强调解决这些问题对更稳健的研究结果的重要性。
其他挑战。SLAM方法,无论是传统的、基于深度学习的,还是受辐射场表示的影响,都面临着共同的挑战。一个值得注意的障碍是动态场景的处理,由于静态环境的基本假设,这被证明是困难的,导致重建场景中的伪影和跟踪过程中的错误。虽然一些方法试图解决这个问题,但仍有很大的改进空间,尤其是在高度动态的环境中。
另一个挑战是对传感器噪声的敏感性,包括运动模糊、深度噪声和剧烈旋转,所有这些都会影响跟踪和映射的准确性。场景中存在的非朗伯对象(如玻璃或金属表面)进一步加剧了这种情况,由于其反射特性的变化,这些对象会带来额外的复杂性。在这些挑战的背景下,值得注意的是,许多方法往往忽视了对输入模式的明确不确定性估计,阻碍了对系统可靠性的全面理解。
此外,缺乏外部传感器,特别是深度信息,给仅RGB的SLAM带来了一个根本问题,导致深度模糊和3D重建优化收敛问题。
一个不那么关键但具体的问题是场景的渲染图像的质量。由于缺乏对模型中的视图方向进行建模,从而影响渲染质量,因此已审查的技术通常难以处理与视图相关的外观元素,如镜面反射。
结论
总之,这篇综述开创了受辐射场表示最新进展影响的SLAM方法的探索。从iMap等开创性作品到最新进展,这篇综述揭示了在短短三年内出现的大量文献。通过结构化的分类和分析,它突出了关键的局限性和创新,提供了有价值的见解和跟踪、绘制和渲染的比较结果。它还确定了当前悬而未决的挑战,为未来的探索提供了有趣的途径。
因此,这项调查旨在为新手和经验丰富的专家提供重要指南,使其成为这一快速发展领域的综合参考。