基于ROS与深度学习的智能避障移动机器人的设计
2021-07-31叶振康陈耀锋黄培灿钟勇填
叶振康,陈耀锋,黄培灿,钟勇填
(东莞理工学院 计算机科学与技术学院,广东 东莞 523808)
0 引 言
移动机器人已逐渐渗透到各个领域,随着移动机器人的研究不断深入,如何让机器人避障也是一大热点和难点[1]。本文介绍了如何使用深度学习和迁移学习的方法,只通过少量标签样本数据训练的模型能够获得较好的图像分类能力,实现障碍识别。利用迁移学习方法可以使用已有网络结构对不同领域进行处理,借助少量训练集快速训练出可用模型[2]。基于ROS机器人操作系统进行避障功能的设计与实现,有利于提高软件的通用性,便于与其他功能结合,高效构建完整的机器人系统。
1 系统架构
通过收集图片并将图片按照标签BLOCK和FREE进行分类,使用Python的PyTorch深度学习张量库训练图片分类器。为了在使用较少训练集的条件下达到较好效果,使用预处理模型AlexNet将原先有大量标签的最后一层替换成仅有BLOCK和FREE的特定特征[3],最终得到基于卷积神经网络的图像分类器。系统架构如图1所示。
图1 系统架构
摄像头采集的图像作为神经网络的输入,根据神经网络的输出结果计算移动机器人的目标线速度和角速度,并通过USB线发送给底盘控制器,控制机器人执行避障动作。
2 硬件设计
硬件主要由3大部分组成,包括TurtleBot2底盘、NVIDIA Jetson Nano主控制器和RaspberryPi V2.1摄像头。Jetson Nano搭载了四核Coretx-A57处理器、128核Maxwell GPU及4 GB LPDRR4内存,具有AI计算能力,可以很好地支撑TensorFlow和PyTorch等高级神经网络的应用。
在环境感知方面,使用摄像头实现基于机器视觉的避障功能,相比超声波、红外线传感器的避障方案有较大优势:超声波传感器虽然检测范围广、精度高,但存在近距离检测盲区,且对检测的物体角度要求较高,可能会误收其他机器发出的噪音信号,同时多个超声波传感器收发期间可能会出现交叉干扰等现象[4]。而红外线传感器的强光干扰能力差,系统发出的红外线光易被太阳光主要能量波段下的光波影响,因此实际测量误差较大[5]。在数据获取方面,相对于超声波和红外线,机器视觉技术主动接收光源信息,因此获取的信息量更大[6]。而选用的摄像头又具有夜间使用功能,在使用范围上更有优势。
3 软件设计
ROS是一个优秀的机器人分布式框架,它为开发者提供了硬件抽象、底层设备控制以及基础功能。ROS系统软件的功能模块以节点为单位,可在不同的主机上独立运行。各节点封装成功能包,供开发者调用;软件可复用,易于扩展,减少了“重复造轮子”的多余工作[7],降低了移动机器人的开发成本,提高了开发效率。同时,ROS支持分布式计算,例如可将摄像头采集的数据通过话题通信方式传送回运算能力更强的计算机进行处理,以提高运算效率,降低移动机器人的功耗,为开发提供广阔的可能性[8-9]。
ROS基于话题(Topic)的异步数据流通信常用于不断更新的、含有较少逻辑处理的数据通信。各功能模块以节点为单位运行,通过话题进行消息传递,消息具有严谨的数据结构,允许开发者自定义消息内容和数据类型[10]。
本系统主要由collision_avoidance、mobile_base_nodelet_managet、mobile_base和diagnostic_aggregator节点组成。collision_avoidance节点负责获取实时图像、调用神经网络处理图像和发送运动控制指令信息给mobile_base_nodelet_managet节点。mobile_base_nodelet_managet节点负责解决ROS数据交互存在的延时和堵塞问题,可实现多路数据交互,把信息发送到mobile_base节点。mobile_base节点是控制机器人运动的关键,diagnostic_aggregator节点是诊断节点。关键节点如图2所示。
图2 关键节点
collision_avoidance节点和mobile_base_nodelet_managet节点间使用cmd_vel_mux话题通信,消息内容是移动机器人的目标线速度和角速度。collision_avoidance节点发布消息,mobile_base_nodelet_managet节点读取消息,并根据优先级分配电机运行权限,保证多路控制时系统的稳定性。优先级和超时时间可通过修改YAML文件相关参数设置。
cmd_vel_mux话题采用Twist类型的消息格式,它是用于控制电机的向量结构体,由线速度和角速度组成,可利用笛卡尔直角坐标系实现精确表达,采用Twist类型消息格式,其数据类型均为float 64型。collision_avoidance节点将移动机器人的目标线速度和角速度封装为Twist类型消息,发布到cmd_vel_mux话题中。mobile_base_nodelet_managet节点从话题队列中取出电机控制消息并按优先级依次执行。图3所示为对应的程序流程。
图3 程序流程
4 系统测试
测试基于TurtleBot2移动机器人平台进行。该平台搭载了NVIDIA Jetson Nano主控制器和RaspberryPi V2.1摄像头等器件。在机器人前方放置障碍物,记录算法的输出结果和实际避障效果。测试场景如图4所示。
图4 测试场景
神经网络会返回1个表示移动机器人是否受阻的概率值。当返回的概率值大于预设概率值时,表示移动机器人受阻,移动机器人将左转弯直到避开障碍物,否则继续前进。预设概率值将对避障性能产生直接影响。本测试设定角速度为1 rad/s,线速度为0.2 m/s,通过改变预设概率值研究在特定角速度和线速度下预设概率值对移动机器人避障性能的影响,测试结果见表1所列。
表1 不同概率预设值对避障距离的影响
在一定范围内,随着预设概率值递增,移动机器人沿着墙壁走直线和触发避障的距离都随之变小。设定不同的预设概率值,移动机器人沿墙壁直线运动所需的最小边距不同,触发避障的距离也不同。根据具体应用场景和应用需求对预设概率值做适当调整即可满足不同的用户需求。
过低的预设概率值可能使移动机器人在离障碍物较远时开始转向;而过高的预设概率值会使移动机器人在过障碍物时因物体只占识别图像的某一部分,达不到预设概率值而认为前方无障碍并发生碰撞。此外,过高的预设概率值会使移动机器人在触发避障的临界点抖动加剧。因此根据移动机器人的外形设定合适的预设概率值尤为重要。通过多次测试,测得最适合移动机器人的预设概率值范围为0.4~0.5,避障成功率约为93%,避障效果较好。
5 结 语
为实现视觉避障功能,文中设计了一种基于ROS和深度学习的智能避障移动机器人。本系统使用深度学习训练得到基于卷积神经网络的图像分类器,使用迁移学习技术缩短分类器的训练时间,基于ROS操作系统进行避障功能的设计与实现,并快速构建扩展性强、性能稳定的机器人系统。系统测试结果表明,本系统具有较好的避障能力,对不同环境和障碍物均有良好的适应性。