当前位置:首页 期刊杂志

基于运动避免特征提取的动态视觉SLAM方法*

时间:2024-07-28

黄冠恒,曾 碧

(广东工业大学计算机学院,广州 510006)

0 引言

同时定位与建图(Simultaneous Localization And Mapping,SLAM),是以激光雷达、视觉摄像头等传感器对未知环境进行感知,在对环境进行地图构建的同时估计自身的位姿[1-2]。SLAM最早被应用在机器人领域,旨在解决机器人的自主导航问题。传统SLAM方法大多基于激光雷达,随着计算机视觉技术的发展,体积更小、成本更低的视觉传感器也渐渐被研究者采用,称之为视觉SLAM(visual SLAM)[3]。

根据前端里程计原理的不同,视觉SLAM方法可分为3大类:以ORB-SLAM2[4]为代表的基于特征的特征法,以Lucas-Kanade[5]稀疏光流或Horn-Schunck[6]稠密光流为代表的光流法,以及以SVO[7]和LSD-SLAM[8]为代表的直接法。这些方法在一般的场景下能良好工作,然而,当场景中的动态物逐渐增多时,其表现渐渐下降,甚至无法正常工作。根本原因在于其假设环境是静态的,然而现实场景常常包含许多运动物体。受到动态物体的影响,这些主流方法都不可避免地进行错误的数据关联,为系统引入大量的误差。

现有的解决方法主要采用计算量较大的语义分割模型检测图像上的动态物,随后过滤落在动态物上的特征,以此避免动态物的干扰。由于使用了语义分割模型,这些方法的实时性较低,无法用于实时应用。此外,过滤特征的方式导致了特征的数量急剧下降,使得定位不够准确,而且在场景缺乏特征时容易丢失定位。

为了解决现有方法在实时性、特征提取方面存在的问题,本文使用计算量较小的目标检测模型对动态物进行检测,并提出一种运动避免的特征提取方法,结合ORB-SLAM2实现了一种面向动态场景的视觉SLAM方法。相比于现有方法,本文方法不仅提取的特征的数量更充足、稳定,在高动态场景下的定位更准确、鲁棒性更高,而且能够实时运行,适用于实时应用。

1 动态SLAM方法研究

1.1 传统SLAM方法不足

SLAM通过计算自身与参照物的相对关系来估计自身位姿,参照物的非预期运动会让SLAM系统误以为是自身在运动,从而导致错误的位姿估计,并为地图引入大量的误差[9-10]。

为了解决动态物带来的不良影响,目前主流的解决方法是事先检测场景中的动态物并进行剔除,保证SLAM只对场景的静态部分进行感知,避免将动态物作为地图参照物。在动态物非常少的情况下,场景中的大部分内容都是静态的,动态物可以被认为是噪声,因此使用RANSAC[11]算法就能够有效地去除它们。由于ORB-SLAM2采用了RANSAC算法,因此在低动态场景下其能取得相当不错的工作效果。然而,当动态物逐渐增多时,ORB-SLAM2的定位精度急剧下降,最终无法正常工作。在这种情况下,需要主动对动态物进行感知和处理。

1.2 主流动态视觉SLAM方法

现有的动态视觉SLAM方法主要采用几何法或语义法对动态物进行检测,然后剔除被归类为动态物的参照物。几何法计算不同时刻物体预期位置和实际位置的差距,根据差距的大小判断物体是否为动态物。语义法根据先验信息,把人、车辆和动物等语义对象当成是潜在的动态物。

Cui等[12]在ORB-SLAM的基础上,通过分析投影点位置去除地图中的动点,减轻了动态物对系统的影响,但存在动点检出率较低,潜在动态物没有处理的问题。ESFAHANI M A[13]使用基于深度学习的FlowNet预测场景中的光流,结合Mask R-CNN分割动态物,改进了ORB-SLAM2在动态场景下的定位表现,但实时性很低。

RIAZUELOL[14]利用目标检测模型定位场景中的行人,过滤落在行人检测框内的特征,使得系统在多人环境下能正常工作,但导致提取的特征数量锐减,在缺乏特征的场景下容易定位不准或丢失定位。DS-SLAM[15]使用SegNet分割场景中的行人,并用运动一致性方法验证其运动状态,只过滤运动中的行人的特征点。DS-SLAM运行速度较快,但其采用了过滤特征的方式,存在特征不足的缺点。Dyna SLAM[16]融合几何法和语义法,只过滤运动物的特征,但运行速度太慢,而且也存在特征数量锐减的问题。

