张健 郑斯雅
广东石油化工学院
在基于ROS平台下,动态室内环境下物体跟踪识别和SlAM建图是的一个比较重要的部分,可以应用在自动驾驶、军事等各个领域。本课题结合时下应用较广的ROS移动机器人开源平台,利用OpenCV库对图像集进行处理,使用图像的斑点特征进行灰度值对比,实现对运动物体跟踪优化识别的功能,并且使用ORB-SLAM算法进行特征点匹配。通过在虚拟环境中测试,系统可以满足大部分特殊情况下移动机器人在动态环境下的移动,提高精确度。
关键词:ROS;OpenCV;物体跟踪识别,SLAM建图,SlimYOLOv3算法,ORB-SLAM优化算法;
第一章 绪论
1.1 引言
自从机器人这个词问世以来,包括创客工作者开发的Arduino机器人,不能完全代替人类进行工作,在不久的将来,机器人将慢慢走进家庭与工作,代替人类进行复杂与繁重的工作。
从去年开始,“AIoT”一词便频频出现在我们的视野中。“AIoT”即“AI+IoT”,是指人工智能技术与物联网在实际应用中的落地融合。伴随着AI的兴起,越来越多的巨头将AI与IoT结合开发新的平台和产品,简单来说更多的机器人将进入你的生活。
智能机器人的重要作用在于它拥有机器的自主性,延展性,以及动态环境适应性,在一定的动态演变的环境中,不会去依赖人工,根据机器人内部的环境感知,从而发出指令,控制机器人的移动,从而完成各种工作,延展性是指它可以进行二次开发以及适应物联网平台开发,与各种设备完美衔接,机器人之间也可以通信。适应性是在经过随机变换的环境中,可以通过视觉感知避免碰撞以及自主调节速度和参数以及算法控制策略。
1.2 基于STM32的底盘设计
对于做纯SLAM算法、机器人导航避障、或者别的需要用到移动底盘的应用,根据底盘的通信协议,直接使用底盘ROS驱动实现跟底盘的交互。首先,程序订阅/cmd_vel作为用户的控制输入,将控制输入的速度信息转换为通信协议中DATA-uart2规定的格式,然后通过串口下发给底盘,实现对底盘的运动控制。图1.2是数据通信定义格式。
图1.2 数据通信定义格式
第二章 研究平台与仿真
2.1 引言
本课题是基于自主设计的智能机器人平台AiRobot,该平台采四轮麦克娜姆轮驱动,以差速方式驱动达到各个方向的灵活移动,控制方便,该平台是是课题的基础,研究中涉及到研究成果在该平台上得到验证。
2.2 机器人上位机平台设计
AiRobot在设计的同时,各个子系统均采用单独的模块式设计,利用平台开源的算法,可以完成特定的导航,图2.1为其上位机部分结构如下:
图2.1 上位机部分结构
第三章 物体追踪与识别
3.1 引言
机器人平台可基于Ubuntu18.04.x以上,搭载ROS系统(kinetic以上兼容),本课题使用的ROS应用程序开发环境如下:
硬件:树莓派Ubuntu Mate。
操作系统:Ubuntu 18.04.x或Linux Mint 18.x。
ROS:Melodic
3.2 OpenCV函数库以及控制
基于OPenCv的人脸识别与视觉追踪,它是图像处理开发的利器,ROS中集成的cv_bridge功能包为两者提供了接口,赋予ROS强大的图像处理能力,它同时提供了C++和python,Ruby,MATLAB等语言接口,实现了图像处理和计算机视觉方面的很多通用算法,同时OpenCV可以直接通过硬件访问RGB摄像头,可以轻松实现人脸识别,物体跟踪等多种功能。图3.1是数据交互的流程。
图3.1 数据交互
ROS开发者提供了与OpenCV的接口功能包,开发者可以通过该功能包将ROS中的图像数据转换成OpenCV数据格式的图像,并且调用OpenCV库进行图像处理,或者将OpenCV处理过的数据转换为ROS图像,通过话题发布,实现各节点的图像传输。例如在本实验中,采用Canny边缘检测。
第四章 动态环境优化ORM-SLAM算法
4.1 引言
AiRobot搭载了工业级激光雷达,但是在模拟仿真环境中,也就是静态环境中,SLAM能达到良好的帧率,但是落地机器人移动时,通过测试改变周围环境,在复杂的环境下,建图算法达不到要求,导致机器人原地进行数据分析,如何完成对变化的环境的建图是本课题的核心,在本章节中,根据仿真数据和动态事物的特点,比较明确的核心问题是还是在于data association,大多数是剔除在观测帧移动的的物体的算法,但是缺陷就是遇到极端的情况,比如机器人在车后面行驶,算法就会剔除掉墙面造成数据不精确。本课题是基于深度学习与SLAM算法的融合。
4.2 基于SlimYOLOv3?的动态目标检测
4.2.1 SlimYOLOv3算法
SlimYOLOv3是YOLOv3的修改版本,对YOLOv3的卷积层通道剪枝(以通道级稀疏化),大幅削减了模型的计算量(~90.8% decrease of FLOPs)和参数量( ~92.0% decline of parameter size),剪枝后的模型运行速度约为原来的两倍,并基本保持了原模型的检测精度。下图4.1说明了SlimYOLOv3的工作原理:
图4.1 SlimYOLOv3的工作原理
在稀疏训练之后,YOLOv3获得每个信道的比例因子,然后去除那些具有小比例因子的信道,通过修剪获得的模型SlimYOLOv3在数据集上进一步微调已获得检测结果,然后进入下一轮稀疏训练,迭代的重复上述修剪过程,直到满足某些模型条件,例如模型修剪速率满足某些要求。本文算法流程图如下:
图4.2 算法流程图
4.2.2SlimYOLOv3算法具体步骤
(1)使用yolov3训练自己数据集,达到理想精度后进行稀疏训练。
(2)稀疏训练是重中之重,对需要剪枝的层对应的bn gamma系数进行大幅压缩。
(3)对不重要的通道或者层进行剪枝,剪枝后可以对模型进行微调恢复精度。
4.3 特征FAST算子
FAST特征点则直接利用了关键点与周围像素点灰度值的关系,提取时间非常短,能够实现实时计算,但是FAST关键点不具备尺度和方向不变性,无法应用与SLAM系统.而ORB特征点则结合了一种改进的FAST关键点和BRIEF,具备有良好的尺度和方向不变性.提取一张照片的ORB特征点大约需要15ms,既实现了实时性,同时还保证了所提取特征点的可靠性与计算成本和减少精度误差。图4.3与4.4为相机动静态的特征点与动态轨迹图。
图4.4 相机移动时特征点与动态轨迹
这一部分主要分为两个过程,分别是闭环探测和闭环校正。闭环检测先使用 WOB 进行探测,然后通过 Sim3 算法计算相似变换。闭环校正,主要是闭环融合和 Essential Graph 的图优化。
第五章 结论与数据
5.1 实验结论与分析
为了验证本章的算法想法可行性,在公开的数据集进行了对比实验,实验的操作系统为Ubuntu18.04.x,无GPU,SLAM算法接口主要有C++和Python编写,配置的环境为Pytorch,OPenCV3.2.x。
本实验分别使用德国TUM数据集rgbd_dataset_freiburg1_desk和rgbd_dataset_freiburg1_desk2数据集提供的公开视频作为数据集,并且为了突出明显的性能提升,本文采用大量运动的数据集,以此来得到精准的实验数据。
为了对本章的算法进行准确评估,本章将以相对位姿误差作为参照依据,相对位姿误差主要描述的是相隔固定时间差Δ \DeltaΔ两帧位姿差的精度(相比真实位姿),相当于直接测量里程计的误差。因此第i ii帧的RPE定义如下:
5.2 结论
本文利用度学习框架将SLAM算法优化,通过深度神经网络优化相机参数,不断迭代优化,在很大程度上减少精度误差,减少了多余特征点的匹配,通过仿真实验得出,本文算法大大优化了识别精度,执行速度没有显著的减慢,表明本算法适合机器人相对位姿估计,以达到机器人实验数据的准确,定位准确度高。
参考文献
[1]王伟良.动态环境下基于Mask R-CNN的ORB-SLAM研究[J].现代信息科技,2020,4(21):80-83.
[2]徐波,陈欢,田定胜,章海兵.基于Dijkstra的智能巡检机器人避障算法[J].供用电,2020,37(12):74-80.
[3]魏彤,李绪.动态环境下基于动态区域剔除的双目视觉SLAM算法[J].机器人,2020,42(03):336-345.
[4]马鑫,梁新武,蔡纪源.基于点线特征的快速视觉SLAM方法[J].浙江大学学报(工学版),2021,55(02):402-409.
[5]张凯,阳杰.深度学习下的视觉SLAM回环检测及其算法[J].微处理机,2021,42(01):43-46.
[6]张晨阳,黄腾,吴壮壮.基于K-Means及深度学习的RGB-D SLAM方法[J/OL].计算机工程:1-14[2021-03-16].http://doi-org-443--bjmu.bjmu.toyss.me:8001/10.19678/j.issn.1000-3428.0060052.