APP下载

单机器人SLAM技术的发展及相关主流技术综述

2020-09-15刘明芹张晓光徐桂云李宗周

计算机工程与应用 2020年18期
关键词:关键帧位姿深度

刘明芹,张晓光 ,徐桂云,李宗周

1.中国矿业大学 机电学院,江苏 徐州 221116

2.江苏海洋大学 机械与海洋工程学院,江苏 连云港 222001

1 引言

SLAM(Simultaneous Localization And Mapping)技术首次提出是用来估算对象之间位置和方向关系,以及估算与关系相关的不确定性。经过国内外众多学者多年的研究,目前该技术被广泛应用于自主移动(无人机、机器人、无人驾驶汽车等)及AR 等领域[1-3]。SLAM技术在机器人领域应用较广泛,本文主要综述其在机器人领域的应用。

SLAM在机器人领域主要用来解决我在哪、我要去哪的问题。也就是解决机器人自身定位和对环境的认知问题,进而解决路径规划问题。

2 SLAM算法的主要发展历程

2.1 基于距离传感器的主流SLAM技术

早期SLAM 技术从提出开始,学者们在应用中逐渐针对存在的缺点进行改进,使SLAM 技术在不断地修正中持续发展。基于概率统计的扩展卡尔曼滤波器最早应用于SLAM 上,由于EKF 扩展卡尔曼滤波器计算量大,计算速度慢,后续学者对EKF-SLAM提出改进,Castellanos等[4]对一致性进行改进,2002年Montemerlo等针对EKF计算量大的缺点进行改进,提出Fast SLAM1.0[5]和 Fast SLAM2.0[6],该 方 法 使 用 EKF 和 RBPF(Rao-Blackwellized Particle Filtering)联合起来,估计位置和轨迹,使计算量大大减小,运算速度提升。

2.2 基于视觉传感器的主流SLAM技术

随着视觉传感器和图像传输、处理技术的提高,2010年以后,越来越多的SLAM系统采用视觉传感器为主要输入信号,从此SLAM 的研究主要集中在视觉SLAM技术上,即VSLAM(Visual SLAM)。VSLAM在计算机视觉、机器人和AR 领域被广泛使用。在视觉SLAM技术上,国内外众多学者进行研究。从现有研究成果中看,所使用的视觉传感器主要有单目、双目(双目有普通双目视觉和Kinect RGB-D 深度视觉两种)和全景视觉传感器三种。不同结构的传感器其相应的后续处理方法也不同:如单目相机无法得到环境深度信息,所以研究的算法中要包含深度预测环节;而双目视觉(普通双目视觉和Kinect 深度视觉)可以由传感器获得深度信息,算法中就不需要包含深度预测环节。

本文将现有研究视觉SLAM 的技术按是否提取特征点然后通过匹配进行运算,分为特征法和直接法。由于RGB-D 相机获取环境的信息与普通视觉传感器不同,所以它后续处理技术也不同,本文将基于RGB-D传感器的SLAM单独列出。

2.2.1 基于特征法的SLAM

早期VSLAM的研究主要基于单目相机视觉输入,使用基于跟踪和特征点建图,这被称为“基于特征的方法”。Harris 最早提出以角点为特征点,称为Harris 角点,由于Harris 角点对亮度和对比度的变化鲁棒性弱,且不具备尺度不变性,在角点检测时清晰度不高。

利用特征点检测器及描述符比较流行的方法主要有FAST、SIFT[7]、SURF[8]和ORB[9-10]。其中SIFT和SURF检测器包含特征点方向,涉及梯度计算的直方图,ORB特征点由FAST角点检测器检测,加入了方向和旋转不变性特征描述,使特征检测实时性和描述的鲁棒性更强。

点特征是VSLAM算法的主流特征,也有基于线特征,但没有被广泛应用。

基于特征点法一直是VSLAM的主流方法,解决方案比较成熟。但从众多研究者的研究中发现,特征点法存在以下几个缺点:

(1)关键点的提取与描述子的计算非常耗时。实践中发现,SIFT在CPU上是无法实时计算的,ORB也需要近20 ms的计算。如果整个SLAM以每帧30 ms的速度运行,那么一大半时间都将花在计算特征点上。

(2)使用特征点时,忽略了除特征点以外的所有信息。一幅图像有几十万个像素,而特征点只有几百个。只使用特征点丢弃了大部分可能有用的图像信息。

(3)相机有时会运动到特征缺失的地方,这些地方往往没有明显的纹理信息。例如有时会面对一堵白墙,或者一个空荡荡的走廊。这些场景下特征点数量会明显减少,可能找不到足够的匹配点来计算相机运动。

