1. 引言
近年来,随着人工智能和机器人技术的飞速发展,移动机器人的自主导航与定位问题已成为研究热点。目前,SLAM (Simultaneous Localization and Mapping,即同时定位与地图构建)技术是移动机器人领域的核心支柱 [1] [2] 。作为一种前沿的感知与导航方法,SLAM在缺乏先验信息的复杂环境中发挥着至关重要的作用。其中视觉SLAM技术利用视觉传感器获取图像信息,实现对环境的高精度感知和地图构建。在静态环境中,视觉SLAM技术利用环境中的固定特征进行定位和建图,展现出良好的稳定性和可靠性。
在现实场景中,尤其是工作环境,动态元素往往占据主导地位,它的存在使特征点匹配过程易产生错误数据关联,从而影响定位精度与地图构建效果。2023年,Jin等人 [3] 基于ORB-SLAM3框架添加语义分割、动态特征剔除和点云稠密地图三个主要过程,在语义分割线程采用SparseInst分割网络实现对动态对象的检测,但该语义分割网络计算较复杂,影响系统实时性。因此,视觉SLAM技术面临着巨大的挑战 [4] [5] 。针对以上问题,本文基于ORB-SLAM3 [6] 系统引入YOLOv5深度学习方法完成对动态对象的检测与剔除。该系统不仅能排除动态对象的干扰,还利用语义信息重建静态背景,从而提高建图定位精度。本文主要贡献总结如下:
1) 针对动态对象缺乏语义信息问题,本文引入YOLOv5目标检测算法,实时生成场景中动态对象的基本语义信息;
2) 针对特征点剔除问题,本文设计一种特征点剔除策略,该策略不仅降低动态对象的影响,还提高定位建图精度;
3) 结合语义信息,对剔除动态点后的静态点构建稠密三维地图,并在TUM [7] (慕尼黑工业大学)的RGB-D数据集与真实动态场景中评估本文算法。实验结果表明:本文算法优于ORB-SLAM3等视觉SLAM算法。
2. 算法原理
2.1. 系统概述
ORB-SLAM3是一种先进的视觉同时定位与地图构建系统,主要由三大线程组成:跟踪线程、局部建图线程和闭环检测线程。跟踪线程的主要任务是负责提取和匹配ORB特征点,通过最小化重投影误差来估算相邻帧之间的相对位姿。局部建图线程则负责管理和优化关键帧,通过集束调整(BA)技术来改进局部地图中所有帧的位姿精度。闭环检测线程则负责在整个地图中识别并检测闭合的回环,通过位姿图优化来不断纠正累积的漂移误差,从而提高整个地图的精度和稳定性。该系统在静态场景中具有较高鲁棒性,但在动态场景中,由于动态物体的存在会导致特征点间产生错误的匹配关系,从而影响定位建图精度。因此,本文在原有ORB-SLAM3系统的基础上,添加了基于YOLOv5的目标检测线程和动态特征点剔除模块,改进的系统框图如图1所示。
2.2. YOLOv5检测动态目标
随着深度学习的发展,很多学者开始将深度学习方法 [8] [9] 引入到视觉SLAM中,以减少动态目标的影响,提高其定位建图精度。常见的深度学习方法分为两类,目标检测和语义分割。目标检测的网络相对简单,但不能清晰表达物体的轮廓信息;而语义分割网络虽能清晰表达物体的轮廓信息,但网络相对复杂,具有更高的计算量。传统视觉语义SLAM系统在兼顾语义分割网络的精度和实时性方面面临巨大挑战。尽管Mask-RCNN作为一种常用的两阶段实例分割方法具备较高分割精度,但其对图像的处理时间较长,难以满足实时性要求。为提高视觉SLAM系统的精度和运行效率,本文采用轻量级检测算法——YOLOv5算法。相较于Mask-RCNN算法,YOLOv5分割算法具有更高运行效率,其设计更注重实时性。

Figure 2. YOLOv5 network structure diagram
图2. YOLOv5网络结构图

Figure 3. Deployment process (The dashed box is implemented in Python, while the outside of the dashed box is implemented in C++)
图3. 部署流程(虚线框内为Python,虚线框外为C++实现)
YOLOv5是当前较为先进的单阶段目标检测算法,在资源受限的系统中更具优势。其拥有x,l,m,s和n五个不同的网络模型,其中YOLOv5s在平衡精度和实时性方面具有更佳的性能。因此,选择YOLOv5s作为本文的目标检测网络是合理的选择,网络结构图如图2所示。但YOLOv5是基于Python实现的,而ORB-SLAM3是基于C++实现的,为将YOLOv5更好融入ORB-SLAM3中,本文设计了一个部署模块,如图3所示。其中,在Python部分获得可供C++加载的权重文件,并利用前向传播推导出网络模型,输出相关的检测框信息。具体的检测效果如图1目标检测线程所示。
2.3. 动态特征点剔除
在2.2节已获得相关的动态物体检测框信息,本节将对检测框内的特征点进行剔除。在跟踪线程添加一个特征点剔除模块,根据动态物体检测框的信息判断特征点的动静态属性,若特征点在检测框范围内,则将该特征点视为动态特征点,否则,将其视为静态特征点。对所有属性为动态的特征点,将其从特征点集里删除,并剔除其对应的地图点信息。具体的剔除效果如图1动态特征点剔除模块中所示。
3. 实验与分析
在本节中,将在公共TUM的RGB-D数据集和真实场景中演示本文算法,以评估其在动态场景的精度和鲁棒性,并将本文算法与原始ORB-SLAM3算法进行比较。本文的仿真实验是在一台台式机上进行的,其CPU型号为i5-9600KF,主频为3.70GHz,显卡为NVIDIAGTX 1650;实际场景测试是在型号为y700的联想笔记本电脑上进行,其CPU型号为i5-6300HQ,主频为2.30GHz,显卡为NVIDIAGTX 960M。为评估相机轨迹数据和真实估计数据之间差异,本文选用两个常用评估指标,即绝对轨迹误差(ATE)和相对位姿误差(RPE)。ATE用于描述估计位姿和真实位姿之间的绝对误差,能直观地反映算法精度和轨迹的全局一致性;RPE则用于描述相邻两帧之间估计位姿和真实位姿变化的差异,其中包括旋转误差和平移误差两个部分。
3.1. TUM数据集性能评估
本文算法是基于ORB-SLAM3算法改进而来,为凸显改进效果,将其与ORB-SLAM3算法进行详细对比。选取动态数据集的4个高动态序列进行评估,评估结果如表1~3所示。由表中数据可知,在所有情况下,本文算法的精度均比ORB-SLAM3算法的精度高,即具有更高的精度和鲁棒性。为更直观展示两种算法在精度上的差异,对表中的数据进行可视化,可视化效果如图4所示。蓝线表示ORB-SLAM3算法ATE值,绿线表示本文算法ATE值。在处理walking系列高动态数据集时,由于人的移动特征更加明显,原始ORB-SLAM3算法产生许多错误匹配的特征点对,从而导致计算出错误的相机位姿。相比之下,本文算法采用有效动态特征点剔除策略,仅保留可靠静态特征点,极大地减少特征点误匹配情况,从而显著提高算法鲁棒性。

