目录
摘要:
传统的视觉同步定位和映射算法通常假设机器人所处的环境是静态的。当背景中出现动态目标时,运动目标会影响算法的定位精度和鲁棒性。
针对这一问题,提出了一种有效的适应动态场景的VSLAM算法。首先,利用YOLOv5s目标检测算法提取相机捕获的图像的语义信息,并根据语义信息将图像场景划分为静态区域和潜在动态区域。然后,本文算法在计算初始位姿时仅使用静态环境中的特征点,然后结合极极约束和加权动态概率来消除环境中的动态点。最后,通过计算环境中所有静态点来优化初始姿态。
在TUM RGB数据集上的实验表明,该算法在弹道精度上明显优于ORB-SLAM2系统,提高了SLAM系统在动态环境下的鲁棒性
关键词:同时定位与制图;动态环境;语义信息;动态概率
一、引言
视觉SLAM和激光SLAM是机器人在未知环境中运动的两种主要方法,可以提高机器人在未知环境中的适应性。
VSLAM主要以图像作为系统的输入,计算摄像机的姿态,通过多视图几何重构三维地图,实现对未知场景的定位,生成一致的地图。经过几十年的发展,已经出现了许多令人印象深刻的SLAM系统,例如ORB - SLAM2和ORB - SLAM3个特征点用于特征匹配;LSD-SLAM4]采用半直接方法进行高精度位姿估计;基于稀疏直接法的DSO是为数不多的使用纯直接方法进行姿态估计。然而,大多数开源算法都假设相机所在的环境是静态的;也就是说,背景中只有相机是唯一的运动物体,这与实际场景不同。近年来,研究人员对视觉SLAM在动态环境下的鲁棒性进行了研究。利用激光雷达或IMU(惯性测量单元)结合摄像头优化动态环境下的定位精度,多传感器融合可以有效地使机器人适应动态环境,但同时也增加了成本。另一种有效的方法是在特征匹配之前使用RANSAC算法提取异常特征点。但是,当场景中有很多动态对象时,该算法就不能很好地发挥作用,甚至数值结果也比较不稳定。
为了减少动态目标的影响,Yu提出了一种基于动态环境的健壮VSLAM系统(DS-SLAM),该系统以语义分割网络和运动一致性检测为约束,结合光流金字塔进行特征匹配。检测环境中物体的运动。
作者Bescos利用ORB-SLAM2的主要框架,提出了一种绘画中适应动态环境和背景的算法,结合深度学习和几何约束,通过物体遮挡修复剔除环境中的动态物体,提高动态环境中的定位,生成静态地图。然而,语义分割算法非常耗时,对于实时性要求高的SLAM系统来说,它并不是一种最优方法。集成语义信息的SLAM算法在检测到运动目标后,会直接去除物体上的特征点。如果物体本身不运动,比如停在路边的汽车,就会浪费大量有价值的特征点,从而使定位精度下降。作者Jiad16]提出了一种动态环境运动估计模型(Dyn-ORB-SLAM),该模型使用YOLOv4来检测动态物体的运动。该算法提取摄像机采集图像的语义信息并结合物体的运动,不直接消除潜在运动区域的特征点,提高了定位精度。然而,在判断动态目标特征点的运动状态时,算法保留了距离值前20%的特征点,这可能会导致特征点的过少或过少剔除。例如,当一个人坐在椅子上不动时,这个人身上20%以上的特征点可以被利用。当一个人跑步时,很少有可利用的点。
主要内容如下:
1)选择更轻量级的YOLOv5s目标检测网络作为独立线程,结合ORB-SLAM2框架,实现可实时运行的动态SLAM系统。
2)提出了一种基于语义信息和加权动态概率的算法,消除动态目标上的异常特征点,提高定位精度和系统鲁棒性。
3)在公开的TUM数据集上,将本文算法与ORB SLAM2和一些开源算法进行比较,评估算法的有效性。
本文的章节结构如下。第二节详细介绍了系统框架。第三节针对最先进的视觉slam对该提案进行了评估,第四节给出了结论。
二、系统实现
A、系统概述
系统实现将相机拍摄的RGB图像同时传递给ORB-SLAM2的主线程和语义目标检测模块。语义对象检测模块将图像中的场景分为两类:潜在动态区域和静态区域(潜在动态区域:包含动态对象先验框内的标准像素;静态区域:除潜在动态区域外的所有像素)。将语义信息发送到跟踪线程,将对象类别信息与特征点关联起来。静态区域的特征点估计初始姿态。利用静态区域计算出的初始位姿,确定潜在动态区域中特征点的动态概率,并记录该概率并传输到下一帧,约束下一帧中对应特征点的动态概率。在当前框架下,结合特征a的动态概率。系统概述作为最完整、最稳定的开源视觉SLAM算法之一,ORB-SLAM2系统得到了研究人员的广泛认可。在该算法框架的基础上,增加了语义目标检测和运动一致性检测模块,消除了动态特征点,增强了系统在动态环境中的鲁棒性。图1为本文的体系结构剔除前一帧的点,剔除动态度较高的特征点,优化最终位姿。关键帧选择、局部映射和闭环检测模块与ORB - SLAM2相似。
B、语义对象检测
本文采用YOLOv5s作为语义线程的目标检测算法,具有最小的模型宽度和深度。当摄像机获得新的图像时,使用YOLOv5s进行目标检测。根据输出结果,环境可分为潜在的动态区域和静态区域。潜在的动态区域包括可移动对象类别区域,如人、汽车和动物。静态区域是运动概率小的类别区域,如桌椅等。在算法中,如果直接剔除潜在动态区域的特征,不利于获得准确的位姿估计;当潜在动态区域边界面积较大时,系统的跟踪将会失败。因此,不能简单地认为潜在动力区是动力区;也就是说,将YOLOv5s获得的语义信息与后续的动态特征剔除相结合,进一步优化姿态。
C、初始姿态估计
目标检测算法获得的语义信息可以将图像划分为潜在的动态区域和静态区域,另一个判断是需要防止特殊情况,如可能有静止的人。根据YOLOv5s获得的语义类别和边界框位置,将提取的特征点分为两类。第一类表示静态点,第二类
在检测分类时,算法进一步对动态类别边界的特征点进行判断,判断是否存在小于动态类别边界所含像素区域的静态区域,并将其内部特征点加入到
中,可以避免动态对象框占用较大面积导致环境中静态点较少,使系统初始位姿估计失败。
对图像进行初始姿态估计时,静态特征点与深度图相结合;将静态特征点投影为三维地图点
;
(1)
上式中,fx,fy,cx,cy,其中cy为摄像机内部参数,摄像机标定可得到其值;Pz为深度值,可从对应帧的深度图中获得;u, v是像素坐标。
根据静态点Sicur{i = 1,2,3,…, n}时,通过最小化重投影误差计算两帧之间的变换矩阵槽。流程图如图2所示。
D、动态点剔除
初始位姿估计过程仅使用静态区域特征点进行计算,未计算潜在动态区域特征点的动态概率。在上述过程中,我们可以在静态区域和区域中获得一些可靠的匹配点根据这些匹配点计算两帧之间的基本矩阵。本文采用极线约束来检测潜在动态区域中特征点的动态概率。
假设参考坐标系上有一个特征点 该特征点对应当前坐标系中匹配良好的特征点
和空间点P,它们满足的表达式为:
(2)
式中,K 表示相机的内参,R 和 t 分别表示两个坐标系之间的旋转矩阵和平移向量, 和
表示深度信息。
(3)
通常,由于误差,特征点不在极线上。相机失真等。以
点为实际位置,计算
点到极线的距离:
(4)
X,Y是极线的向量:
(5)
如果相机或场景中的动态物体移动太快,就会导致相机捕捉到的图像出现运动模糊。当这样的图像输入系统时,语义目标检测模块可能无法检测到运动目标类别或检测错误。
这将导致原本属于潜在动态区域的特征点,需要再次猜测,以确定它们是动态点还是静态点。系统认为这些特征点是静态的。这些错误假设的特征点将干扰系统的初始姿态估计,从而影响系统的整体鲁棒性。为了解决这一问题,本文算法在计算动态概率特征点时,结合前一帧的动态速率来计算姿态。
(6)
式中为当前帧中第i个特征点到极线的距离,
为该距离中的最大值;
为当前帧中第i个特征点的动态概率,Pli为前一帧中对应匹配点的动态概率;
是系数因子。
当计算得到动态概率处理的设定阈值时,将特征点视为动态点;否则,当计算出的距离小于设定的阈值时,认为该特征点为静态特征点;
如图4所示,第一列表示直接去除动态类别上特征点的方法,第二列表示这篇文章中的方法。绿色的点代表静态特征点,这些点是我们可以直接使用的。红色点代表动态特征点,不可靠。黄色特征点表示该特征点的语义信息属于动态类别,但经过本文算法后被识别为静态类别。绿色点和黄色点组成最终的静态点集。
三、实验
利用TUM的RGB-D数据集对本文算法进行了验证,本文主要测试了4个高动态序列。为方便记录,本文采用w_x, w.h。wJ和w_5分别表示数据序列。实验在一台配备NVIDIA 1650 GPU和4G显存的PC上进行。操作系统为Ubuntu 18.04, YOLOv5s网络使用Python编写,SLAM部分使用c++编写。
A.误差度量的评估
本文采用EVO评价工具对动态数据集中的四组进行评价。ORB-SLAM2、DS-SLAM、Dyn-ORB-SLAM以及所提出的算法采用绝对航迹误差(ATE)和相对位姿误差(RPE)进行定量估计。DS-SLAM引用了本文获得的数据结果,其余数据均在同一台Pc上运行获得。从数据比较标准差和均方根误差来看,表1为本算法与其他算法的绝对轨迹误差,表2为相对平移误差,表3为相对旋转误差。
改进列用于比较ORB-SLAM2各指标的结果,其计算公式为:
(7)
其中,orb为ORB-SLAM2的运行结果,me为本文算法的运行结果。
从下表可以看出,本文增加的语义线程在跟踪过程中去除了动态特征,高动态场景下的绝对轨迹误差明显优于ORB-SLAM2。EMSE优化最高可达94%以上,最低可达45%以上,STD优化最高误差为93%,最低优化误差为37%。在定位精度方面,与一些开源算法相比,该算法对几乎所有动态数据集序列的定位结果都优于Dyn-ORB-SLAM;对于序列w_x和w_h,结果比DS-SLAM略差,但在NVIDIA 1650 GPU上,YOLOv5s处理每张图像需要16ms。与DS-SLAM语言中使用的SegNet语义分割网络相比,本文的实时性更高.
图5为该算法与orb-slam2算法在不同动态场景下的运行轨迹。道路上的红线表示实际轨迹与算法运行结果的差异。从图中我们可以得出一个更直观的结论。在orb-slam2算法的基础上对算法进行改进,增强了动态场景下的定位鲁棒性。
图6显示了本文算法与ORB-SLAM2及一些开源算法在高动态环境下的相对平移误差和相对旋转误差。从柱状图可以看出,本文算法显著优于ORB-SLAM2。与其他动态SLAM算法相比,本文算法也具有一定优势。
四、结论
针对传统SLAM算法在动态环境中难以定位和映射的问题,提出了一种结合语义信息和几何约束的动态SLAM算法。利用静态区域的特征点计算初始位姿,然后确定潜在动态区域的特征点,在计算动态概率时引入前一帧特征点的动态概率。最后,利用TUM数据集计算系统的定位精度,对算法进行验证。结果表明,该算法在动态环境下的定位精度和鲁棒性均有显著提高。