2.2.2 基于直接法的SLAM

为克服特征点法的上述缺点,提出既不计算关键点也不计算描述子,而是根据像素灰度的差异,直接计算相机运动的方法,称为直接法(Direct Method)。Silveira[11]在2008 年最早提出了直接法的概念。在直接法中,并不需要知道点与点之间的对应关系,而是通过最小化光度误差(Photometric error)来计算。

在直接法中,完成相机位姿估计的视觉里程计,是保证算法准确性和快速性的关键、是准确建图的基础,也是算法的主要核心部分。众多学者在视觉里程计上进行研究,Forster 在 2014 年提出SVO(Fast Semi-direct monocular Visual Odometry)[12],通过特征点匹配完成跟踪,通过直接方法完成建图。通过特征描述子和LK光流(Lucas-Kanade tracker)用于查找匹配点,通过最小化特征点周围的光度误差来估计相机运动。SVO 系统对稀疏的特征块使用直接法配准,获取相机位姿,随后根据灰度不变假设构造优化方程,对预测的特征位置进行优化,最后对位姿和结构进行优化,由于SVO是开源的,被该领域学者广泛采用。2016年Engel等提出DSO(Direct Sparse Odometry)直接稀疏里程计[13],DSO 是一种完全直接的方法,它拟合了完全直接的概率模型(最小光度误差)一致性,联合优化所有模型参数,包括几何参数(作为参考帧中的逆深度)和摄像机运动。省略了其他直接方法中使用的前期平滑滤波,取而代之的是在整个图像中均匀地采样像素,因此其在实时性上非常成功。不依赖于关键点探测器或描述符,它可以自然地从所有区域采集像素,包括光度梯度变化的图像区、边缘,或是类似白色墙壁等那些光度平滑变化的区域。该算法模型集成了一个完整的光度校准、计算曝光时间、镜头渐晕和非线性响应函数。实验表明,无论是在跟踪精度上还是在鲁棒性方面,该方法在各种现实环境中都优于目前最先进其他视觉里程计方法。

在2011 年,Newcombe[14]提出了基于密度追踪的实时地图创建算法(Dense Tracking And Mapping,DTAM),开启了直接法在SLAM 中的尝试。DTAM 采用逆深度方式表达深度,为每个像素都恢复稠密的深度图,并且采用全局优化,计算量大但能保证在特征缺失、图像模糊等情况下稳定地直接跟踪和创建地图,取得较好的效果。2014 年Engel 等人[15]提出了同样基于直接法的LSD-SLAM,并于2015年扩展为支持双目相机[16]和全景相机的版本[17]。该算法允许构建大规模、一致的环境图。除了基于直接图像对齐的高精度姿势估计之外,还可以实时重建3D环境为具有相关的半稠密深度图的关键帧的姿势图。在sim(3)上运行具有尺度漂移意识的直接跟踪方法,并可将深度值的噪声影响纳入跟踪。与DTAM相比,LSD-SLAM仅恢复半稠密深度图且每个像素深度独立计算,因此能达到很高的计算效率。

2.2.3 基于RGB-D的SLAM

在2011 年Newcombe 等人最早提出基于深度的VSLAM Kinect Fution[18]。Kinect Fusion在GPU上运行以实现实时处理。Kahler 等人[19]在建图过程中使用体素块散列在移动设备上实现Kinect Fusion的实时处理。

为了获得几何一致的映射,在RGB-D VSLAM 算法中也使用位姿图优化和形变图优化。Kerl 等人[20]使用位姿图优化来减少累积误差,这种位姿图优化几乎与单目VSLAM 算法中的回环相同。Whelan 等人[21]分别使用位姿图优化来改进相机运动估计和形变图优化来改进地图,估计的地图得到了改进。形变图优化通过RGB-D图像和重建模型之间的匹配来估计相机运动。

基于结构光的RGB-D相机,如Microsoft Kinect,变得便宜且小巧。由于这些相机能实时提供3D 信息,因此这些相机也用于VSLAM算法。应该注意的是,大多数面向消费者的深度相机是为室内使用而开发的。他们将红外光(IR)投射到环境中以测量深度信息,在室外环境中难以检测发射的红外光。此外,深度测量范围存在限制,使得RGB-D 传感器只可以捕获从1~4 m 的环境。RGB-D SLAM API 会提供给消费者成套设备,例如 Google Tango 和 Structure Sensor。特别是,Google Tango通过整合内部传感器信息给消费者提供稳定的估算结果,使后续使用变得简单方便。