Table 1. ATE-RMSE (m) evaluation of ORB-SLAM3 and the algorithm proposed in this paper
表1. ORB-SLAM3和本文算法的ATE-RMSE (m)评估

Table 2. RPE-RMSE (m/s) evaluation of ORB-SLAM3 and the algorithm proposed in this paper (RPE translation part)
表2. ORB-SLAM3和本文算法的RPE-RMSE (m/s)评估(RPE平移部分)

Table 3. RPE-RMSE (deg/s) evaluation of ORB-SLAM3 and the algorithm proposed in this paper (RPE rotation part)
表3. ORB-SLAM3和本文算法的RPE-RMSE (deg/s)评估(RPE旋转部分)

(a) fr3/walking_static

(b) fr3/walking_xyz
(c) fr3/walking_half
(d) fr3/walking_rpy
Figure 4. ATE distribution of ORB-SLAM3 (blue) and the algorithm proposed in this paper (green)
图4. ORB-SLAM3 (蓝色)和本文算法(绿色)的ATE分布
3.2. 稠密建图
稠密地图相对于稀疏地图,具有更高的精度和细节表现力,能更好地描述环境结构、表面属性和几何形态。本文通过结合原始RGB图、深度图以及关键帧等信息完成静态三维稠密地图的构建。对ORB-SLAM3算法和本文算法在TUM数据集进行测试,测试结果如图5所示。图中左侧图像为采用ORB-SLAM3没有剔除动态对象的结果,其中包含大量动态对象重影,而右侧图像为本文算法建图结果,不包含明显动态对象。
3.3. 真实场景
为充分验证本文算法在真实场景鲁棒性,本文搭建如图6所示的实验平台。移动平台为Agilex Robotics-BUNKER,升降平台上放置Lenovo y700笔记本电脑和Intel RealSense D455深度相机。实验场景为室内办公区,其中人作为主要移动对象,移动机器人将按照环形路线行驶。如图7所示,选取两个视角对比ORB-SLAM3算法和本文算法,可以看出ORB-SLAM3算法未能剔除动态物体特征点,而本文算法具有良好的特征点剔除效果,且不会误剔除背景静态特征点。图8对二者进行轨迹对比,可以看出本文算法轨迹效果更佳,而ORB-SLAM3算法因未剔除动态特征点造成匹配点之间的错误数据关联,以致轨迹漂移严重。由于本文使用的升降平台结构不稳定,导致移动机器人在行驶过程中相机发生晃动,轨迹局部也产生抖动。
(a) ORB-SLAM3 (b) 本文算法
Figure 5. Dense mapping
图5. 稠密建图
(a) ORB-SLAM3 (b) 本文算法
Figure 7. Actual dynamic scene effect diagram
图7. 实际动态场景效果图

Figure 8. Comparison of indoor dynamic scene circular trajectories
图8. 室内动态场景环形轨迹对比
4. 结论
本文基于ORB-SLAM3系统提出一个鲁棒的动态视觉SLAM系统。为避免场景中动态对象产生的错误数据关联问题,我们设计了一个基于YOLOv5的目标检测线程和一个动态特征点剔除模块。思路是将动态物体利用YOLOv5深度学习网络检测,并将检测框信息输入到跟踪线程中,根据特征点和检测框的位置关系对特征点的属性进行判断,从而将动态特征点从系统中删除。然后,将剔除动态特征点的关键帧结合PCL库构建静态稠密三维地图,并在具有挑战性的TUM RGB-D数据集以及真实场景中对本文算法进行了评估。对于TUM数据集,相比于ORB-SLAM3算法,本文算法具有更低的绝对轨迹误差和相对位姿误差;对于真实场景,本文算法对动态特征点进行有效剔除,并具有更高的定位精度和鲁棒性。实验结果表明:与ORB-SLAM3算法相比,本文算法在动态场景中效果更佳,具有更高的精度和鲁棒性。
基金项目
中央引导地方科技发展专项资金项目(桂科ZY19183003);广西重点研发计划项目(桂科AB20058001)。
NOTES
*通讯作者。