现有的动态SLAM方法基本解决了动态物引起的感知问题,但在准确度、实时性或鲁棒性上还有进一步的研究空间。本文提出基于运动避免特征提取的视觉SLAM方法(Motion Avoidance SLAM,MA-SLAM),解决现有动态SLAM方法运行速度慢、特征数量稀缺等问题。

2 方法描述

位姿估计是SLAM系统中关键的步骤之一,其不仅影响系统的定位精度和鲁棒性,还影响地图的质量。为了进一步优化位姿,现代SLAM系统通常会包含后端优化和闭环检测模块,其中最著名的视觉SLAM框架之一是ORB-SLAM2。ORB-SLAM2基于特征法,支持多种视觉传感器,在大多数情况下都表现良好,但对高动态场景的支持较差。因此,本文基于ORB-SLAM2提出MA-SLAM,以提供一种全场景适用的SLAM解决方案。

2.1 MA-SLAM框架

MA-SLAM包含5个并行运行的线程:跟踪、目标检测、运动一致性验证、局部建图和闭环,系统框架如图1所示。为了解决动态物的干扰,MA-SLAM修改了跟踪线程,将原来的特征提取方法替换为本文提出的运动避免特征提取方法。局部建图和闭环检测线程则与ORB-SLAM2保持一致。

图1 MA-SLAM框架Fig.1 Framework of MA-SLAM

MA-SLAM采用了多线程技术,传感器采集到的图片数据在跟踪线程、目标检测线程和运动一致性验证线程中同时进行处理。目标检测线程定位图像上的目标和获得它们的语义类别,运动一致性验证线程则利用光流法检测图像上的动点。跟踪线程结合目标检测线程和运动一致性验证线程的结果将图像划分为静态、临时静态和运动区域,然后在静态和临时静态区域提取特征。相比于在图像上提取特征后再过滤的方式,这种根据图像上的运动自适应地提取特征的方式能获得数量更多、分布更稳定的特征,从而获得了更好的定位精度和鲁棒性。最后,多帧之间提取的特征进行匹配后估计系统的位姿。

2.2 运动避免特征提取方法

运动避免特征提取方法的运行示例如图2所示。首先使用目标检测方法获取物体的包围框,同时使用运动一致性检测获取运动点,两者结合实现图像动态、临时静态和静态区域的划分。最后,在静态区域提取静态特征点。当静态特征点的数量不足时,从临时静态区域提取临时的特征点,作为临时参照物参与位姿估计。注意,只有从静态区域提取的特征点会被选择为地图点,这使得地图不包含潜在动态物,避免了潜在动态物的运动给地图留下错误的残影。

2.3 潜在动态物检测

在实际应用中,场景的潜在动态物通常是人、动物、汽车等含有明显语义的物体,因此可以使用目标检测、语义分割之类的语义方法检测。MA-SLAM采用了OpenCV[17]实现的单阶段的目标检测模型Yolov3[18],使用MSCOCO数据集[19]对该模型进行训练。MSCOCO数据集总共包含80类,本文将其中与人、交通工具、动物相关的类别归类为潜在动态物。

许多动态SLAM方法采用语义分割模型实现潜在动态物的检测,由于语义分割模型能准确地获得动态物的边界,对特征点进行过滤时误过滤的情况非常少。但语义分割模型通常计算量很大,导致系统的实时性较低。相比于语义分割,目标检测模型计算量要小很多,但只能获得物体的包围框,过滤时会把落在包围框内但不落在物体内的特征点一并过滤掉,误过滤的情况较多,导致最终提取到的特征点数量较少。为此,MA-SLAM摒弃了过滤特征的方式,采用运动避免的特征提取方法,保证了特征数量的充足和稳定。

2.4 实时动态物的检测

语义方法只能检测潜在的动态物,无法区分该动态物处于运动还是静止状态。在停车场这类缺乏纹理的场景中,停泊的车辆其实是很好的临时参照物。MA-SLAM使用了DS-SLAM中提出的运动一致性验证方法[15],该方法能检测出图像上的运动点。通过统计落在车辆上的动点的数目,可以估计车辆处于运动状态的可能性。

2.5 图像动静态区域划分