3 基于距离传感器的SLAM算法及研究内容

3.1 基于距离传感器的SLAM研究框架

根据国内外学者的研究文献可见,基于距离传感器进行SLAM的机器人,携带感知外部环境的距离传感器常见的有激光雷达和声呐测距、激光测距传感器,另外少数用红外、微波、Kinect等,用外部传感器获得环境中障碍物距离机器人的距离,根据距离信息对周围环境特征进行抽象描述。这些机器人同时也会携带如里程计、速度传感器、加速度传感器、陀螺仪等可以检测机器人自身状态的内部传感器。将内部传感器和外部传感器的信息融合,基于SLAM 框架对机器人定位,并构建增量式环境地图,同时消除航迹误差和位姿偏差。

基于概率的方法仍然是解决基于距离传感器SLAM 问题的主要方法。其基本思想是将SLAM 过程视为一个Bayesian评估问题。

Xt表示0到t时刻机器人的状态,Zt表示0到t时刻传感器的观测值,ut是0到t时刻给定机器人的控制量(或叫里程计数值)。

在SLAM 算法中,机器人的状态Xt采用创建的地图Xn(t)和机器人当前的位姿Xr(t)联合概率分布来表示,即p(Xr(t),Xn(t)|Zt,ut),Xn(t)是环境地图,Zt,ut为机器人序列的观测值和运动值。

由此,可以将 SLAM 问题分解成两个相对独立的问题:机器人定位问题和环境特征估计问题,或者是基于观测确定位姿和基于机器人位姿对地图更新问题。

3.2 SLAM算法及研究的具体内容

基于距离传感器SLAM在机器人定位问题上,主要采用滤波器EKF 和PF,在环境特征估计上,主要采用EKF等方法。

3.2.1 EKF-SLAM

在EKF-SLAM 中,系统的状态变量包括机器人位姿和环境特征的位置,假设所有状态变量均服从正态分布,状态变量之间的不确定关系由状态的协方差矩阵表示,而整个EKF-SLAM 的核心问题就是计算和更新协方差矩阵。图1给出了EKF-SLAM的过程。

图1 EKF-SLAM过程

EKF 算法的本质就是在“最佳点”处对非线性模型进行线性化。非线性模型的线性化是通过Taylor 展开完成的。通过对运动模型和观测模型的线性化处理,得到 EKF的预测和更新的状态估计过程:

在第K步预测下一步的状态、协方差以及观测值如下:

第k+1 步获得观测值Z(k+1),利用观测值进行如下更新:

EKF-SLAM 的主要过程就是利用式(2)~(6)递推估计由机器人位姿和路标位置组成的状态及相应的协方差矩阵。

EKF-SLAM 的优点是,小环境预测时计算量小,易于实现。缺点是概率密度函数满足高斯分布,线性化处理误差大,对错误数据关联敏感,对大环境预测时计算量大。

3.2.2 PF-SLAM

基于RB粒子滤波器的PF-SLAM,在条件概率的基础上,因式分解:

nt为地图上路标标记集合,nt={n(1),n(2),…,n(k)}。

将机器人状态估计分为运动轨迹估计和地图估计两部分。粒子滤波几乎能够适用于任意传感器特性、动力学、噪音分布等,可以用于描述非线性、非高斯分布模型。采用通用的概率近似法,和以前的参数方法相比较,减小了在后验概率密度形状上的假设限制。通过控制采样点的数目,粒子滤波能够随计算资源进行调节。相同的代码可以在计算机上按照不同的速度执行不需要修改,能用于解决机器人“绑架”(Robot Kidnapping)问题。与EKF-SLAM 比降低了计算的复杂度,又具有较好的鲁棒性。但其局限性是假定环境特征的观测只与机器人当前位置有关。

3.2.3 Fast SLAM

Fast SLAM中机器人的运动轨迹p(|Zt,ut,nt)的后验概率用一个粒子滤波器来计算,每个粒子采用N个EKF 滤波器,来估计地图中N个路标位置p(Xn(t)|,Zt,ut,nt)的后验概率分布。如果有M个粒子的话,将需要NM个EKF 滤波器,计算量比EKF-SLAM 方法少很多,且在每次采样中估算机器人的运动轨迹时间是恒定的,这给机器人控制提供了方便。

