基于计算机视觉的SLAM技术综述-滕达博士

2023-08-30

       随着科学技术和人工智能的发展,移动机器人广泛应用于多个领域,机器人能够正常工作,与SLAM密不可分,1986 年 ICRA 会议上,SLAM 首次被提出,其最 先用于军事机器人领域。先后经历了算法分析时期和鲁棒性时期。

       从1986年,ICRA大会上提出同步定位与地图构建开始。人们就在SLAM领域进行不断的探索。1987年,EKF-SLAM,扩展卡尔曼滤波器是解决SLAM问题的经典方法,依赖于运动模型和观测模型的高斯噪声假设。能够以在线的方式估计地图的全后验概率。1993年,PF-SLAM拉开了粒子滤波算法的序幕,PF-SLAM是通过蒙塔卡洛定位算法,这种方案使用离散加权的粒子集合表示被估计状态的后验概率,然后通过不断的预测、权值更新以及重采样来解决SLAM问题。1997年,Lu F等人提出基于图优化理论的SLAM方案,基于滤波技术的SLAM解决方案在实时处理观测信息的过程中会丢失部分信息,是的在整个构图的过程中不能回顾所有的已观测信息,部分研究者提出离线技术的解决方案:在移动机器人探索过程中,仅仅保存所有的观测信息,当机器人等下来后再进行地图构建。离线地图避免的信息的丢失,很大程度上降低了移动机器人的计算负担。离线地图通常是基于图论的思想,将SLAM问题转换成稀疏的有向图,通过优化方案求解SLAM的后验概率。将这类SLAM问题的解决方案统称为“Graph-based SLAM” 采用ICP算法对相邻的扫描数据进行配准,并且利用迭代线性化对图结构进行优化。2000年,RBPF-SLAM具有划时代意义,为了更加精确地逼近后验概率。PF需要大量的粒子,导致算法的复杂度比较高。在这个基础上RBPF-SLAM是1999年Thrun和Montemerlo等人将Rao-Blackwallised粒子滤波器运用到SLAM当中,RBPF-SLAM的估计准确性仅次于EKF-SLAM,但是在计算效率和应用范围上比EKF-SLAM更有优势。2002年,Fast SLAM,Montemerlo等人提出了一种基于EKF算法和粒子滤波器的非高斯非线性系统模型,称为FastSLAM。该方法使用分离的条件图和运动模型部分,产生较小的采样空间,减少维度状态空间。2003年,Mono SLAM第一个纯视觉SLAM方案,Mono-SLAM Davison开发的一种用于实时应用的V-SLAM技术。这种基于特征的SLAM技术是现代SLAM实时应用的基础。2007年,Gmapping广泛应用,它太依赖里程计,而且粒子在传播的过程中一旦出现噪声就无法进行修复。PTAM视觉,Klein和Murray提出了分离的跟踪和建图系统,以减少单体SLAM的计算成本,称为平行跟踪和建图(PTAM)。MSCKF首个VIO算法,多状态约束下的kalman滤波器,MSCKF在EKF框架下融合IMU和视觉信息,相较于单纯的VO算法,MSCKF能够适应更剧烈的运动、一定时间的纹理缺失等,具有更高的鲁棒性;相较于基于优化的VIO算法(VINS,OKVIS),MSCKF精度相当,速度更快,适合在计算资源有限的嵌入式平台运行。2010年,optimal-RBPF,它是在Gmapping的基础之上对其进行优化,他的基本思路比如说一个粒子,它每次假设传播N次,生成N个粒子,再从中选择一个最优的出来。,Karto SLAM,首个基于图优化框架的开源方案,为了进一步改善前面工作的不足, Konolige K 等人提出首个基于图优化框架的开源方案 Karto SLAM,该方案认识到了系统稀疏性,在一定程度上替代了基于滤波器的激光SLAM 方案。该方案的不足是采用局部子图匹配之前都要构建子图,耗费时间较长;若采用全局匹配方法,则在搜索范围大的时候速度会变慢。2011年,Hector-SLAM, Kohlbrecher S 等人提出了 Hector-SLAM 方案,该方案利用高斯牛顿方法解决前端扫描匹配问题,把每一帧采集到的激光雷达数据和地图进行匹配,该方案仅有前端扫描匹配的模块,无后端优化的过程。DTAM(视觉SLAM方案),在DTAM中,跟踪是通过比较输入图像和由重建地图生成的合成视图图像来完成的。这简单地等同于图像和地图的三维模型之间的注册,并且在DTAM中有效地在GPU上实现。KinectFusion第一个基于kinect的算法,在KinectFusion中,一个体素空间被用来表示环境的三维结构。环境的三维结构通过结合体素空间中获得的深度图来重建,摄像机的运动由ICP算法使用估计的三维结构和输入的深度图来估计,这是基于深度的vSLAM。2014年,LSD-SLAM(视觉SLAM方案),LSD-SLAM的核心思想遵循半密集VO的思想。在这种方法中,与重建全部区域的DTAM相比,重建目标只限于有强度梯度的区域。SVO(视觉方案),Forster等人提出了半直接VO(SVO)。尽管跟踪是通过特征点匹配完成的,但建图是通过直接方法完成的。在基于特征的方法中,特征描述符和Lucas-Kanade追踪器被用来寻找对应关系。与基于特征的方法相反,摄像机的运动是通过最小化特征点周围的测光误差来估计的。LOAM首个3D激光SLAM,在 3D 激光 SLAM 领域中, 由 Zhang J 等人提出的LOAM 方案,利用 3D 激光雷达采集数据, 进行基于特征点的扫描匹配, 利用非线性优化方法进行运动估计, 激光里程计的输出与地图进行匹配, 包括直线匹配和平面匹配, 无回环检测模块,点面特征还不够可靠。OKVIS(VIO方案)Leutinegge等人提出了OKVIS,它使用IMU测量值来预测当前状态、空间点和二维图像特征,以构成重投影误差。预测的IMU状态量和优化的参数构成IMU误差项,然后再投影误差与IMU误差相结合以进行优化。2015年,ORB-SLAM,Mur Artal等人提出了ORB-SLAM,这是一种相对完整的基于关键帧的单目SLAM方法。与PTAM的双线程机制相比,该方法将整个系统分为三个线程:跟踪、建图和回环。需要注意的是,特征提取和匹配(左列)、地图构建和循环检测的过程都基于ORB特征。V-LOAM(视觉+惯性+IMU)最早将视觉与3D激光融合的SLAM,Zhang J 等人提出视觉结合 3D 激光雷达实时建图的 V-LOAM 方案。利用视觉里程计以高频率估计位姿变换,激光里程计以低频率优化运动估计,并校准漂移。2016年,DSO(视觉)DSO 是一种结合直接法和稀疏法的视觉里程计,它不检测和计算特征点, 而是采样图像内具有强度梯度的像素点;它将光度误差模型和所有模型参数融入到优化函数中进行联合优化,有较好的精度和速度,Cartographer,google的Cartigrapher建图效果好,应用广泛,谷歌的 Cartographer开源方案,是对 Karto SLAM 的优化方案, 核心内容是融合多传感器数据的局部子图创建以及用于闭环检测的扫描匹配策略。 2017年,ROVIO(VIO)它只是一个没有闭环和全局优化的纯 VIO。ORB-SLAM2,Mur Artal等人提出了ORB-SLAM2。该版本支持回环检测和重定位,具有实时地图重用功能,此外,改进的框架还打开了双目相机和RGB-D相机之间的接口。2018年,IMLS-SLAM主要创新点是前端点云的处理和scan to model的匹配,提出了一种新的基于3D激光雷达数据的低漂移SLAM算法,该算法使用scan-to-model的匹配框架。,LeGO-LOAM, LeGO-LOAM 为应对可变地面进行了地面优化,同时保证了轻量级。专为地面车辆设计的SLAM算法,要求安装lidar的时候以水平的方式安装到车辆上,LVIO(视觉+激光+IMU),一种完全紧耦合的多传感器融合框架,该框架由激光雷达、单目相机和IMU(惯性测量单元)三部分组成,同时融合了三个互补传感器的测量结果,以实现精确稳定的自我运动估计。,LIMO(视觉+激光),典型的激光辅助视觉的SLAM方法,主要贡献思想是提出了一种基于LiDAR点云的视觉特征点深度估计方法。VINS-Mono(VIO),香港科技大学开源的一个VIO算法 是用紧耦合方法实现的,通过单目+IMU恢复出尺度,效果非常棒。2019年,HDL_Graph_SLAM,hdl-graph-slam不仅融合了imu、gps、平面、激光等多种输入,同时也带闭环检测等后端处理,即完整的一个slam架构,功能较为全面(但不一定最优),包括平面检测及提取、点云预处理、激光里程计、闭环检测、gps和imu数据融合、后端优化等。2020年,LIO-SAM,LIO-SAM 提出了一个利用GT-SAM的紧耦合激光雷达惯导里程计的框架。实现了高精度、实时的移动机器人的轨迹估计和建图。LIO-SAM在因子图上构建了激光雷达惯性里程计,允许将多源传感器(相对和绝对测量)作为因子纳入系统。IMU预积分估计的运动消除了点云的倾斜,并产生了激光雷达里程计优化的初值。激光雷达里程计的解用于估计IMU的bias。2021年,ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。是第一个基于特征的紧耦合的VIO系统,仅依赖于最大后验估计。T-LOAM,侧重于减轻离群值的影响,以便在稀疏、噪声或杂乱的情况下进行鲁棒导航。在预处理方面,提出了多区域地面提取和动态曲线体素聚类的方法来完成三维点云分割,滤除不稳定目标。提出了一种新的特征提取模块,用于识别四种特征:边缘特征、球面特征、平面特征和地面特征。前端基于分层特征的纯激光雷达里程计通过截断最小二乘法直接处理各种特征来进行精确的运动估计。


