1、第 33 卷第 1 期广东石油化工学院学报Vol 33No 12023 年 2 月Journal of Guangdong University of Petrochemical TechnologyFebruary 2023基于深度学习的视觉拾球机器人研究苏立敏1,2,雷高伟1,莫琦1,陈吉东1(1 广东石油化工学院 自动化学院,广东 茂名 525000;2 暨南大学 能源电力研究中心,广东 珠海 579080)摘要:针对球类训练时(如乒乓球或棒球),散落在地上的球采用人工捡球的方式,费时费力的同时还会影响运动员训练的问题。设计一种新的基于深度学习的视觉识别拾球机器人,该系统使用 STM32
2、 作为主控制器,采用 K210 图像处理模块作为主传感器,利用麦克纳姆轮作为机器人的移动部件,3D 打印的三自由度的机械臂作为捡球的执行部件。软件层面主要对深度学习的目标球图像识别模型训练、麦克纳姆轮的 PID 控制算法、机械臂的控制等方面的描述,实现对乒乓球的自动识别、捡球、存球等功能。结果表明,所设计的机器人图像处理结果准确,机械结构合理,捡球速度较快。关键词:深度学习;图像识别技术;捡球机器人;PID 算法中图分类号:G642文献标识码:A文章编号:2095 2562(2023)01 0038 05针对球类训练时(如乒乓球或棒球),散落在地上的球采用人工捡球的方式,费时费力,还会影响运动
3、员训练的问题,设计了基于视觉识别的捡球机器人。Liu 等1 设计的自动网球收集机器人,采用红外传感器实现对网球定位,并通过机械爪完成对球的抓取回收。这种方式在一定程度上实现了捡球功能,但捡球速度与效率有待提高。Elamvazuthi 等2 设计和开发的捡球机器人,使用滚筒加挡板叶子结合的结构,当球进入到入口处时,滚筒带动挡板叶子将球卷入并抬高球的位置,最终球进入到存球筐内。在一定程度上实现了捡球的效果,但捡球的过程中滚筒需要一直旋转,在电源的消耗方面并不经济。针对上述机器人的弊端,本文设计的机器人以 K210 运行深度学习图像识别算法作为主传感器,根据实际需求创新性地设计了机器人的捡球机构与运
4、动结构,结合机器人的运动控制算法和机械臂控制算法,实现智能捡球功能3。结果表明,所设计的机器人图像处理结果准确,机械结构合理,捡球速度较快。1机器人结构设计机器人结构主要由麦克娜姆轮运动单元、捡球机械臂单元、摄像头云台单元组成。机器人的本体采用叠层3D 打印设计,第一层连接电机和放置电池,第二层放置电路板,第三层连接机械臂。机器人的每一个部件多在计算机上设计,组成装配体,形成机器人的数字孪生4。可进行受力分析和结构冲突分析,并设计改进。层与层之间使用铜柱连接,使得机器人结构牢固紧凑。1 1麦克纳姆轮运动结构利用 4 台电机驱动 4 个麦克纳姆轮,每个轮子可以单独控制,如图1 所示。通过控制4
5、个轮子的不同速度、不同转向,可以实现机器人偏移、图 1麦克纳轮底盘效果前进、旋转等效果,使机器人转向更加灵活5。轮子旋转方向与机器人运动效果如表 1 所示。收稿日期:2022 08 14;修回日期:2022 09 06基金项目:国家自然科学基金重点项目(61933013);广东省科技创新战略专项资金(攀登计划)科技发明制作类项目(pdjh2021b0333);茂名市科技计划项目(2022032)作者简介:苏立敏(1998),男,广东湛江人,本科,主要研究领域为图像识别与自动化设计。通信作者:雷高伟(1986),男,河南商丘人,硕士,实验师,主要从事人工智能与故障诊断研究。表 1轮子的转向的和移
6、动效果轮子 W1轮子 W2轮子 W3轮子 W4运动效果正转正转正转正转前进反转反转反转反转后退正转正转反转反转右旋转反转反转正转正转左旋转轮子 W1轮子 W2轮子 W3轮子 W4运动效果正转正转右前方移动正转正转左前方移动反转反转左后方移动后转后转右后方移动1 2捡球机械臂结构机械臂是 3 个模拟舵机与结构件组成,如图 2 所示。三个维度分别是末端夹球结构、抬臂结构、转台结构6。机械臂的功能是将位于机器人前端的球捡起,放置在机器后端的存球筐中。三个维度的设计要求具体如下。(1)末端夹球结构。要求稳定地将球夹住,尽可能将受力点转移到机械结构上,减少舵机负载,延长舵机寿命。因此采用两叶机械爪结构7
7、,实现夹球与放球的作业。图 2机械臂结构(2)抬臂结构。任务是实现将末端结构从地面抬起和放下。要求其高度变化时不改变末端夹球结构的角度,因此设计成平行四边形联动结构。在作业时,四边形四边两两平行。最终的效果是只要后端固定结构不变,末端的夹球结构的角度就不会变化。(3)转台结构。连接机器人本体与机械臂,使用受力平面轴承的结构,下固定板与上旋转板之间通过平面轴承连接,来承受重心外偏带来的纵向受力。舵机与上旋转板通过连接轴相连,实现力矩传递。1 3其他结构(1)摄像头云台结构。摄像头的视角有限,为了获得更大的识别范围,设计采用云台结构,实现摄像头的俯仰运动8。设计使用舵机与结构件搭建的一维云台结构,
8、赋予了摄像头更加灵活的活动,同时减少由识别角度带来的摄像头设计位置的局限。(2)存球筐结构。设计与机器人本体融合,位置在机器人的后部,由 3D 打印与铜柱组成,存球筐后部的仓门由舵机带动,由舵机的展开角度来实现仓门的闭合,实现机器人自主卸货功能。2机器人的硬件设计机器人硬件包括供电单元、电机驱动单元、机械臂驱动单元、图像处理单元、交互单元(见图3)。图像处理单元采集图像并进行图像处理,将处理后的目标结果数据传递给主控制器 STM32,STM32 通过 PID 算法计算出控制电机运动的 PWM数据,控制 TB6612 电机驱动模块带动电机运动。机械臂将球捡起,装在机械臂末端的红外检测模块判断机械
9、臂是否成功将球夹取。蓝牙模块连接机器人与上位机,实现参数的设置以及数据的回传。人机图 3系统硬件框架交互单元以固定的频率采集与计算机器人的运行数据,且在 OLED 屏幕实时显示机器人的相关参数。(1)供电系统。采用 3 节锂电池串联 12 V 的供电方式。机器人有 2 种电压需求,分别是:6 V 驱动轮子电机,5 V 驱动舵机、外围模块和 MCU 工作。采用 LM2596s 芯片搭建 DC DC 降压电路9,将电池电压输出 6 V 电压。使用 AMS1117 5V 搭建5 V 稳压电路,该电路具有电压稳定、驱动电流大的优点,同时带过流保护、过压保护的功能。(2)电机驱动电路。电机驱动电路采用
10、TB6612 芯片搭建10。每一路电机的驱动需要 STM32 三个IO 端口控制,其中两个 IO 端口输出正负信号连接 TB6612 的 IN1 与 IN2 端口,控制电机的旋转方向;一个93第 1 期苏立敏等:基于深度学习的视觉拾球机器人研究IO 输出 PWM 信号连接 TB6612 的 PWM 端口控制电机的转速。(3)人机交互电路。使用 OLED 屏幕显示机器人的运行数据,按键作为机器人的输入端。OLED 屏幕使用 I2C 通讯方式,SCL 与 SDA 端口与 STM32 的 IO 端口连接,可实现 400 Kb/s 传输速率,具有传输速度高、接线少、传输稳定等优点。按键与 STM32
11、的外部中断引脚连接,组成上拉输入。在按键未按下时,输入高电平;按键按下时,输入低电平。按键出发控制器的中断程序,可实现人机交互的快速响应。3机器人的软件设计本机器人使用 C 语言在 Keil 环境下开发 STM32 程序,使用 python 语言在 Maixpy 环境下开发 K210 的程序,机器人的工作流程如下开机后对各个模块初始化,用户选择球类,系统开始运行。摄像头拍摄一张图片,由图像处理芯片根据算法判断是否有目标球。当图像中未识别有球时,机器人控制云台转换角度再次识别,直到视野中含有球,图像处理芯片将计算出目标球的位置数据输出给主控芯片。K210 计算出目标球的位置数据主控芯片做 PID
12、 计算,结果转换为 PWM 控制电机运动。靠近目标球后机械臂工作将球夹取,这个过程中,安装在机械臂的红外线模块会判断是否夹取成功,如果夹取失败,则重新开始夹取,直到识别通过,机械臂将球放置在存球筐中,这样就完成捡球工作。任何时候,红外避障模块如果识别到障碍物,机器人会停止当前捡球动作,智能避障后再开始捡球。3 1电机的 PID 控制机器人根据目标球的 x 与 y 轴位置误差输出动力,将 x 与 y 轴的误差数据输入到 PID 算法中计算出电机的输出动力。采用 PID 算法在消除误差、提高系统稳定性方面有非常大的作用11,其表示为U(t)=P(e(t)+1Tnte(t)dt+Ddz(t)dt)(
13、1)式中:e(t)为误差作为输入;U(t)为 PID 计算的输出结果。程序编写 PID 时,是有执行周期的,即 PID 算法并不是连续的,而是有采样周期的,因此需要对 PID 离散化。对式(1)进行离散化得:Uk=Kp ek+Kikj=0ej+Kd(ek+ek 1)(2)式中:Kp、Ki、Kd为需要调试的参数;ek为 x 轴和 y 轴的误差。通过式(2)可得出对应轴电机的动力输出,再根据叠加原则将 x 轴与 y 轴的动力输出叠加到4 个电机中,即可实现电机转动使机器人朝着目标球靠近。3 2机械臂控制机械臂由 3 个舵机控制:舵机 1 控制夹取末端结构,控制机械爪叶子展开与闭合;舵机 2 控制抬
14、臂结构,其角度决定了夹取末端结构的高低;舵机 3 控制转台结构,其角度决定整个机械臂的朝向。本文采用的是模拟舵机,采用 PWM 控制方式,这个特定的 PWM 频率为 50 Hz,脉冲的高电平部分一般为 0 5 2 5 ms 范围来控制舵机的 0 18012,其频率与角度对应关系见表 2。3 3人机交互表 2舵机控制频率与角度的对应值脉冲高电平时间/ms舵机旋转角度/()050104515902013525180本文采用 I2C 通讯的 OLED 显示屏实时显示机器人的数据。值得注意的是,STM32 的硬件 I2C 在通讯过程中如果存在通讯失败的情况,则会导致机器人系统全部瘫痪。为了避免这样的事
15、情发生,本文使用的是 IO 输出来模拟 I2C 的通讯时序(俗称模拟 I2C)13。结果表明,模拟 I2C 有效地规避了通讯失败导致系统崩溃的问题。4深度学习的图像处理机器视觉作为本机器人的重要传感器,要求机器人对摄像头采集的图像做出准确的处理。K210 芯片作为一款图像处理芯片,自带的 KPU 神经网络处理器赋予了该芯片强大的深度学习能力。04广东石油化工学院学报2023 年4 1卷积神经网络深度学习作为机器学习的一个重要发展,它能自动学习合适的表示特征,在许多领域得到了发展。卷积神经网络(CNN)是一种前馈神经网络14,一般由输入层、卷积层、池化层、全连接层,输入层的图像通过卷积层与滤波器
16、进行卷积,得到若干特征图,再经过下采样层对特征进行模糊训练,接着通过一个全连接层输出一组特征向量,最后通过加权计算得出目标的概率。(1)卷积层是对输入进行卷积运算。卷积运算是一个卷积核(特征矩阵)在输入的图像矩阵上按照一定的规则移动,与图像矩阵上对应位置的元素相乘后结果相加得到的一个值就是上一层图像矩阵的特征,其表示为xlj=f(iMjxl 1i klij+blj)(3)式中:xlj为第 l 卷积层的第 j 个特征图;f()为激活函数;k 为卷积核,表示输入图像集合;b 为偏置系数。(2)池化层也称为下采样层,其目的是减少特征映射的数量,对特征进行提炼操作。通过降维能过滤掉带噪声的特性,减少运算复杂度,增强有效的图像识别特征。池化层一般形式为xlj=f(ljdown(xl 1j)+blj)(4)式中:down()为池化函数,一般有最大池化、平均池化等(本文使用最大池化函数,它是对该层输入图像的一个 n n 矩阵大小的区域求最大值);为加权系数;b 为偏置系数。4 2图像识别算法本文中机器人的 K210 运行 YOLOv2 目标检测算法,YOLO 模型拥有不错的 mAP 和 FPS 性能