Advertisement

RGB-D Slam 总结

阅读量:

一.引言

在工程实践中,工程界普遍关注的问题之一是 SLAM 技术的发展与应用(详见 SlamCN)。作为同时实现实时定位与环境建模的技术框架(详见高翔《视觉slam十四讲》),SLAM 由实时定位与环境建模两大核心任务构成,并包含实时性、精确性与鲁棒性三大基本性能指标(详见 EvoMPC)。根据所采用的主要传感器类型,则主要可分为激光 SLAM(LOOM 系列算法)、视觉 SLAM 等几大类;其中视觉 SLAM 又可分为单目 SLAM(如 ORB-SLAM)、双目 SLAM(如 LIBVISO2)以及 RGB-D SLAM 等类型;从感知流程来看,则主要包括前端感知模块、后端估计模块及闭环检测模块三个关键环节;从算法框架来看,则主要包含前端里程计算法、后端优化算法及闭环检测算法三个子系统

视觉SLAM框架:

本文主要介绍RGBD SLAM技术及其相关应用。作为视觉SLAM的重要组成部分之一(详见深度相机简介),RGBD SLAM主要依赖于RGBD传感器来获取环境信息。其中双目立体相机zed适用于室外场景;而基于结构光的Kinect相机则仅限于室内环境;此外还有TOF类型的Kinect v2相机主要用于室内场景捕捉等多类别应用。相较于其他SLAM方法而言,在实现难度上 RGBD SLAM相对较为简单;但其具体实现过程同样充满挑战性,在不同类型的深度相机及其应用场景下可能需要做出相应技术上的调整以提高性能和效果。基于此方法的特点与优势 RGBD SLAM已在多个领域展现出广泛的应用潜力 包括室内三维建模 增强现实与虚拟现实(AR/VR) 机器人智能定位与导航 高精度地图生成 自动驾驶系统 无人机避障与测绘等多个关键领域中得到了广泛应用 并推动了SLAM技术向更高水平发展 在定位精度与系统稳定性方面也持续实现了技术突破 从而在实际应用场景中展现出更强的实用价值。

视觉SLAM应用:

二.RGBD SLAM的研究现状

1)现有的RGBD SLAM方法

(1)前端

在工程界中,视觉里程计(VO)通常被视为 frontend 的核心组成部分。常用的 frontend 解决方案包括基于 feature point methods、optical flow methods、direct methods 以及 line and plane-based methods 等多种算法。值得注意的是,在实际应用中对 geometric constraints 的需求更为强烈。基于上述 geometric constraints 的方法占据主流地位,在此基础上构建高效的 optimization framework 成为当前研究的重点方向之一。对于不同场景中的关键点匹配问题,在现有解决方案中可以选择合适的 geometric model 进行建模与求解

ICP:在RGBD SLAM框架下,能够直接应用ICP算法来计算相机运动;然而,在缺乏几何特征的情况下,则会导致算法失效;

特征点法 在各种场景中都能提取出充足的特征点,并且具有较好的适应性特点。这些提取出的几何特性可被用来实现位置重新确定。然而该方法的主要缺点在于计算过程较为耗时,在实际应用中往往难以满足实时处理的需求;此外由于仅依赖有限的边缘或其他简单属性作为判定点位依据,在一定程度上导致大量图像细节无法被捕捉;当面对复杂的弱纹理区域时会出现问题;最后该方法容易出现错误的配准结果因而影响最终定位精度

光流法

直接法 的优点在于无需计算特征点及描述子即可生成稠密或半密集的地图,并且即使部分特征丢失也能正常运行;其局限性类似于光流法依赖灰度恒定的假设计算机环境中并不完全成立,并且当相机运动速度过高时自动曝光不可行。

其优势在于其层次较点更为显著,并且能够有效减少误匹配的可能性。然而,在实际应用中这类高层次的特征相对较少。

前端开发中需关注的关键点包括多种配准策略:双帧配准模式、多帧融合模式以及当前帧与局部特征图的配准;当缺乏深度信息时应采取何种策略来处理二维或三维特征点;采用基于FLANN算法的快速配准方案以提升效率;确保各区域的二维或三维特征均匀分布;采用有效方法去除错误配对;根据相机噪声特性进行加权融合以优化数据质量;同时需重点解决关键帧选择问题等后续将详细展开

(2)后端

