摘 要:针对体育场馆内人工捡拾乒乓球效率低下、损害运动员身心健康等问题,设计了一款基于OpenMV的智能捡球机器人。该机器人以STM32F103RCT6为控制核心,通过OpenMV获取图像信号,采用霍夫圆检测和颜色阈值检测相结合的算法识别乒乓球并计算其与机器人的相对位置,将该位置信息依次传递给Arduino Mega2560和STM32F103RCT6,二者分别控制5自由度机械臂动作和机器人运动,将目标乒乓球捡起后放入存球筐。测试结果表明,所设计的机器人能够准确识别乒乓球并实现自动抓取,达到预期效果和设计目标,为智能捡球机器人的研究和发展提供了参考和借鉴。
关键词:捡球机器人;OpenMV;霍夫圆检测;颜色阈值检测;机械臂;自动抓取
中图分类号:TP242.6 文献标识码:A 文章编号:2095-1302(2024)05-00-04
0 引 言
随着我国社会经济的不断发展,体育运动的社会化和产业化进程加速,机器人技术与物联网、大数据、人工智能等信息化技术的结合将为未来的体育行业带来重要助力。然而,尽管人工智能在文体领域得到了广泛应用,但对于捡乒乓球机器人的研究相对较少。国内的捡乒乓球机器人研究目前仍处于起步阶段,尚无相关成熟产品,已有的研究主要集中在机器人的机械结构设计和乒乓球的检测识别等方面[1]。
文献[2]设计的捡乒乓球机器人采用MultiFLEXTM2-PXA270作为核心控制器,感知系统由语音检测模块、颜色检测模块和避障模块三部分组成,运动系统由电动机驱动模块和舵机驱动模块组成。该机器人基本实现了自动捡球功能,但其制造成本较高、捡球效率低。文献[3]利用蚁群算法对移动式捡乒乓球机器人的避障路径进行规划,构建动力学模型并设计视觉反馈控制器,完成了对捡乒乓球机器人避障路径的视觉反馈控制,但是路径控制不够精准。
本文针对体育场馆内人工捡拾乒乓球效率低下、损害运动员身心健康等问题,旨在设计一款低成本、高效智能的捡乒乓球机器人,推动智能捡球机器人的普及应用。该机器人不仅能够帮助运动员专注于运动本身,提高训练效率,还具有减少运动员损伤、适应复杂环境等多重优势,助力实现场馆的无人化运作,从而为体育场馆管理带来更多的便利和创新。
1 整体方案设计
智能捡球机器人(以下简称为“机器人”)的整体设计方案如图1所示。系统共使用了3块开发板,用于实现机器人的不同功能,分别是OpenMV、Arduino Mega2560(以下简称为Arduino)和STM32F103RCT6(以下简称为STM32)。
OpenMV图像识别模块是实现智能捡球机器人的核心组件,该器件能够使用自带的OV5640摄像模组实时采集图像,并通过图像处理算法准确识别目标乒乓球,从而为机器人的运动控制和机械臂动作提供重要数据。
Arduino通过串口接收OpenMV提供的控制指令,该指令一方面用于控制舵机的运动,实现对机械臂动作的精准调整,从而确保抓球的成功率;另一方面控制Arduino将速度信息通过串口传递给STM32,为其提供一系列速度指令,STM32解读和处理指令后,生成相应频率脉冲控制信号,发送给电机驱动模块以控制机器人四个电机的转速,从而实现对机器人运动状态的实时控制。
对机械臂和机器人运动的控制分别采用两个控制板,是因为单个开发板端口资源不足。同时,这种分离控制的方法可以减少代码耦合度,方便维护和升级,因此提高了系统的稳定性,降低了整个系统的复杂度。
2 系统硬件设计
2.1 机器视觉模块
机器视觉模块用于识别乒乓球,采用低功耗、低成本、高效实用的OpenMV对乒乓球进行识别、位置锁定和距离测量工作,为机器人移动提供导航[4-5]。此外,OpenMV使用高级语言Micro Python编程,可以简便地实现复杂的机器视觉算法。
2.2 机器人底盘
机器人采用MG42L1步进电机,步距角为1.8°,由四细分数的四路LV8731芯片驱动。电机上附带有编码器,可由STM32控制进行测速。机器人底盘运动以STM32作为主控板,底盘车轮使用麦克纳姆轮,是一种典型的全方位移动轮[6]。
2.3 机械臂
机械臂由1个机械爪、3个机械臂关节、1个台座组成,每个组件由1个TBSN-K15舵机控制转向,Arduino控制这5个舵机实现机械臂5自由度可控。该自由度控制能力使5自由度机械臂具有优越的空间结构调节性能,以便更好地抓取目标乒乓球。
3 软件设计
图2为系统软件流程,其中机器人捡球共分为三个阶段。第一阶段是寻球阶段。机器人上电启动后,即进入寻球阶段。在此阶段,机器人将在STM32的控制下原地旋转,同时启动机器视觉模块进行视野扫描,采用智能识别算法寻找视野中的乒乓球。当识别到乒乓球,且乒乓球在视野中心时,机器人将停止旋转,进入第二阶段寻迹追踪。
在寻迹追踪阶段,机器人在PID算法的控制下按目标速度向目标乒乓球移动。靠近的过程中,机器视觉模块会根据目标乒乓球在视野中的大小(称“视野距离”)计算乒乓球与机器人之间的距离,本文使用距离阈值THRdistance来表征二者的距离。当视野距离大于或等于距离阈值THRdistance时,机器人将停止移动,并进入第三阶段抓取,否则将持续前进。本文设置OpenMV输出QVGA图像,分辨率为320*240,因而机器人视野总像素点数为86 400。经过多次测验,该距离阈值THRdistance=19 200 像素点数,实际距离约为5 cm,此时机器人可以取得良好的抓取效果。
在抓取阶段,机械臂收到指令后执行固定动作抓取乒乓球,并将其放入存球筐。当抓取完成后,机器人将继续原地旋转,进入新的寻球阶段。下面分别对三个阶段进行详细介绍。
3.1 机器视觉与智能识别
在使用OpenMV进行图像识别任务时,参考文献中多采用单一的颜色阈值或神经网络方法[7-8]。由于OpenMV自身的像素较低,在远距离情况下,采用单一的算法识别经常出现错判、漏判,识别效果不理想。本文采用将霍夫圆形检测和颜色阈值检测相结合的识别算法,大大提高了机器人识别、锁定目标和路径规划的效率和准确性。本模块的软件设计流程如图3所示。
首先,系统上电后进行OpenMV的软硬件初始化,随后进行图像采集和有关预处理,包括调整图像亮度、对比度和颜色空间等操作。
其次,使用霍夫变换检测机器人视野中的圆形。识别圆形的基本思路是:第一步,选择视野扫描区。为消除OV5640摄像模组的边缘图像畸变问题对圆形识别的影响,选择摄像头视野中央2/3的区域作为视野扫描区。经实测,此时可认为乒乓球在摄像头的视野中央。第二步,采用经典的霍夫检测方法[9]检测出视野扫描区中所有圆形。第三步,对初步圆形检测结果按图形面积进行筛选。为提高检测速度,减少不必要的图像噪声干扰,设定圆形检测阈值THRcircle,若潜在圆的相对面积小于该阈值,则不认为是有效图形。选取圆形检测阈值THRcircle=3 500像素点数,经过实测证明,此时可以取得良好的识别效果。
最后,在检测到视野中的所有圆形后,OpenMV将比较所有圆形的面积,选择距离机器人最近,即相对面积最大的圆形区域作为新的视野扫描区,进一步进行颜色阈值识别。由于体育场馆常用乒乓球均为白色或橙黄色,因此本文选用橙黄色和白色作为乒乓球的标志色,一旦在视野扫描区发现对应颜色色块,即认为识别到乒乓球,并使用红圈和矩形框进行标记。检测效果如图4所示。
据此,通过霍夫圆形检测和颜色阈值检测相结合的算法,准确地确定机器人视野中距其最近的乒乓球的位置。
3.2 机器人运动控制
3.2.1 机器人的运动原理
机器人底盘结构及运动坐标系如图5所示。当机器人的车轮均向前转动时,各轮受力方向与图中一致;车轮向后转动时,各轮受力与图中各轮相反。机器人总受力为F=FA+FB+FC+FD。
下面对3种典型运动情况举例说明:
(1)当四个车轮同时向前或向后以同一转速运动时,F方向为y轴方向,机器人实现沿y轴向前或向后运动。
(2)当轮B和轮D向前或向后以同一转速运动,轮A和轮C的转速与轮B和轮D大小相同、方向相反时,F方向为x轴方向,机器人实现沿x轴向左或向右平移。
(3)当轮B和轮A向前或向后以同一转速运动,轮C和轮D的转速与轮B和轮A大小相同、方向相反时,机器人左侧受力为y轴方向,右侧受力为x轴方向,机器人实现原地顺时针或逆时针旋转。
本文使用STM32输出四路脉冲信号至电机驱动板,控制机器人运动;经过驱动板上四路 LV8731 驱动芯片处理脉冲信号后,将四路脉冲信号的频率分别转换为机器人四个车轮的角速度,进而控制机器人的运动,同时使用车轮上的编码器进行测速。编码器测速后,经过PID算法将机器人运动速度调节至设定速度[10],机器人到达距离乒乓球5 cm位置时,停止运动。
3.2.2 机器人底盘运动信息的接收与处理
本文通过STM32与Arduino之间的串口通信发送机器人的运动信息。机器人的运动方向有三种,分别为x轴左右运动、y轴前后运动、z轴旋转运动。Arduino发送的信息格式为[u, v, w],其中u、v、w分别表示机器人x、y、z方向的速度等级,取值范围均为[0, 28-1]内的自然数,一共256个速度等级,取值越大,速度越快。当某个参数取值为0时,代表机器人在该方向没有速度。例如发送信息为[0, 0, 1],则机器人只沿z轴方向以“1”等级速度旋转,x、y轴方向无速度。
得到速度等级u、v、w后,STM32将其转换为各方向实际速度Vx、Vy(单位:m/s)和ω(单位:rad/s)。由内部脉冲频率的设置,机器人x、y方向的最大速度为0.8 m/s,z方向的最大角速度为3 rad/s。将最大速度分为256个等级即得到每个等级的速度值:
,,
由于麦克纳姆轮的特殊结构,车轮转速与机器人运动速度不同,STM32得到机器人目标运动速度后,经过如下公式转换得到每个车轮的转速[11]。
VA=-Vx+Vy-ω(a+b),
VB=+Vx+Vy-ω(a+b),
VC=-Vx+Vy+ω(a+b),
VD=+Vx+Vy+ω(a+b)
式中:VA、VB、VC、VD分别为车轮A、B、C、D的转速,设车轮向前转动时转速为正;a、b为底盘尺寸参数。STM32根据VA、VB、VC、VD输出相应频率的脉冲波来控制四个车轮的转速。
机器人一个运动周期内的信息控制过程如下:
(1)机器人未识别到乒乓球或乒乓球不在视野中心时,Arduino发送运动信息[0, 0, 1]给STM32,机器人逆时针旋转,角速度为0.011 8 rad/s。
(2)待机器视觉模块检测到乒乓球且乒乓球在摄像头的视野中心时,即乒乓球位于y轴上时,Arduino发送运动信息[0, 5, 0],机器人按照1.57 cm/s的速度向正前方运动。
(3)待机器人运动到距离乒乓球5 cm时,Arduino发送运动信息[0, 0, 0],机器人停止运动,等待机械臂抓取乒乓球。
(4)待乒乓球放入存球筐后,重复步骤(1)。
3.3 机械臂控制
本文使用Arduino开发板控制5个舵机的转动角度,以实现对机械臂的5个自由度控制。舵机的转动角度可以通过脉冲宽度调制(PWM)进行精确控制,脉冲信号周期恒定为20 ms,不同脉冲信号宽度对应不同的舵机转动角度。对于本文采用的270°舵机TBSN-K15,其转动角度θ(单位:°)与所需脉冲信号宽度Wpulse(单位:ms)的对应关系可由如下线性方程和限制条件表述:
θ=135×(Wpulse-0.5)," " 0.5≤Wpulse≤2.5
OpenMV识别到目标乒乓球在视野正前方5 cm时,向Arduino发送字符“1”作为抓取信号;Arduino接收信号后控制5个舵机依次转动到预置的角度,以控制机械臂做出抓取动作。下面介绍预置转动角度的取值原理。
机械臂控制系统中,5个舵机分别控制1个机械爪、1个台座和3个机械臂关节。整个过程中,为了在因外界扰动等因素使机械臂偏离工作位置的情况下完成复位,增强系统运行稳定性,控制台座的舵机转动角度始终保持在0°。
机械臂接收到抓取信号后的动作分为两个阶段。第一阶段,机械臂由初始状态开始动作,完成抓取乒乓球的任务。经测试,本文采用的机械爪在舵机转动角度为135°时张开最大,转动角度为20°时可靠闭合。因此在抓取阶段,控制机械爪的舵机首先转动到135°,以张开机械爪。此后依次计算三个控制机械臂关节的舵机转动角度并控制其按此角度转动。
求取转动角度时,可将该问题等效为一个三变量几何问题,如图6所示。该等效问题中A点表示台座与机械臂关节连接点,D点表示机械爪与机械臂关节连接点,等长线段AB、BC、CD分别表示三个机械臂关节;需要求取的三个舵机转动角度分别为α、β、γ。由于该问题只有两个定解条件,即lAD已知,三个机械臂关节长度相等,均为lservo,因此设定α=45°,在此基础上求取β和γ,由α、lservo和lAD易得lBD,从而根据三个机械臂关节等长容易求解得γ,进而求得β,计算公式如下:,,至此三个机械臂关节转动角度α、β、γ已求得。
三个控制机械臂关节的舵机依次转动到α、β、γ角度后,控制机械爪的舵机转动到20°,闭合机械爪以抓得乒乓球。
第二阶段,机械臂通过动作将抓得的乒乓球放入存球筐;再求取三个控制机械臂关节的舵机转动角度,并依次转动三个舵机,此时机械爪已位于存球筐上方,张开机械爪即可将乒乓球放入存球筐。
4 测 试
在根据上文所述原理设计、组装后,对捡球机器人进行实地测试。测试共分为3个部分,即寻球和寻迹追踪,如图7(a)所示;捡球阶段,如图7(b)所示;为展示机器人工作的连续性,还展示了新的寻球和追踪阶段,即完成一次抓取乒乓球任务后机器人寻找下一个乒乓球的过程,如图7(c)所示。
5 结 语
本文设计的智能捡球机器人具有全向移动、精准识别和抓取目标的能力,具备较强的环境适应能力,拥有广阔的应用前景。特别是在乒乓球训练领域,实现自动化捡球的需求不断增加。捡球机器人的普及应用,可以有效避免运动员因为频繁捡球而出现健康问题,提升训练效率。在国家大力推动人工智能在各产业应用的背景下,本文设计智能捡球机器人将为推动体育场馆无人化运作做出贡献,也将推动智能化机器人在其他领域中的应用和发展,具有良好的市场前景和经济价值。
注:本文通讯作者为沈瑶。
参考文献
[1]谭柏轩,易向东,钟雄源,等.智能捡球小车的设计与实现[J].福建电脑,2023,39(1):97-100.
[2]范昭君. 智能控制在自动捡球机器人中的应用[J].自动化技术与应用,2020,39(5):67-71.
[3]闫慧君,韩玉彬. 移动式捡球机器人避障路径视觉反馈控制方法[J]. 机械设计与制造,2023,61(1):278-281.
[4]耿浩楠,周磊,刘新成,等.基于OpenMV的二维码检测技术在自动分拣系统中的应用[J].工业控制计算机,2022,35(12):11-13.
[5]常晏鸣,廖宇,冯志强,等.基于OpenMV的自动追踪识别仪表小车设计[J].湖北民族大学学报(自然科学版),2022,40(4):451-456.
[6]陈镇江,封潇扬.基于麦克纳姆轮的全向移动自主机器人设计研究[J].科技与创新,2022,9(22):150-152.
[7]刘静,林冲,郭世财,等.柑橘类水果采摘机器的设计与研究[J].包装工程,2019,40(17):56-62.
[8]邹浩,郭雨婷,李佳盈,等.基于OPENMV的色彩引导机器人系统研究[J].科技资讯,2018,16(25):85-86.
[9]郑南宁.计算机视觉与模式识别[M].北京:国防工业出版社,1998:155-156.
[10]陈伯时. 电力拖动自动控制系统—运动控制系统(第3版)[M].北京:机械工业出版社,2003.
[11]孙伟栋,张宇,费雄,等. Mecanum轮参数化设计和运动学分析[J].农业装备与车辆工程,2020,58(10):40-43.
作者简介:沈京烨(2002—),男,在读本科,研究方向为电气工程。
沈 瑶(1988—),女,硕士研究生,高级工程师,主要从事电路电磁场实验教学方面的研究。
收稿日期:2023-04-23 修回日期:2023-05-19
基金项目:2022年国家级大学生创新训练项目