一种基于YOLOv5 的垃圾分类机械人设计*
2023-04-14巫传珺汪川贵郭丽芳
巫传珺,张 松,胡 正,汪川贵,郭丽芳
(1.成都工业学院网络与通信工程学院,四川 成都 611730;2.成都工业学院综合改革与政策法规处,四川 成都 611730)
在当今的城市生活中,国家通过相应的政策督促居民进行垃圾分类,虽然有国家政策的支持,但对于大众来说,垃圾分类的观念还没有深入人心,因此如何更快、更有效地帮助人们进行垃圾的分类,就成了本篇的研究点。
对于市场上流行的扫地机器人,主要功能的设计在于机器人自主寻路、自动规避障碍等[1],而对于工业垃圾分类车,主要采用传统后装压缩式垃圾车或者后高位自装卸式垃圾车[2],体积庞大,无法在小空间场景内使用。本文设计的垃圾机器人采用视觉处理技术[3]解决了小场景下的自动垃圾拾取与分类问题。
本文设计的垃圾分类机械人能够从指定位置出发,快速搜寻垃圾,对垃圾识别并分类拣送到指定的垃圾堆放地,机械人采用位置式PID 算法对机械人运动进行实时控制,在文献[4-5]的论文报告中对YOLOv5 模型训练进行了运用,分别对口罩和动物进行了检测,笔者们参考了其识别方法,对不同的垃圾进行了模型部署,以高精度识别不同的垃圾,采用OpenMV 摄像头[6]对分类区域的分类色块进行识别,采用机械门夹取方式对垃圾进行拾取,完成机械人从出发到垃圾搜索、垃圾识别、垃圾拾取、垃圾分类的整个过程。本文通过对小型垃圾分类机械人的设计研究,为家用生活垃圾处理设备提供新的设计思路。
1 系统总体设计
机械人系统主要由STM32 单片机主控系统、Jetson Nano 平台、OpenMV 平台组成,其中STM32单片机作为机械人的主控单元,主要负责机械人的移动、机械门的抓取与垃圾的堆放分拣;Jetson Nano 平台负责垃圾的识别工作,主要进行垃圾的搜寻及对垃圾种类的识别,同时将识别到的垃圾种类信息与目标垃圾位于镜头的坐标发送给STM32 主控;OpenMV 平台主要负责对垃圾堆放区的检测及对不同垃圾堆放区的识别,同时堆放区位于镜头内的坐标发送给STM32主控,STM32 主控在接收到来自2 个摄像头的数据后作出相应的处理,包括移动机械人至目标垃圾点并进行抓取、移动机械人至目标堆放区、释放垃圾、退出堆放区,再开启新一轮的垃圾寻找,其系统架构如图1所示。
图1 系统架构图
2 系统各模块设计与实现
2.1 基于Jetson Nano 的垃圾种类的识别
Jetson Nano 是英伟达Jetson 系列的一款开发板,也是性价比最高的一款板子,平台上提供了现代AI 的强大算力,因此可以在上面进行一些复杂的AI 计算,YOLOv5 是一种单阶段目标检测算法,该算法在YOLOv4 的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的提升。
整个训练过程首先会使用相机对需要拾取的垃圾进行各方位的录像,再将录制的垃圾视频分解成数据集相片,通过Labelimg 对数据集进行标注,经过矩池云平台将数据集转化为模型,最后将模型部署到Jetson Nano 平台,使用pycuda 运行程序与模型,Jetson Nano平台通过单目摄像头对垃圾进行检测,过程如图2所示。
图2 YOLOv5 模型训练流程
不同版本的YOLOv5 与EfficientDet检测算法之间的性能也不同,版本主要有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,不同版本YOLOv5 性能对比如图3 所示。
图3 YOLOv5 不同版本的对比
图3 横轴表示的是该算法在GPU 上对每张图的推理时间(ms),该数值越小越好;纵轴表示的是该算法在COCO 测试数据集上面的AP 指标,该数值越大越好。与EfficientDet0 相比,YOLOv5s 不仅可以获得更高的AP 指标,而且可以获得更快的推理速度,本项目中的机械人为了更快地部署不同的垃圾模型,采用了YOLOv5s 进行垃圾模型的训练。垃圾图片集训练后的最终模型训练结果如图4 所示。
图4 YOLOv5 训练结果
图4 分别是对橘皮、纸团、电池、空瓶、纸杯进行模型训练,可以看出图集越多,识别精度越高,模型达到饱和后精度可以达到95%以上,满足了垃圾识别的需要。
2.2 基于tof 测距垃圾目标定位
tof 测距属于双向测距技术,利用数据信号在一对收发机之间往返的飞行时间来测量两点间的距离。将发射端发出数据信号和接收到接收端应答信号的时间间隔记为Tt,接收端收到发射端的数据信号和发出应答信号的时间间隔记为Tr,如图5 所示。信号在这对收发机之间的单向飞行时间Tf=(Tt-Tr)/2,则两点间的距离d=c×Tf,其中c表示电磁波传播速度,其测距原理如图5 所示。
图5 tof 测距原理
2.3 垃圾分类区域检测
OpenMV 自带一个Micropython 解释器和cv 库,调用OpenCV 里面的blob 色块模块,追踪终点的颜色,通过这种方式实现垃圾堆放区分类色块的识别,实现方法为:首先对分类区色块进行拍照取样,随后在OpenMV 软件中通过阈值编辑器改变颜色的阈值来进行色块追踪,将颜色加入函数中再调用OpenCV 库,框出镜头画面中满足颜色阈值的色块,将信息转化为数值的形式发送给主控,主控根据信息决定运动轨迹。区分不同种类垃圾堆放区如图6 所示。
图6 区分不同种类垃圾堆放区
2.4 垃圾目标抓取
机械门夹取结构:抓取垃圾的方式采用机械门夹取与竖推方式进行,机械门使用舵机与木板的结合,STM32 主控通过输出额定PWM 波控制舵机的旋转从而带动木板旋转,实现机械门的张开与闭合,通过此方式将垃圾夹取或者关在一定空间内,使用挡板推动垃圾移动。机械门抓取示意图如图7 所示。
图7 机械门抓取示意图
2.5 垃圾分类机械人控制策略算法设计与实现
本次机械人采用增量式PID 算法来控制,通过摄像头传回的坐标信息来计算该坐标与摄像头屏幕中线的偏差,从而实现机械人的精准转向,使之能够准确地向着目标前进。
PID 算法的主要实现过程如图8 所示。
图8 增量式PID 实现过程
从图8 可以看出,PID 算法实现的影响因素有3个,分别是当前偏差、历史偏差、近期偏差,与之对应的是PID 中的比例控制(P 算法)、积分控制(I 算法)、微分控制(D 算法)。
比例控制:Ek=Sv-Xk,Pout=Kp×Ek+O0。
积分控制:Sk=E1+E2+E3+…+Ek-1+Ek,Iout=Ki×Sk+O0。
微分控制:Dk=Ek-Ek-1,Dout=Kd×Dk+O0。
其中,Ek为当前的偏差值;Kp为将误差放大或缩小的比例系数;Sk为历史偏差;Ki为将历史误差放大或者缩小的比例系数;O0为确保当误差为0 时,整个输出系统不会为0。
机械人对于PID 算法的应用:摄像头是放在机械人车头的正前方的中间,使机械人与车头同向,镜头的中点也就是机械人车头中点,当垃圾或者终点出现在镜头前方时,摄像头会识别出垃圾或终点块在镜头x方向的位置并将信息传递给主控芯片,根据垃圾或终点在镜头x轴方向的值,计算出与镜头中点的差值Ek,因此根据差值Ek计算出PID 值,根据PID 值,对左右车轮输出的PWM 进行调整,使两车轮转速不同,使机器人朝垃圾方向行驶。差值越大,偏向速度越大,差值越小,偏向速度越小,当没有偏差,垃圾或终点在机械人的正前方时,机械人不偏向,这样就实现了机械人的PID 调速,控制流程如图9、图10 所示。
图9 驶向垃圾时PID 控制流程图
图10 驶向终点时PID 控制流程图
2.6 Jetson Nano 实现垃圾定位
摄像头镜头内有垃圾时,机械人通过Jetson Nano传回的物体中点位于x轴的坐标,并将坐标信息发送给STM32 单片机,STM32 单片机通过计算出垃圾中心位于x轴坐标值与镜头中点x轴坐标值之差,就可以使用上面讲述的PID 差速控制,调整机械人双轮的相对速度,让机械人往物体方向运行,使垃圾始终在镜头中心浮动,最后当tof 模块测试到垃圾与机械人的距离少于20 cm 时,机械门关闭,垃圾被拾取。在摄像头镜头内没有垃圾时,机械人自身旋转车身,改变Jetson Nano 镜头视野,当摄像头视野内再次出现垃圾时,回到刚开始的过程。垃圾在镜头的识别显示如图11 所示。
图11 垃圾在镜头的识别显示
2.7 OpenMV 实现对分类堆放区的定位
当机械人拾取垃圾后,机械人通过调用OpenMV硬件平台自带的OpenCV 库里面的blob 色块模块,追踪终点的颜色,通过阈值编辑器改变终点颜色的阈值来进行色块追踪,实时锁定终点的位置坐标。
首先机械人将识别到的垃圾种类信息发送给OpenMV,OpenMV 根据垃圾种类选择识别颜色色块,机械人通过OpenMV 对终点色块坐标进行识别,将颜色色块中心在x轴上的坐标值传递给单片机,STM32单片机通过判断其相对于镜头中点x方向上的距离,使用上述讲述的PID 差速控制,调整机械人双轮的相对速度,让机械人往终点方向行驶。
2.8 TCS34725 模块实现终点的定位
当机械人行驶到终点附近时,使用TCS34725 模块检测终点色块。TCS34725 模块是一个颜色检测传感器,它集成了红外阻挡滤光片,可以最大限度地减少入射光的红外光谱成分,并可精确地进行颜色测量,我们使用它来检测地面的颜色信息。STM32 主控板通过I2C 通信协议对其进行通信与控制,当机械人行驶到对应的垃圾堆放色块上时,通过TCS34725 模块检测,并将颜色信息发给主控,主控接收到色块信息后,判断颜色信息是否为堆放区色块,当判断为堆放区色块时,将机械门打开,将垃圾放下。
3 结束语
本文的垃圾分类机械人基本实现了垃圾搜寻、垃圾识别、垃圾拾取、垃圾堆放的整体过程,实现了小巧化、整体化的设计,机械人的各个模块不仅能独立分工,还能协调工作,系统结构紧凑而又灵活,功能强大,具有极大的可扩展性,可以减少人们分类生活垃圾的负担,提高垃圾分类的效率。设计虽已完成并且实现,但要承认的是设计中还有很多的不足,比如垃圾误识别问题、机械人运动规划问题、拾取微小垃圾的问题等等,需要不断优化和改进,希望本文能对垃圾分类事业有所帮助。