MA-SLAM使用简单有效的阈值法将图像划分为静态、临时静态和动态区域。首先,图像的背景区域被划分为静态区域;动点数量低于预设阈值的潜在动态物则被划分为临时静态区域;而动点数量高于阈值的潜在动态物,则很可能处于运动状态,因此被划分为动态区域。图2展示了这一过程的运行示例,绿色区域、黄色区域和红色区域分别表示静态区域、临时静态区域和动态区域。

图2 运动避免特征提取方法运行示例Fig.2 Exampleof runningthemotion avoidancefeatureextraction method

2.6 数量充足的特征提取

对于基于特征的视觉SLAM方法来说,特征的数量是非常重要的。通常来说,特征的数量越多,则系统定位越为准确,但相应地计算量会变大,降低系统的运行速度。因此,通常会按照工程经验选取一个固定的特征提取数量,如ORB-SLAM2将室内和室外场景的提取数量分别设置为1 000和2 000。

现有的动态SLAM方法使用过滤动态特征的方式,在场景包含较多的动态物时会导致提取的特征大幅减少,导致定位精度下降,甚至丢失定位。图3所示为ORB-SLAM2、基于过滤的动态SLAM方法和本文方法MA-SLAM的特征提取流程,其中,变量e和r分别代表预期提取的特征数量和当前剩余的特征数量。从图3可知,传统SLAM方法ORB-SLAM2对特征不加以区分,因此会受动态物的干扰导致定位出错。而基于过滤的SLAM方法则因为对特征进行了剔除操作,导致最后提取的特征数量较少。MA-SLAM避免了特征的过滤,采用运动避免的启发式提取方法,当场景静态特征较多时,能提取到足够的特征。而当场景静态特征不足时,能提取临时特征使用,如图4所示,由于坐着的人运动幅度很小,原先被标记为动态的特征经运动一致性验证后,转为临时静态特征,可用于优化定位。

图3 不同SLAM方法的特征提取流程对比Fig.3 Comparison of featureextraction process of different SLAMmethods

图4 使用临时特征示例Fig.4 Example of usingtemporary features

3 实验结果与分析

3.1 实验环境与数据

本文使用TUM RGB-D数据集进行实验,该数据集由慕尼黑工业大学制作,它包含从Microsoft Kinect相机以30 Hz、640×480分辨率记录的RGB图像和深度图像序列,以及使用专业的运动捕捉系统记录的真实运动轨迹。

本文使用TUMRGB-D数据集的fr3 sitting和fr3 walking序列进行实验,评估了MA-SLAM在低动态场景和高动态场景下的表现,将其与传统方法ORB-SLAM2和前沿动态SLAM方法DS-SLAM进行了对比,并且对系统的运行时间进行了评估。在sitting序列中,场景中的人坐在椅子上,运动幅度很小。而在walking序列中,场景中的人四处走动,运动幅度很大。在严重的情况下,相机看到的一半视野都被人所占据。

本文使用的数据集序列包含4种相机运动:(1)xyz:相机分别沿着x-y-z轴运动;(2)static:相机保持静止;(3)rpy:相机分别在滚转、俯仰和偏航轴上旋转;(4)half:相机沿着直径为1 m的半球体运动。

本文实验在一台搭载了Intel i7处理器、32 GB运行内存和GTX 1080Ti显卡的计算机上进行,使用Ubuntu 18.04 LTS操作系统。

3.2 评估度量

本文使用由Sturm等[9]提出的绝对轨迹误差(Absolute Trajectory Error,ATE)进行定量评估,该度量标准用于评估轨迹的全局一致性。由于动态物的存在使得系统的不确定性增加了,对每个序列运行10次ORB-SLAM2和MA-SLAM方法,并给出各自10次实验的误差的均值。

3.3 使用TUM RGB-D数据集进行评估

表1所示为本文提出的MA-SLAM方法的几种变体之间的比较。第一列表示使用的数据集序列。这几种变体方法都基于ORB-SLAM2,区别在于它们使用不同的特征提取过程。首先,MA-SLAM(OD*)在全图上提取特征,然后使用目标检测过滤落在动态物上的特征;MA-SLAM(OD)则是使用目标检测对图像进行动静态区域划分,然后在静态区域上提取特征;MA-SLAM(OD+MCC)使用目标检测和运动一致性验证将图像分为静态、临时静态和动态区域,在静态区域和临时静态区域上提取特征。

表1 MA-SLAM几种变体的ATE比较Table1 Comparison on ATEfor several variantsof MA-SLAM m