1.SLAM介绍

      SLAM(simultaneous localization and mapping)技术通过搭载特定传感器,使移动机器人在没有任何环境先验 条件下,通过在运动过程中自主建立环境模型来计算自身位姿,能够大幅提高移动机器人的自主导航能力,以及对不同应用环境的适应性,并有助于后续动态路径规划、实时避障与多机器人协作的实现。所以SLAM主要解决的问题是我在哪,我周围的环境怎样等问题。SLAM是数据中心巡检机器人面对的一个关键问题,SLAM的目标是解决在未知环境中构建地图,通过传感器获得的信息不断的更新完善地图,目前SLAM主要通过激光雷达和视觉传感器来实现。


2.SLAM基本框架

      主要分为数据感知,里程计,后端优化,回环检测,地图的构建,数据感知是通过多种传感器采集位置相关信息,里程计对传感器获取的数据进行相应的处理和估算。后端优化是对得到的位姿进行相应的误差处理进行优化,回环检测能够检测到回到相同的位置,当出现漂移的时候能够消除误差,保证建图的精确性。

SLAM相关传感器

      激光雷达由发射装置和接收装置组成,发射装置向被测物体发射激光,激光到达物体经过反射返回到接收装置,根据时间间隔,激光的速度,发射的方向来推测相应的距离获取相应的位置信息。主要分为2D激光雷达和3D激光雷达,2D激光雷达能够探测二维平面内的障碍物,并能够实时更新,主要应用于扫地机器人等,3D激光雷达能够对三维空间进行动态扫描,包含的信息更加丰富。能够展示立体的信息,主要应用于无人驾驶等领域。

      视觉传感器主要分为单目相机、双目相机以及深度相机,单目相机使用一个摄像头获取位置信息,容易出现误差。双目相机由两个单目相机组成,模拟人眼观察物体的位置关系,能够通过两个摄像头观察到的信息来计算距离。相比于单目相机,双目相机计算量较大。深度相机运用红外技术通过发射射线判断深度信息。相比于双目相机,深度相机获取到的位置信息速度快,更丰富。

      惯性测量单元(IMU)可以获得车轮的角速度和线速度等信息,在路面打滑或者发生漂移的时候,能够通过速度信息较小误差,一般与激光和视觉传感器结合,主要应用于极端天气或者复杂场景下减小误差。

       SLAM实现包括传感器数据、前端匹配、后端优化、回环检测及建图五个模块。工作流程大致,传感器采集环境信息原始数据,进行预处理;前端估计相对位置和自身位姿;后端对累计 误差进行优化;根据前端与后端得到的移动轨迹建立地图;回环检测考虑不同时刻的图像,提供空间 累积误差消除。SLAM 算法依据不同,分类也各不相同。依据算 法不同,可分为基于滤波算法和基于优化算法;依 据图像特征是否加入状态向量,可分为松耦合和紧耦合SLAM系统,也可以通过传感器不同分为激光SLAM,视觉SLAM和多传感器融合SLAM。