后端主要通过优化前端结果来提升系统性能。具体来说,这些方法可分为基于滤波的方法和基于图优化的方法(其中后者属于非线性优化范畴)。目前大多数SLAM系统都采用了基于图优化的技术。在滤波方法中,EKF、UKF和PF等算法因其计算效率较高而被广泛应用。然而这种方法能够有效降低计算复杂度的同时也会导致一定的精度损失;相比之下BA算法作为一种经典的基础位姿估计技术具有较高的鲁棒性与稳定性通常被集成到各种因子图框架中使用。在工具箱方面g2oceres和gtsam等是一些广泛使用的后端优化库。

(3)闭环检测

为何需要实施闭环检测?因为前端获得的像机轨迹会随着时间持续漂移(drift),误差逐渐加剧,在较短时间内就会导致所得轨迹变得不可靠。当相机返回到之前访问过的某个位置时,则能够施加一个强有力的约束条件将其拉回到正确的位置。从数据关联的角度而言,在位姿估计中仅关注局部区域的数据关联以保证局部位姿准确性;而闭环检测则考虑全局范围的数据关联以实现全局位姿准确性的目标。常用的闭环检测方法包括BOW(词袋模型)以及fabmap等技术;值得注意的是如今深度学习技术也在这一领域取得了显著的应用成果;此外我们还可以结合其他辅助数据来进行闭环检测操作例如基于OSM的地图信息辅助下的定位方案。

闭环检测前后:

(4)制图

因不同的应用领域(定位、导航、避障、重建与交互)而异的地图表现形式也随之变化。这些典型的地图类别主要包括稀疏图与稠密图的结合体、基于语义的理解型图以及基于拓扑结构的知识图谱。

地图类型:

2)优秀RGBD SLAM介绍

(1)KinectFusion

KinectFusion是首个基于RGBD相机的实时三维重建系统,用深度图像生成的点云通过ICP估计相机位姿,再依据相机位姿拼接多帧点云采,并用 TSDF模型 表达重建结果。KinectFusion虽然能实时构建三维模型,但它也存在很明显的缺点 :RGBD相机的RGB信息完全没有得到利用;为保证实时性,需要用到GPU加速,增加实现的成本;当环境主要由平行平面构成时,ICP会失败;它在对同一个环境重复建模时误差不会无限累积,但对新环境进行建模时,误差仍会累积;使用固定体积的网格模型表示重建的三维场景,因而只能重建固定大小的场景;没有使用闭环检测进行优化。

KinectFusion:

(2)ElasticFusion

该方法基于RGBD相机的信息实现定位与建模功能。具体而言,在分析RGB颜色的一致性后推断出相机的姿态;此外,在深度图像的基础上生成点云,并运用ICP算法进一步推断出相机的姿态;随后通过持续优化重构建图以提升对相机姿态估计的准确性;最终采用 spherical Walker模型 来表示环境地图。该方法的优势在于充分整合了颜色和深度信息;其不足之处在于代码缺乏优化;因此该方法仅适用于处理小规模室内场景。

(3)Kintinuous

Kintinuous(参考Kintinuous解析)基于KinectFusion的改进,在位姿估计方面采用ICP和直接法结合GPU技术实现,并且具有闭环检测功能;此外还首次引入了_deformation graph_来进行三维刚体进行非刚性变形处理,在闭环中实现了两次重建结果的一致性保证。

(4)RGBD SLAM2

该系统集合了多种核心技术(包括图像特征提取、优化算法、闭环检测机制等),实现了SLAM领域的多项创新成果,在理论研究与工程应用方面均取得了显著进展。对于刚开始学习RGBD SLAM技术的读者来说,该系统具有极强的学习价值;而对于已经有一定理论积累的技术人员,则可以通过深入研究进一步完善相关算法并拓展应用范围。然而,在实际应用中存在以下局限性:首先,在处理复杂场景时可能会遇到计算效率较低的问题;其次,在相机运动速度方面存在较高要求;最后,在使用点云表示三维地图时会占用较大的内存资源

(5)RTAB Map(RTAB SLAM)