基于粒子滤波的Fast SLAM 算法采用加权采样的思想,算法框架如图2 所示,主要由以下四个迭代步骤组成:首先,针对每个粒子,利用运动学模型预测p(Xr(t)|u(t),Xr(t-1))机器人新的位姿;然后,在每个粒子中,利用观测信息基于 EKF 更新地图;其次,利用前面假定的机器人运动轨迹和估计的概率分布,计算每个粒子的权重;最后,利用上一步的权重进行加权采样,得到无权重的新粒子集。

图2 Fast SLAM框架

Fast SLAM 算法优点:采用非线性模型,将高维运算降为低维运算,在计算复杂度、数据关联等方面具有优势;缺点是样本退化、样本贫化严重。

另外,在基于距离传感器的SLAM 中,还有应用SVD(矩阵奇异值分解)的SLAM 方法。通过激光雷达获得机器人与障碍物的方向、距离信息,利用SVD获得路标在全局坐标系和局部坐标系下的关系,完成地图的更新。将SLAM 问题看成距离信息矩阵SVD 的过程,通过把距离矩阵SVD得到包含有路标信息和机器人位姿的2 个矩阵[22]。该方法优点是不需要线性化模型,能降维处理,具有计算量小、跟踪性能好,避免了运动模型的偏差和“绑架”问题;缺点是依据实际情况不同会出现病态矩阵。

3.3 地图的表达方式

基于距离传感器的SLAM地图表达方式,典型模式有基于特征的地图和基于网格的地图。

基于特征的地图,表示机器人移动时观测到的路标和应用路标定位的概率,一般基于路标定位的EKFSLAM建立该特征的地图比较多。图3是特征地图。

图3 特征地图

网格地图表示地图是否被占用,或者反应的被占用的相关概率。网格地图比特征地图更清楚反应环境的实际特征,图4是2D网格地图。

图4 2D网格地图

3.4 基于距离传感器SLAM方法性能比较分析

几种比较典型的基于距离传感器的SLAM 方法性能比较分析如表1所示。

基于距离传感器的SLAM方法,是在建立模型的前提下使用概率估计和滤波的方法对机器人位置和运行轨迹估计,这个过程存在事先假定条件,如果假定条件出现偏差或不满足,将会导致后续估计出现误差。所以,基于距离传感器的方法大多计算量大,使用过程中存在局限性,因此导致误差较大。基于距离传感器建立的地图是特征图或网格图,对环境表达不直观,与人类对环境的理解有差距。

表1 基于距离传感器SLAM方法性能比较

4 基于视觉的SLAM方法

视觉SLAM的处理过程由传感器信息读取、视觉里程计(也叫前端)、后端优化(非线性优化)、回环检测和建图五个过程组成。图5是视觉SLAM的流程图。

图5 视觉SLAM流程图

(1)传感器信息读取。在视觉SLAM中主要为相机图像信息的读取和预处理。如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。

(2)视觉里程计(Visual Odometry,VO)。视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子,VO又称为前端(Front End)。

(3)回环检测(Loop Closing)。回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。