3.基于激光传感器的SLAM算法

      根据关键算法理论不同分为基于滤波的激光 SLAM 和基于图优化的激光 SLAM。滤波器算法的核心思想是概率问题,有 KF/EKF 和 PF 两类,KF/EKF 原理简单,小场景下收敛性好, 存在线性化及更新效率等问题,不能满足大规模的 环境 ;PF 支持非线性、非高斯系统,但存在粒 子退化现象。图优化算法的核心思想是实时构建位姿,提出图优化框架,分为前端和后端,前端负责 扫描匹配、特征提取和数据关联,后端负责位姿图优化,增加了回环检测,修正累计误差。可适用在 室外和室内的大尺度环境中,鲁棒性较好,但计算量偏大。图优化的 SLAM 方案最早在 1997 年提出,由于没有考虑到系统的稀疏性,并没有受到广泛应用。2010 年,首个基于图优化框 架的开源方案 Karto SLAM 提出,才再一次激起学者的探究。认识到系统的稀疏性问题,改善了之前的不足。2011 年,Kohlbrecher 等人提出的 Hector-SLAM 方案[29] ,不需要里程计,对激光雷达 数据测量频率要求较高。2016 年 10 月,Google 对 Karto SLAM 进行了优化,开源了 Cartographer 方 案 ,前端负责特征提取和数据关联,后端负责位 姿图优化,累计误差较低,建图效果好。


