本发明属于定位与地图构建,本发明涉及一种动态环境下的slam方法和系统。
背景技术:
1、slam(simultaneous localization and mapping,同时定位与地图构建技术)是机器人领域的热门问题,也是实现机器人在复杂场景自主运动的关键技术,在移动机器人、自动驾驶、无人机和增强现实与虚拟现实等领域有广泛的应用。
2、相关技术中,在当前大多数slam系统中,无论是使用何种方法,都假设环境是静态的,这意味着当相机处于运动状态时,场景中所有对象的几何分布都应该保持静止状态。场景中的动态对象,如行走的人和行驶中的汽车,都会破坏特征关联和状态估计,降低定位精度和系统鲁棒性,甚至导致系统故障。
技术实现思路
1、本发明的目的在于提供一种动态环境下的slam方法。
2、本发明的另一个目的是提供一种动态环境下的slam系统。
3、实现本发明目的的技术解决方案为:
4、一种动态环境下的slam方法,包括以下步骤:获取动态环境的目标数据,其中,所述目标数据包括图像序列或视频流;采用c++版本的opencv-dnn模块部署yolov5-seg网络模型,以获取相应的目标检测模型;采用所述目标检测模型对所述目标数据进行目标检测和分割,以获取所述目标数据中的动态物体和可移动物体的mask掩膜以及相应的坐标信息;对所述目标数据中的每一帧图像进行orb特征点的提取;根据提取出的所述orb特征点和所述坐标信息将坐标在所述动态物体和所述可移动物体上的动态orb特征点剔除,并保留相应的静态orb特征点;采用orb-slam3系统根据所述静态orb特征点进行特征点匹配,以及计算相机位姿并建图,以完成slam工作。
5、在本发明的一个实施例中,所述采用c++版本的opencv-dnn模块部署yolov5-seg网络模型,以获取相应的目标检测模型,包括:将.pt格式的模型文件导出成.onnx格式的模型文件;将python语言的yolov5-seg代码改写成c++语言;采用所述c++版本的opencv-dnn模块根据所述.onnx格式的模型文件以及改写为c++语言的yolov5-seg代码部署所述yolov5-seg网络模型,以获取所述目标检测模型。
6、在本发明的一个实施例中,根据提取出的所述orb特征点和所述坐标信息将坐标在所述动态物体和所述可移动物体上的动态orb特征点剔除,包括:针对所述动态物体,读取所述动态物体的边界框的坐标,并在将所述边界框中将所述动态物体上的动态orb特征点对应的像素值设为1,以及所述动态物体外的静态orb特征点对应的像素值设为0;根据所述边界框的坐标建立第一坐标系,并获取所述边界框内的所有orb特征点在所述第一坐标系中的坐标;在所述第一坐标系中将像素值为1的坐标重置为(-1,-1);将坐标(-1,-1)对应的orb特征点剔除。
7、在本发明的一个实施例中,根据提取出的所述orb特征点和所述坐标信息将坐标在所述动态物体和所述可移动物体上的动态orb特征点剔除,还包括:针对所述可移动物体,计算所述可移动物体上的所述orb特征点的第一平均深度;计算所述动态物体上的所述orb特征点的第二平均深度;判断所述第一平均深度和所述第二平均深度的差值的绝对值是否小于第一预设值;如果是,则判断所述可移动物体的边界框与所述动态物体的边界框是否相交;如果相交,则判定所述可移动物体上的所述orb特征点为所述动态orb特征点,并将所述动态orb特征点剔除。
8、一种动态环境下的slam系统,包括:第一获取模块,所述第一获取模块用于获取动态环境的目标数据,其中,所述目标数据包括图像序列或视频流;部署模块,所述部署模块用于采用c++版本的opencv-dnn模块部署yolov5-seg网络模型,以获取相应的目标检测模型;第二获取模块,所述第二获取模块用于采用所述目标检测模型对所述目标数据进行目标检测和分割,以获取所述目标数据中的动态物体和可移动物体的mask掩膜以及相应的坐标信息;提取模块,所述提取模块用于对所述目标数据中的每一帧图像进行orb特征点的提取;剔除模块,所述剔除模块用于根据提取出的所述orb特征点和所述坐标信息将坐标在所述动态物体和所述可移动物体上的动态orb特征点剔除,并保留相应的静态orb特征点;建图模块,所述建图模块用于采用orb-slam3系统根据所述静态orb特征点进行特征点匹配,以及计算相机位姿并建图,以完成slam工作。
9、一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的动态环境下的slam方法。
10、一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的动态环境下的slam方法。
11、本发明与现有技术相比,其显著优点为:
12、本发明能够实时高效地剔除动态orb特征点,以提高定位精度和系统鲁棒性,从而避免系统发生故障。
1.一种动态环境下的slam方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的动态环境下的slam方法,其特征在于,所述采用c++版本的opencv-dnn模块部署yolov5-seg网络模型,以获取相应的目标检测模型,包括:
3.根据权利要求1所述的动态环境下的slam方法,其特征在于,根据提取出的所述orb特征点和所述坐标信息将坐标在所述动态物体和所述可移动物体上的动态orb特征点剔除,包括:
4.根据权利要求3所述的动态环境下的slam方法,其特征在于,根据提取出的所述orb特征点和所述坐标信息将坐标在所述动态物体和所述可移动物体上的动态orb特征点剔除,还包括:
5.一种动态环境下的slam系统,其特征在于,包括:
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现根据权利要求1-4中任一项所述的动态环境下的slam方法。
7.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现根据权利要求1-4中任一项所述的动态环境下的slam方法。