(4)后端优化(Back End Optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在VO之后,所以称为后端(Back End)。

(5)建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。

视觉SLAM在执行上述五个过程中,主要依据关键帧技术,采用与关键帧的误差最小的优化方法寻找系统最优的参数值。把目前文献按在此过程中采用技术的特点,分为三大类:特征点SLAM(或间接法)、直接SLAM 和基于深度学习的SLAM。下面对以上三类中比较典型的几种方法进行分析。

4.1 特征点SLAM

基于特征点的视觉SLAM利用关键帧图像,每当系统获取到一帧图像,首先提取图像中的特征点,计算每个特征点的描述子,然后通过与前一帧图像中的特征点进行特征匹配建立起特征点之间的一一对应关系,最后利用匹配的特征点在不同的图像中的投影结果最小化重投影误差(Reprojection error)来估计相机的运动。特征点计算帧间相机位姿的原理如图6 所示,Tk,k-1是k和k-1 时刻两帧之间的位姿变换。

图6 特征点计算帧间相机位姿的原理

2015 年,Mur-Artal 等提出了开源的单目ORBSLAM,并于2016年拓展为支持双目和RGBD传感器的ORB-SLAM2,它是目前支持传感器最全且性能最好的视觉SLAM系统之一,也是所有在KITTI数据集上运行结果排名最靠前的一个。ORB-SLAM 延续了PTAM(Parallel Tracking And Mapping)的算法框架[23],增加了单独的回环检测线程,采用词袋(Bag of Words)法进行回环检测和重定位。

基于词袋的闭环检测由四个步骤组成,如图7所示。

图7 基于词袋的闭环检测流程

(1)数据库查询

当获取一个图像It时,它将转换为词袋矢量vt。在数据库中搜索vt,生成匹配候选对象<vt,vt1>,<vt,vt2>,…,<vt,vtj> 及与其相关的s(vt,vtj)列表。

然后,用在向量vt的序列中期望获得的最佳分数对每次获得的分数进行归一化,从而获得一个归一化的相似性度η:

选择一个较小的阈值α,对η(vt,vtj)<α的匹配图像不予选择。

(2)匹配分组

为了防止在查询数据库时时间比较近的图像之间发生竞争,将这样的图像分为一组,并将它们视为一个匹配项。使用符号Ti表示有一定间隔的连续时间组tn1,tn2,…,tnm和用VTi表示一个匹配组,其包含匹配项vn1,vn2,…,vnm。因此,如果tn1,tn2,…,tnm中连续时间之间的间隔很小,则将一组匹配项转换为单个匹配项计算分值H:

选择得分最高的组作为匹配项,然后进行后续时间一致性检测。

(3)时间一致性检测

在获得最佳匹配VT′之后,检查它与前序查询的时间一致性。

匹配<vt,VT′>必须与K个先前的匹配<vt-Δt,VT1>,<vt-2Δt,VT2>,…,<vt-kΔt,VTk> 保持一致,使得Tj和Tj+1间隔接近交叠。如果通过了时间约束,只保留使得分η最大的匹配 <vt,vt′>(t′∈T′),认为它是一个闭环候选,然后由几何一致性检查决定是否最终接受。

(4)几何一致性检查

在闭环候选的任何一对图像之间应用几何检查,用RANSAC查找It和It′之间的基本矩阵进行验证。

ORB SLAM建立了关键帧图以及关键帧之间的可见关系图。如果两个关键帧之间共享相同地图点(至少15个),则两个关键帧之间存在一条边,该边的权重θ为公共地图点数。每个节点都是一个关键帧,关键帧之间的可见性信息,表示为无方向的加权图。关键帧、地图点和可见性图的表示见图8[9]。

图8 地图表示形式(关键帧、地图点、可见性图和基础图)

在支持双目和RGBD 传感器的ORB-SLAM2[10]中,使用g2o 里的 LM(Levenberg-Marquardt)算法,优化相机的运动参数R和t,从而使世界坐标系中已匹配的3D点Xi∈R3和关键点之间的重投影误差最小。

其中ρ是Huber代价函数,而Σ是与关键点规模(scale)相关的协方差矩阵。π(⋅)是投影函数。

BA(Bundle Adjustment,光束法平差)也是应用比较广泛的图优化方法,在ORB SLAM 中采用BA 结合g2o,在图优化中有效地闭合回路,执行位姿图优化,该位姿图沿图分配了闭合误差。在优化之后,根据能观察到该点的其中一个关键帧的校正来变换每个地图点。

基于最小二乘的图优化法g2o,是机器人视觉SLAM 中较常用的图优化方法。它较其他图优化方法如性能全面,并且还可以轻松扩展解决其他新问题。

ORB-SLAM 对PTAM 框架中的大部分组件都做了改进,归纳起来主要有以下几点:(1)ORB-SLAM追踪、建图、重定位和回环检测各个环节都使用了统一的ORB 特征,使得建立的地图可以保存载入重复利用;(2)得益于可见图(convisibility graph)的使用,将跟踪和建图操作集中在一个局部互见区域中,使其能够不依赖于整体地图的大小,能够实现大范围场景的实时操作;(3)采用统一的BoW词袋模型进行重定位和闭环检测,并且建立索引来提高检测速度;(4)改进了PTAM只能手工选择从平面场景初始化的不足,提出基于模型选择的新的自动鲁棒的系统初始化策略,允许从平面或非平面场景可靠地自动初始化。

4.2 直接SLAM

在2011 年,Newcombe[14]提出了基于密度追踪的实时地图创建算法DTAM(Dense Tracking And Mapping),开启了直接法在SLAM中的尝试。

直接法与特征法不同,直接法不需要进行特征的提取,而是通过最小化两帧图像之间的光度误差(Photometric Error)来估计图像之间的运动,如图9 所示。直接法的思路源自图像光流(Optical Flow)的计算,基本假设是图像灰度一致性,即同一个空间点在各个图像中的像素灰度值不变。因此,通过估计得到的位姿变换和深度值可以将图像投影(Warp)到另一帧图像的坐标系下,计算此时投影的图像与原图差值即为两帧图像的光度误差,通过最小化两帧图像之间的光度误差来估计图像之间的运动。

其中,D为当前帧对应的深度图,T2,1为当前帧和相邻帧之间的位姿变换估计。

图9 直接法计算帧间位姿示意图

DTAM 对特征缺失、图像模糊有很好的鲁棒性,但由于DTAM为每个像素都恢复稠密的深度图,并且采用全局优化,因此计算量很大,即使采用GPU 加速,模型的扩展效率仍然较低。DTAM 为每个像素都恢复稠密的深度图,如图10所示。

2013年,TUM机器视觉组的Engel等人提出了一套同样也是基于直接法的视觉里程计(Visual Odometry,VO)系统,该系统2014年扩展为视觉SLAM系统LSD-SLAM[15]。

Engel 等在文献[15]中采用基于深度估计的半密集视觉里程计,通过高斯-牛顿最小化光度误差来对齐两个图像:给出对ξ的最大似然估计量。

图10 稠密的深度图

从现有关键帧Ki=(Ii,Di,Vi)开始,通过最小化光度误差的归一化方差来计算新图像Ij的相对3D 姿态ξij∈se(3),即

其中:

其中,‖ ‖δ是Huber范数

用于归一化残差。

LSD SLAM 中采用sim(3)上直接图像对齐,使用场景深度和跟踪精度之间的固有相关性来解决在长距离跟踪上,导致尺度漂移产生的误差。缩放每个创建的关键帧的深度图,以使其平均逆深度为1,建立最小化总误差函数为:

在将新的关键帧Ki添加到地图后,将收集许多可能的循环闭合关键帧Kj1,Kj2,…,Kjn,使用最接近的十个关键帧,检测大规模的循环闭合。为了避免错误插入或错误跟踪闭环,采用相互跟踪检查,即对于每个候选帧Kjk,独立估计相对于关键帧Ki的摄像机位姿ξjki和ξijk,仅当两个估算值在统计上相似时,即如果

足够小时,才将它们添加到全局地图中,作为闭环候选。

LSD SLAM 中由位姿图描述相机位置及移动轨迹。可通过位姿图优化(pose graph optimization)来对闭环进行优化。如图11 所示[15]蓝色标记是一个个相机位姿,一般由锥形四面体表示,顶点是所采集图像时相机在世界坐标系中位置,四边形底面表示此时相机的视平面,相机位姿之间连线用绿色表示。

图11 描述相机的位姿图

LSD-SLAM 中是由一组关键帧和跟踪的sim(3)约束组成的地图,使用最小化的误差函数对其进行图优化,最小化的误差函数为(W定义为世界坐标):

ξji是关键帧i和j的相对位姿。

LSD-SLAM 随机从位姿图中选择一个具有两个以上相邻关键帧的关键帧,并试图将当前帧与它进行匹配,如果外点/内点比率较大,那么丢弃该关键帧,重新随机选择;否则接着测试所有与它相邻的关键帧,如果相邻的关键帧中内点/外点比率较大的关键帧数多于外点/内点比率较大的关键帧数,或者存在多于五个的内点/外点比率较大的关键帧,那么选择内点/外点比率最大的关键帧进行跟踪,重定位成功。

该算法允许构建大规模、一致的环境图。除了基于直接图像对齐的高精度姿势估计之外,还可以实时重建3D 环境为具有相关的半稠密深度图的关键帧的位姿图。在sim(3)上运行具有尺度漂移意识的直接跟踪方法,并可将深度值的噪声影响纳入跟踪。与DTAM 相比,LSD-SLAM仅恢复半稠密深度图且每个像素深度独立计算,因此能达到很高的计算效率。

4.3 典型视觉SLAM方法性能比较分析

基于视觉SLAM的几种典型方法工作机制、优缺点和适用场合等比较,如表2所示。随着计算机处理速度的提升,基于视觉传感器的SLAM实时性和准确性大大提高,目前已达到无人车城市道路实时应用的水平。由于视觉传感器采集信息丰富、使用方便、价格便宜,构建的环境地图接近人眼所见的真实环境,所以视觉SLAM将是未来的主流应用技术。

4.4 基于深度学习的视觉SLAM

随着计算机数据处理量的提升以及深度学习技术的发展,国内外学者发现将深度学习技术应用到SLAM中,将会给SLAM技术带来巨大革命。目前在SLAM中可以利用深度学习技术闭环检测、实时估计相机位姿、特征点检测和描述、构建语义地图等。

4.4.1 深度学习在闭环检测上的应用

目前深度学习在闭环检测上的应用可分为两大类,一类是利用深度学习模型提取图像特征进行闭环检测;另一类是提取环境语义信息,利用语义节点匹配。

(1)利用深度学习模型提取图像特征进行闭环检测

深度学习在闭环检测上的应用,主要是通过使用深度学习模型提取图像特征,并使用相似度矩阵检测闭环。经过特征提取后得到的特征向量在经过相似度计算后可以判定为拥有相同的图像特征,来证明两幅图像拥有相似的内容。

Chen等人[24]首次提出在闭环检测上基于CNN的位置识别技术。Hou 等人[25]利用Caffe 框架下的AlexNet模型提取特征,Sunderhauf 等人[26]利用 Image Net 数据库对基于Caffe框架的AlexNet模型进行预训练,提高其在闭环检测方面的优势,Li等人[27]提出了基于雅可比神经网络(fast Neural Network,NN)的Fast SLAM 算法来处理观测误差和SLAM线性化误差,都取得了较好的效果。

表2 典型视觉SLAM方法性能比较

文献[28]提出基于无监督栈式卷积自编码(CAEs)模型的特征提取方法,运用训练好的CAEs 卷积神经网络对输入图像进行学习,将输出的特征应用于闭环检测。与传统的BoW 方法相比,能够有效降低图像特征的维数并改善特征描述的效果,可以在机器人SLAM闭环检测环节获得更好的精确性和鲁棒性。

(2)构建语义节点特征匹配

文献[29]利用YOLOv3 目标检测算法获取场景中的语义信息,以基于密度的带有噪声的稀疏聚类DBSCAN(Density-Based Spatial Clustering of Application with Noise)算法修正错误检测和遗漏检测,构建语义节点,对关键帧形成局部语义拓扑图。利用图像特征和目标类别信息进行语义节点匹配,计算不同语义拓扑图中对应边的变换关系,得到关键帧之间的相似度,并根据连续关键帧的相似度变化情况进行闭环的判断。目标聚类有效地提高了室内场景下的闭环检测准确性,与单纯利用传统视觉特征的算法相比,能够获得更加准确的闭环检测结果。

4.4.2 深度学习估计相机位姿

文献[30]根据单目视觉传感器采集的图像,实时估计相机位姿,实现了单目相机实时六自由度重新定位。系统训练一个卷积神经网络,以端到端的方式从单个RGB 图像中回归六自由度相机的姿态,而无需其他工程或图形优化,该算法可以在室内和室外实时运行。

4.4.3 深度学习应用于特征点检测全过程

文献[31]采用深度网络实现了完整的特征点检测、方向估计和特征描述全部处理过程。以往的研究工作只能成功地单独解决一个问题,该文献展示了如何在保持端到端的差异性的同时以统一的方式完成这三个问题,与传统方法比较取得了较好的效果。

随着深度学习[32]、语义理解[33]和SLAM 技术的发展[34],未来三者结合基于语义地图指导机器人进行定位和自主运行将是视觉SLAM的发展方向。

5 SLAM技术实现的难点和未来发展的方向

5.1 SLAM技术实现的难点

SLAM 是多学科多算法组合,它包含图像处理技术、几何学、图理论、优化和概率估计等学科的知识,需要扎实的矩阵、微积分、数值计算知识,SLAM与使用的传感器和硬件平台也有关系,研究者需要具备一定的硬件知识,了解所使用的传感器的硬件特性。所以,根据不同的应用场景,SLAM研究者和工程师必须处理从传感器模型构建到系统集成的各种实践问题[35]。从前面章节的分析可以看出,SLAM的各个环节用到的技术是偏传统的。与当前大热的深度学习“黑箱模型”不同,SLAM 的各个环节基本都是白箱,能够解释得非常清楚。但SLAM却并不是上述各种算法的简单叠加,而是一个系统工程。

比如SLAM需要平衡实时性和准确性,SLAM一般是多线程并发执行,资源的分配、读写的协调、地图数据的管理、优化和准确性、关键参数和变量的不确定性以及高速高精度的姿态跟踪等,都是需要解决的问题。

SLAM还需要考虑硬件的适配,SLAM的数据来源于传感器,有时是多个传感器融合,传感器的质量对SLAM的效果影响很大。例如,如果SLAM使用的相机图像噪点非常多,那么就会对姿态跟踪产生不好的影响,因为特征点提取会很不一致;再比如在VIO系统中,如果相机和IMU 的时间戳不一致(至少毫秒级),也会影响算法精度甚至算法失败。多个传感器的分别校准和互相校准,乃至整个系统众多参数的调整,都是非常耗费时间的工程问题。

由于产品和硬件高度差异化,而SLAM相关技术的整合和优化又很复杂,导致算法和软件高度碎片化,所以市场上目前还没有一套通用普适的解决方案。

5.2 视觉SLAM主要发展趋势

SLAM 未来的发展趋势有两大类:一是朝轻量级、小型化方向发展,让SLAM能够在嵌入式或手机等小型设备上良好运行,然后考虑以它为底层功能的应用,比如手机端的AR和无人机SLAM等。在这些应用中,不希望SLAM占用所有计算资源,所以对SLAM的小型化和轻量化有非常强烈的需求。另一方面则是利用高性能计算设备,实现精密的三维重建、场景理解等功能。在这些应用中,本文目的是完美地重建场景,而对于计算资源和设备的便携性则没有多大限制,由于可以利用GPU,这个方向和深度学习也有结合点。

5.3 SLAM技术未来的研究热点

(1)多传感器融合SLAM

相机能够捕捉场景的丰富细节,而惯性测量单元(Inertial Measurement Unit,IMU)有高的帧率且相对小地能够获得准确的短时间估计,这两个传感器能够相互互补,从而一起使用能够获得更好的结果。

最初的视觉与IMU结合的位姿估计是用滤波方法解决的,用IMU的测量值作为预测值,视觉的测量值用于更新。

上述文献分析已证明在准确性上基于优化的视觉SLAM优于基于滤波的SLAM方法。

实际的机器人和硬件设备,通常都不会只携带一种传感器,往往是多种传感器的融合。比如机器人除了视觉传感器,还通常具有激光雷达、里程计、IMU 等,手机除了摄像头,也带有IMU、磁力计等传感器。融合多种传感器的信息对于提高SLAM 系统的精度和鲁棒性有着重要的意义。比如目前手机上的VIO的研究,它将视觉信息和IMU 信息融合,实现了两种传感器的优势互补,为SLAM的小型化与低成本化提供了非常有效解决方案,取得了良好的效果。

(2)语义SLAM

SLAM的另一个方向就是和深度学习技术结合[36-37]。到目前为止,SLAM的方案都处于特征点或者像素的层级。人们对于这些特征点或像素到底来自于什么东西一无所知。这使得计算机视觉中的SLAM 与人类的做法不怎么相似,至少人类自己从来看不到特征点,也不会去根据特征点判断自身的运动方向。看到的是一个个物体,通过左右眼判断它们的远近,然后基于它们在图像当中的运动推测相机的移动。SLAM 和语义的结合点主要有两个方面:

一是语义帮助SLAM。如果有了物体识别的语义信息,就能得到一个带有标签的地图,物体信息可为回环检测、BA优化带来更多的条件。

二是SLAM 帮助语义。物体识别和分割都需要大量的训练数据。要让分类器识别各个角度的物体,需要从不同视角采集该物体的数据,然后进行人工标定,非常辛苦。而SLAM 中,由于可以估计相机的运动,可以自动地计算物体在图像中的位置,节省人工标定的成本。如果有自动生成的带高质量标注的样本数据,能够很大程度上加速分类器的训练过程。

(3)SLAM算法与硬件的结合

此外,未来的SLAM技术将会越来越注重算法和硬件的深度结合,专用处理器(如HoloLens HPU)和一体化功能模组(如Tango模组)也是未来的发展方向,这将会大大降低现有硬件平台的计算能力瓶颈和算法调试门槛,带给用户更流畅的体验。

(4)SLAM算法与深度学习的结合

随着深度学习在计算机视觉领域的大成功,大家对深度学习在机器人领域的应用有很大的兴趣。SLAM是一个大系统,里面有很多子模块,例如闭环检测、立体匹配等,都可通过深度学习的使用来获得更优的结果。

6 结论

本文从SLAM产生到目前最新的前沿主流技术,按机器人SLAM 技术常用的距离传感器和视觉传感器两大类进行综述。分别对这两类输入信号对应的SLAM主流技术,从技术框架、主要研究内容、优缺点及适应的场景等性能做了分析,并对目前最新技术、未来的研究热点做了介绍,预示了SLAM与深度学习和语义结合的未来发展方向。

猜你喜欢

关键帧位姿深度
融合二维图像和三维点云的相机位姿估计
基于计算机视觉的视频图像关键帧提取及修复方法
自适应无监督聚类算法的运动图像关键帧跟踪
深度理解一元一次方程
船舶清理机器人定位基准位姿测量技术研究
视频检索中的关键帧提取方法研究
优化ORB 特征的视觉SLAM
深度观察
深度观察
深度观察