陈家熙,刘建豪,张海博,范洁润,李乐怡,李振华
(广东海洋大学,广东 湛江 524088)
随着科技水平的提高,科技代替人类完成许多工作。例如,当下发展比较迅猛的无人运输技术。在餐厅中,它们可以准确将菜品运送到对应客人的桌子上,减缓了餐厅服务员的工作量。在小区里,快递站使用无人运输小车派送快递,可以有效分担快递员的工作压力。无人运输小车的出现,可以有效地帮助减缓服务、运输等行业的工作人员工作压力,在夏天高温时,能有效防止工作人员中暑。但现在市面上大部分的无人运输小车外形都比较大,只适用于某些开阔的场地。针对这种现象,本文提出一种小型运输车。此款运输车体积较小,可以用于在一些相对狭小的地方运输小型物品,如在楼道内运输药品或零食等。该车具有识别门与自动避障功能,能实现精准派发与自动避障等功能,实用性较强,且成本相对较低,开发周期较短。
该小型智能运输车主要由单片机主控芯片、电源模块、摄像头识别模块、电机驱动模块、避障模块5部分组成。考虑到小车的程序复杂程度和工作效率,该智能运输车使用STM32F103ZET6作为主控芯片。该芯片拥有较多功能管脚以及5个串口,便于后续可以对小车的功能进行升级与扩展,电源模块由12 V可充电电池、AMS1117芯片和LM2596S芯片组成;驱动模块采用L298N以及普通步进电机组成;避障部分由超声波测距模块HC-SR04与红外对管避障模块共同组成,完成对障碍物的测距和避障工作。小车整体模型采用3D打印模型作为支撑。
本文的机器视觉模块设计中重点为深度神经网络模型,还含有树莓派、摄像头。深度神经网络模型采用YOLOv5进行训练,使用OpenCV部署训练得到的模型,即可用摄像头识别出门。
YOLOv5有4个子版本分别为s、m、l和x,本文选用YOLOv5s来训练数据集。YOLOv5s相较于其他的版本具有更快的速度和更小的网络,AP精度也最低的特点。在本文以门为检测的目标,追求速度,所以本文深度神经网络采用YOLOv5s模型进行训练。模型参考2019年末提出的CutMix数据增强法的Mosaic数据增强对数据集合随机缩放、裁剪和排布,以及自适应图像缩放、锚框计算等操作,不仅能丰富数据集,提高数据集的复杂度,减少GPU,还能大大提高模型的分类和训练效率能力。
与以往对图片进行翻转、放大、缩小进行的数据增强不同,Mosaic 数据增强是将多张图片进行随机缩放、裁剪、排布并拼接到一张图片上,减少训练过程中出现非信息像素,以及混合后图片不自然的情况,提高了模型的训练效率和分类能力[1],特别是对于随机的所发性能的小目标,自适应锚框计算和自适应图像缩放以丰富数据集,提高鲁棒性和提升推理速度[2];自适应锚框计算是将通过训练得到的输出预测框和真实框进行对比,求差再反向更新,迭代网络参数以得到最佳的锚框值。
算法模型的Backbone主要采用Focus和CSP结构。Focus结构是以32个卷积核的卷积操作进行关键的切片操作。本文的YOLOv5s模型即是由CSP1_X的结构应用于Backbone主干网络,神经网络模型获取特征的能力获得了极大的提高;而Neck则采用了FPN+PAN的结构,PAN是借鉴了图像分割领域PANet的创新点。一般目标检测任务的损失函数分为Classificition Loss(分类损失函数)和Bounding Box Regeression Loss(回归损失函数)两部分。损失计算采用GIoULoss进行计算,GIoULoss的计算公式为:
(1)
(2)
利用GIoULoss可以解决单纯IOULoss计算时无法反映两个框不相交的情况。
YOLO处理流程:(1)将图像test到 800×600作为神经网络的输入;(2)将图像过YOLOv5模型;(3)进行利用NMS,筛选Boxes。
本小车主控芯片选取了STM32F103ZET6,该芯片在STM32F103 系列里配置相对较高,能很好实现本小车的基本功能,同时丰富的接口以及外设可以用于对小车现有功能进行升级完善以及后续功能增加,而且成本较低。它拥有的资源包括:64 KB SRAM、512 KB FLASH、2个基本定时器(TIM6、TIM7)、4个通用定时器(TIM2-TIM5)、2个高级定时器(TIM1、TIM8)、2个DMA控制器(共十二个通道)、3个 SPI串行外围设备接口、5个串口、1个 USB、1个 CAN、3个12位Analog-to-Digital Converter模数转换器、1个12位数字/模拟转换模块、1个 SDIO 接口、1个 FSMC 接口以及112个通用 GPIO接口。
本小车驱动采用了普通步进电机,驱动步进电机采用L298N模块,2个L298N模块分别驱动前端和后端的电机,L298N模块内部为双H桥电路,含有4通道逻辑驱动电路,可使用1个模块就非常方便的驱动2个电机。1个H桥电路主要由4个MOS管组成,MOS管的导通状态决定了电机的转动方向。电机通过单片机输出PWM波,再通过L298N的PWM输出通道来进行调速。一个电机由两个引脚来操控其工作状态。单片机通过操作IO口的输出,即可让小车实现前进、后退、转向、停车、刹车等功能。
因为小车各模块所需的额定电压都不相同,所以主控电路板上需要有电压转换芯片以及电压转换电路。小车的驱动模块采用12 V可充电锂电池供电,12 V可以为L298N提供正常工作电压,但对于其他电子模块12 V电压过大,针对此问题主控电路板上有12 V转5 V与5 V转3.3 V的降压电路,分别通过LM2596S-5.0与AMS1117-3.3V芯片完成降压,降压完成后即可对单片机、超声波模块等电子元器件进行正常供电。
3.4.1 超声波避障模块
HC-SR04测距模块可以进行2~400 cm范围内非接触式距离测量,测量距离误差在3 mm左右。此模块由3部分组成,分别是超声波发射器、接收器与控制电路。该模块基本工作原理是首先让超声波发射器向一个特定的方向发射超声波。在超声波发射出去同一时刻开始计时,超声波通过空气传播;当超声波在传输途中碰到障碍物就马上反射回来;当超声波接收器接收到反射回来的超声波就马上停止计时。本次测试的测试距离可以由以下公式得出:测试距离=(计时时间×声速)/2。对于本模块的时序分为以下几点:首先,模块采用TRIG管脚来触发测距功能,最少需要给模块传输10 μs的高电平来作为触发信号。其次,模块会自动发送8个40 kHz的方波,并开始自动检测是否有接收到反射信号。若模块检测到了反射信号,会控制ECHO管脚输出一个高电平,而这个高电平持续的时间就是超声波从发射到接收到反射波时间。最后,测试距离通过公式:测试距离=(高电平时间×声速)/2计算可得[3]。
3.4.2 红外对管避障模块
本小车采用的红外避障模块为TCRT5000模块,采用这个模块的原因是该传感器模块对环境光线适应能力比较强。此模块具有红外线发射与红外线接收管,红外线发射管可以对外发射出红外线。当红外线传播的方向遇到阻碍物(或者称为反射面)时,红外线会被反射回来然后被红外线接收管接收,经过模块内部的比较器电路处理过后,模块上的绿色指示灯会被点亮,同时信号输出接回输出数字信号(一个低电平信号)。本模块可以通过扭动电位器旋钮来调节对障碍物的测量距离大小,可调节的有效距离为2~30 cm,工作电压为3.3~5 V。当发射出的红外线没有被反射面反射回来或被反射回来但反射波强度不够大时,红外接收管会一直处于关断状态。此时,模块的OUT管脚输出为高电平,模块上的绿色指示灯不会被点亮。当障碍物(反射面)出现在模块的检测范围内时,且红外线被反射回来且强度足够大,红外接收管饱和,此时模块的管脚输出为低电平,模块上的绿色指示灯会被点亮。
本小车的主程序主功能分为避障和识别两部分。当程序开始运行时,单片机对所用到的模块以及外设进行初始化,初始化完毕后开始运行小车的驱动程序,驱动小车开始工作,同时小车进行对门识别与避障检测两个功能。小车的识别程序实现是通过摄像头与单片机的通信。单片机通过串口与树莓派进行通信。当识别到门的出现时,树莓派会传递一个信号给单片机,单片机接收信号后,执行一个停车函数让小车停在门前,小车可通过喇叭播放提示语音提醒门外居民出门领取物品。避障程序则是在小车运行的过程中,当小车的红外避障模块检测到有障碍物时,超声波模块可以检测出小车距离障碍物的距离,然后根据距离结合小车的大小,控制小车通过左转或右转或后退进行避障[4]。
在设计本小车时,笔者同时设计了一个对小车功能进行扩展的小程序。该小程序可以通过二维码与小车运输的物品进行绑定,通过绑定物品信息,用户可以在手机端查看关于物品的信息以及状态,方便对小车上的物品信息进行远程观测。主程序流程如图1所示。
图1 主程序流程
本项设计基于STM32,结合人工智能识别、软件编程、硬件设计、模型设计,最终实现小型智能运输小车。该小车不仅可以满足一般的小型运输需求,还可以实现精准派发,自动避障等功能。该小车成本相对较低,易于组装,编程难度相对较小,可以为以后智能运输车的研发提供一定的参考。