由表1可知,基于过滤的MA-SLAM(OD*)在大多数静态序列下误差最低,但这并非是因为其表现最佳,而是因为其存在初始化失败和丢失定位的情况,导致总体参与评估的轨迹较短,因此总体误差反而变小了。特别地,在序列sitting_half上,由于行人占据了场景的大部分面积,MA-SLAM(OD*)过滤了过多的特征点,导致系统始终无法初始化。在sitting序列集上,MA-SLAM(OD+MCC)的表现总是优于MA-SLAM(OD),这是因为其能在场景缺乏纹理时有效利用临时静止的动态物。

图5~6分别展示了这几种方法在walking_xyz和sitting_xyz序列下的特征分布。

图5 MA-SLAM变体在walking_xyz序列下的特征分布Fig.5 Feature distribution of several variants of MA-SLAM on walking_xyzsequence

图6 MA-SLAM变体在sitting_xyz序列下的特征分布Fig.6 Feature distribution of several variants of MA-SLAM on sitting_xyzsequence

由图5~6可知,较之其他变体方法,MA-SLAM(OD+MCC)提取的特征数量更多、更稳定。在两个序列的开头,因为特征过少,MA-SLAM(OD*)出现了初始化失败的情况。

另外,在sitting_xyz序列接近第700帧的部分,MA-SLAM(OD*)和MA-SLAM(OD)方法提取的特征数量锐减。这是因为随着相机的运动,相机观察到的场景的大部分被坐着的两个人所占据,如图4所示,导致静态区太小,提取不到足够的静态特征。而MA-SLAM(OD+MCC)由于能把此时坐着不动的人当成是临时静止的参照物,因此获得了额外的特征,保持了特征数量的稳定和充足。

在测试的所有序列上,MA-SLAM(OD+MCC)都能在第一帧就成功初始化系统,并且在场景大幅度被动态物占据时,仍能获得较准确的定位。

表2所示为MA-SLAM与ORB-SLAM2、DS-SLAM三种方法的ATE比较。其中,DS-SLAM的测量值取自文献[15],部分序列没有公开测量值,因此留空;ORB-SLAM2的测量值是在本文实验环境下测得的。由表2可知,在所有动态序列上,MA-SLAM都优于ORB-SLAM2,取得了大于95%的提升;而在静态序列上,MA-SLAM的表现与ORB-SLAM2相近,优于DS-SLAM。特别地,在walking_rpy序列下,相机做旋转运动,场景变化较大且动态物多,基于过滤的DS-SLAM方法提取不到足够的特征,因此无法鲁棒地进行定位,误差在分米级。而DS-SLAM由于使用了运动避免的特征提取方法,特征数量充足、稳定,误差仅为厘米级。

表2 MA-SLAM和其他方法的ATE比较Table2 Comparison on ATEfor MA-SLAMand other methods m

图7所示为walking_xyz序列下ORB-SLAM2和MA-SLAM的轨迹误差,可见,MA-SLAM能显著减小定位误差,所估计的轨迹与真实轨迹十分接近。

图7 walking_xyz序列下的ATE图Fig.7 ATEgraph on walking_xyzsequence

3.4 运行时间分析

表3所示为MA-SLAM各个模块的运行时间。由于使用了多线程和GPU,模型可以并行执行,追踪一帧平均需要50 ms,即系统帧率约为20 Hz,满足SLAM系统的实时性要求。相比于基于语义分割的DS-SLAM的59.4 ms[15],MA-SLAM的实时性更优。

表3 MA-SLAM运行时间分析Table.3 Runtime Analysisof MA-SLAM

4 结束语

本文提出了一种基于ORB-SLAM2的实时、鲁棒的动态SLAM系统MA-SLAM。该系统基于目标检测和运动一致性检查,实现了一种将场景划分为静态、临时静态和动态区域后进行特征提取的方法,相比于主流基于过滤的动态SLAM方法,能获得数量更充足、更稳定的特征。在TUM RGB-D数据集上的实验结果表明,MA-SLAM高效解决了动态物造成的感知问题,在动态场景下,其定位精度和鲁棒性均优于ORB-SLAM2。相比于现有方法,实时性和鲁棒性更佳。

MA-SLAM还存在一些待完善的工作。例如,有监督目标检测模型的使用限制了潜在动态物的类型。另外,MA-SLAM构建的地图是几何地图,不包含语义信息。在未来,将考虑使用无监督的目标检测模型来提高MA-SLAM的泛用性,并在地图中加入物体的信息,以提供对物体抓取等智能任务的支持。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!