RTAB-MAP(见RTAB-Map's homepageRTAB-Map中文详解)作为目前最先进的RGBD SLAM系统,在采用STM/WM/LTM内存管理机制的基础上成功地减少了用于图优化与闭环检测所需的节点数量,在保证运行实时性的同时也提升了闭环检测精度水平,在超大场景环境下仍能稳定运行。值得注意的是,在Google Project Tango中使用的RTAB-MAP系统不仅整合了视觉信息还能融合IMU与其他传感器数据(据称采用了MSCKF算法并实现了硬件同步)。今天实际体验了Google Project Tango后发现其性能卓越——无论是在室内环境还是户外环境中都能稳定运行且效果显著;其中室内运行效果更为理想,在手机运动速度不过于快的情况下基本能够持续稳定地构建高精度地图并输出成网数据。

RTAB Map结果:

3)RGBD SLAM的核心问题(参考知乎:视觉SLAM难点及可能的解决思路

(1)相机运动太快

当相机运动速度加快时:首先,在特征点法中会出现的问题是由于帧之间的重叠区域缩小导致同名特征点的数量减少;而在光流法和直接法中则会因为灰度不变假设不再成立而导致位姿估计的准确性降低或无法进行计算(可通过选择广角、鱼眼或全景镜头,并适当增加摄像头数量来解决);其次,在直接法应用中会遇到由于滚动快门效应导致的图像模糊问题(这会影响特征点提取与匹配过程,并且显著降低直接法在位姿估计中的准确性)(可通过采用全局快门的方式来消除这一问题)。

(2)视场角不够

当视野角较小时,在连续帧之间所形成的重叠区域也会相应变小(其中zed具有较大的视场角,而Kinect的视场则相对较小),因此可以通过选择具有较大视场角度的摄像头来解决这一问题。另外一种解决方案是部署多个RGB-D摄像头以进一步扩大覆盖范围

(3)深度测量范围小、精度低

zed的深度测量能力虽能达到20米,在实际应用中却面临精确度不足的问题;此外,在处理复杂纹理不够丰富的场景时也会出现较大的误差;而kinect系统则以其稳定的工作距离范围定位于0.5至4米之间,并且能够在该范围内提供约2至4毫米的高精度数据。

(4)实时难度大

基于现有技术的研究表明,在应用RGBD SLAM技术时会不可避免地涉及对几何特征(如点位和线面)进行提取与分析的过程。然而要实现这一目标仍面临诸多挑战。尽管如此,在实际应用中如何平衡这两者仍是一个亟待解决的关键问题。

(5)遮挡

相机运动到墙角时,许多信息会被遮挡;相机可能会被操作人员无意遮挡。

(6)特征缺失

许多实际应用环境都包含大片区域具有较弱的纹理特征,在这种情况下容易导致位姿估计的精度较低甚至无法实现。在仅依赖视觉信息的情况下,现有的解决方案(如通过IMU辅助)似乎也难以有效改善定位精度。

(7)动态光源

变化的光源会引起特征提取与匹配的不准确现象,并使直接法下的灰度保持不变这一假设不再成立;同时,在这种情况下,强光会对Kinect系统造成显著干扰。

(8)运动物体的干扰

所有基于视觉的三维建模方法(SLAM)通常假定环境处于静止状态。然而动态物体的存在会违反这一前提。为了解决这个问题,需要首先识别出这些动态物体,并采取措施减少其对系统的影响。

(9)时间同步

随着现代 SLAM 系统的广泛应用

上述问题普遍存在于视觉SLAM领域,在RGBD SLAM中同样存在问题。目前这些问题仍处于研究阶段,并未达到实际应用的标准。早期的问题则可在一定程度上得到缓解或解决。例如采用广角摄像头或增加RGBD相机数量(但受限于时间同步难题),此外还可以借助IMU设备辅助(该技术的优势在于能够检测快速运动状态,并在视觉里程计失效时提供短时定位估计)。

4)RGBD-inertial SLAM

为了有效解决相机快速运动及特征丢失所导致的问题,并尽量减少运动物体所带来的干扰,在通常情况下,为了实现有效的SLAM效果,在数据融合时往往会采用IMU辅助的方式结合RGBD信息。在通常情况下,在数据融合时往往会采用IMU辅助的方式结合RGBD信息。如Davide Scaramuzza所提出的分类,这种数据融合方式一般可分为滤波方法(Filter-based)与优化方法(Optimization-based)两大类;在此基础上进一步划分的话,则可依据状态向量中是否包含图像特征来区分为松耦合与紧耦合两种类型。其中,在松耦合的情况下,经典的滤波方法包括SSF(Single Sensor Fusion)和MSF(Multi-Sensor Fusion),这些方法在ETHZ Stephen Weiss的博士论文中有详细阐述;而紧耦合的情况下,则以MSCKF为代表。

全部评论 (0)

还没有任何评论哟~