4.基于视觉传感器的SLAM算法

      视觉SLAM 工作流程主要可以分为五大部分:信息采集、前端视觉里程计、后端优化、闭环检测、建图,前端视觉里程计通过提取、匹配图像数据中的特征点从而得到路标点并估计出相机当前的位姿,实现实时定位。这期间存在的累积误差由后端优化部分根据帧间的共视关系等方 法进行消除,提高跟踪与建图的精度。在位姿估计期间如果有两帧图像的相似度达到一定标准则认为 形成了闭环,对两帧图像之间的所有路标点和位姿进行一次优化,经过优化处理过的路标点最终用于 建图,建图的精度将直接影响后续动态路径规划、实时避障等工作的效果。视觉 SLAM,通过连续的相机帧,跟踪设置关键 点,定位其位置,同时逼近推测相机自己的姿态。 可分为特征点法、直接法和基于 RGB-D 相机。特征 点法,运行稳定,对光照和动态物体不敏感,但鲁 棒性与计算复杂度成正比,受特征点的稀疏程度影 响;直接法基于灰度不变假设,直接对像素点进行 操作,但消耗计算资源,需要高性能 GPU 支持,对 光照较为敏感;RGB-D 相机可直接获取深度信息, 但成本高,体积大,有效探测距离太短。


5.多传感器融合SLAM

      SLAM 技术主要用到激光雷达、视觉相机以及其 他辅助定位工具,如里程计、IMU、GPS、辅助基站 定位系统。视觉与 IMU 融合的 SLAM 算法,称为 VIO (Visual Inertial Odometer)。相对于 VO 算法,VIO 利用 IMU 估计纯旋转运动;提供尺度信息,解决VO的无法恢复尺度的问题;积分进行运动估计,应对短时间的视觉特征缺失,比VO具有更高的鲁棒性和精度,主要用在AR、无人机、高精地图等领域。分为松耦合和紧耦合两类,松耦合的工作不多,而且效果没有紧耦合好,这里主要介绍紧耦合。视觉和激光融合的SLAM算法,早期主要是在激光雷达与一些辅助定位工具进行融合来地图构建。在视觉SLAM被提出以后, 科研人员在视觉与激光雷达的融合方面进行了探索,并取得了不俗的成就。


6.SLAM未来发展

      多传感器融合,SLAM技术中,单一的传感器感知环境信息是有 限的。激光雷达可工作在无光照、无纹理环境中, 提供深度信息,但易受到环境特征的影响;视觉相 机有超强的场景辨识能力,可以应对高动态环境,提供丰富的地图和里程计信息,但易受到光照和纹 理环境影响;惯性导航可以提供角速度和线速度;其他像GPS等,将各传感器之间优势互补,增加环境感知力,形成多传感器融合的SLAM是必然趋势。但是在多数据信息的融合、数据实时处理与计算的 复杂度中仍然面临诸多问题,未来如何解决还需要 进一步探究。

      基于深度学习的SLAM技术,利用深度学习,在SLAM中,改善回环检测功 能、添加语义信息、提高帧间估计识别度和解析算法效率。结合深度学习的回环检测,在精度和鲁棒性以及智能化程度都有显著地提高;语义信息的加 入,实现对物体标签化,丰富了地图信息;深度学 习在图像处理的帧间估计中,省略特征提取的环节,提高了识别和解析算法效率。深度学习给 SLAM 带来一定的便捷,但一些技术还不是很成熟,涉及 大量的数学问题,相关的成熟数据集较少,需要在今后进行大量的数据训练和人工标定;语义信息的加入对 SLAM 精度方面有哪些影响,有待我们去考 证。

      SLAM相关算法的优化问题,鲁棒性和精度是一个 SLAM 算法是否优秀的重 要依据。目前主流的 SLAM 都相对成熟,但在实际 应用中运动畸变的去除、里程计的标定、实时性数据处理,以及在高动态环境定位、退化等方面仍有许多问题需要考虑和完善。

      多机器人协同SLAM技术,单机器人 SLAM 在大尺度环境中,大量的计算 会产生误差累积,建图的精度降低,甚至机器人出 现故障时会直接影响建图任务。多机器人协同SLAM 有着精度高、效率高、容错率高的优势,但是在理论研究中较为丰富,在实际开发应用中还不是很成熟,未来还需要不断探索。