缩略图

基于机器视觉的乒乓球捡球机器人设计

作者

赵俊皓 董海浩 闫博 赵利坤 赵晨

哈尔滨华德学院 汽车与建筑工程学院 黑龙江 哈尔滨 150040

摘要: 设计一款智能乒乓球捡球机器人通过 OPENMV 机器视觉模块和 STM32 单片机进行图像采集与处理,根据图像中乒乓球的 Lab 颜色特征,寻找图像中最大的色块,得到乒乓球的位置坐标,将位置坐标打包发送至 STM32 单片机,通过控制电机驱动,使得机器人运动到小球附近,通过夹取式捡球装置对乒乓球进行收集。为了避免机器人对训练时的运动员造成干扰,为机器人设计了避人系统,使其在工作时能够避开运动员,以免影响到运动员的正常训练,从而提高工作效率。

关键词:捡球机器人;机器视觉;自主导航;避障

1 引言

众所周知,乒乓球是一种世界流行的球类体育项目,而我国是乒乓球运动的大国和强国。但是捡球是一种让人非常头疼的事情,乒乓球爱好者在练习乒乓球时,往往练得满地都是,劳累的运动员弯腰捡球既费时又费力。现在的乒乓球直径40.00毫米,其重量为2.6-2.8克,比较轻,不太容易捡拾。每当要捡起一个乒乓球的时候,捡球的人就要弯一次腰,对于长期从事这项工作的人来说是一个很大的身体负担。

作为人工智能的一个分支,机器视觉逐渐应用到各个领域。针对乒乓球训练场地捡球工作量大的问题,设计了基于机器视觉的自动捡球机器人。设计通过 OPENMV 机器视觉模块和 STM32 单片机进行图像采集与处理,根据图像中乒乓球的 Lab 颜色特征,寻找图像中最大的色块,得到乒乓球的位置坐标,将位置坐标打包发送至 STM32 单片机,通过控制电机驱动,使得机器人运动到小球附近,通过夹取式捡球装置对乒乓球进行收集。为了避免机器人对训练时的运动员造成干扰,为机器人设计了避人系统,使其在工作时能够避开运动员,以免影响到运动员的正常训练,从而提高工作效率。

基金项目:黑龙江大学生创新训练省级一般项目   项目编号:S202413307067

作者简介: 赵俊皓(2003年),男,黑龙江,本科生,研究方向:智能机器人设计

2 智能乒乓球捡球机器人总体框架

智能捡球机器人自动追踪分为舵机云台追踪和小车追踪两部分,均采用PID控制。通过云台和小车同时追踪(实际使用时关闭舵机云台左右追踪,避免和小车左右运动有冲突);使得小车到达目标区域,通过目标的距离参数阈值进行机械臂夹取判断,采用取多次距离参数和纵向误差参数获得夹取时机,当达到可夹取状态时,进行目标夹取,夹取后将机械臂抬起并防止在收集框中,然后机械臂恢复到中位,接着小车向后运行一段时间,继续寻找下一个目标。

智能捡球机器人采用全局路径规划(global_planner)结合本地实时规划(local_planner)。在导航中,使用 Dijkstra 或 A*算法进行全局路径的规划,本地实时规划使用 TEB(Timed Elastic Band)算法搜索躲避和行进的多条路经,综合各评价标准(是否会撞击障碍物,所需要的时间等)选取最优路径。

采用gmapping 算法构建小场景地图所需的计算量较小且精度较高。该设计总体框架方案如图1所示:

3 硬件方案设计

3.1 硬件主板

主控兼容stm32H743/H750/H7B0等系列MCU主控芯片,主频480M,RAM为1MB分散架构,实际可用python代码运行内存256KB,可用图像/数据缓冲400KB,外置8MB-nor-flash作为程序存储器,可用于保存python运行代码,驱动方式为QSPI,预留SD卡槽,支持32MB micro-SD卡;采用type-C USB接口,数据稳定不易掉线。

3.2 外设引脚

外部引脚皆采用2.54排针设计,方便接线,所有外部引出引脚均采用stm32引脚标号方式,并和micro-pyhthon中程序设置引脚方式保持一致,按照单片机方式配置引脚功能,直接对接芯片数据手册。

3.3 电源设计

MCU主电源芯片采用XC6210B332MR高性能LDO线性稳压器,SOT25封装,3.3V0.7A输出,峰值可达1A;两级保护设计,第一级采用肖特基二极管,电源防反接保护,第二级采用自恢复保险管做过载保护;外部所有5V引脚皆可作为主板电源输入端。

3.4 金属小车底盘

小车底盘采用全铝合金底盘制造,坚固耐用,可搭配普通TT马达48:1减速比,或者全金属款TT马达,72:1减速比,通过组装不同的轮子可制作普通两轮+万向轮小车;或者四轮履带车,但控制方式皆采用两轮控制。

3.5 三自由度机械臂

采用3路舵机安装,底部为两轴pfv云台,采用2个MS90s金属舵机安装,扭力更大稳定性也更强;上部机械爪采用SG92R舵机安装,稳固性比SG90更好,材质为全3D打印,机械爪通过两个铜螺柱及长螺丝固定,另外在机械爪背部可安装摄像头支架,直接采用长螺丝固定在机械爪上,便于安装openmv摄像头。

3.6 电源电机驱动一体化设计

电源板和电机驱动采用一体化设计方式,使用两路单独的LM2596S电源芯片,一路作为电机驱动的电源输入,另外一路作为外部电源输出,电源输入范围7-15V,可直接采用2节或3节18650锂电池供电;电机驱动采用两路RZ7899驱动芯片,宽电压输入3-15V,最大输出电流可达5A,输入端采用2.54x4pin输入接口,可直接对接openmv的PWM引脚。 电机驱动具有急停,过载保护,短路保护等功能 。具有多路5V输出口,可提供5V3A输出能力;外部接口均采用标准2.54x2插头接口,无需焊接均为直插接口。 电源板具备免拆卸充电能力,可将2节或3节锂电池直接接入后,采用DC-5.5-2.1电源接头接入充电端口。

4 软件系统设计

4.1 OPENMV自动追踪

自动追踪分为舵机云台追踪和小车追踪两部分,均采用PID控制。

(1)舵机云台追踪采用小球的横向和纵向误差累积计算PID输入,误差来自小球实际坐标与图像中心位置的偏差,通过PID控制使摄像头正对小球目标;

(2)小车追踪采用小球的距离参数和横向误差做前后左右追踪,距离计算需要根据摄像头内参(焦距,像元尺寸等参数)计算小球距离摄像头的距离,根据距离远近控制小车行驶到目标位置,并通过左右误差控制小车左右轮修正位置;

(3) 当小车运行到目标区域时,可进行捡球操作,实现自动夹取和放置功能。

4.2 算法流程

(1)电机驱动,舵机驱动,摄像头进行初始化

电机驱动采用4个引脚复用成PWM功能,输出1KHz的PWM波形

舵机驱动采用openmv底层servo库,PD12-PD15对应SERVO1-4

摄像头初始化包括复位,分辨率,图像格式,翻转镜像等,特别注意采用颜色识别算法需要关闭自动增益和白平衡;

(2)openmv 颜色识别追踪

颜色阈值采用黄色乒乓球,设置像素阈值为500,即低于500的像素目标不做识别,寻找最大色块得到坐标信息,然后通过计算色块的距离得到目标的距离参数;通过坐标信息计算舵机PID追踪,通过距离信息和横向误差计算小车追踪;

(3)自动夹取

通过云台和小车同时追踪(实际使用时关闭舵机云台左右追踪,避免和小车左右运动有冲突);使得小车到达目标区域,通过目标的距离参数阈值进行机械臂夹取判断,采用取多次距离参数和纵向误差参数获得夹取时机,当达到可夹取状态时,进行目标夹取,夹取后将机械臂抬起并防止在收集框中,然后机械臂恢复到中位,接着小车向后运行一段时间,继续寻找下一个目标。

5 导航避障功能设计

根据智能捡球机器人所要实现的功能,主要搭建以下几个重要节点:

(1)建图节点

Gmapping功能包通过订阅智能机器人的深度信息并融合IMU与里程计信息,配置完一些必要的参数后,即可创建基于概率的2D栅格地图。Gmapping功能包与Hector SLAM相比鲁棒性高、对激光雷达频率要求低,在构建地形平坦且空间较小的环境下建图效果比较好且所需计算量较小,需要里程计数据。缺点为对于地面不平坦或大的场景以及无人机的应用,尤其场景涉及粒子较多的情况下不太适用。Gmapping功能包集成了Rao-Blackwellized粒子滤波算法,为开发者隐去了复杂的内部实现。Gmapping功能包的总体框架如图2所示。

(2)导航与定位功能包节点

针对实现导航功能的关键路径规划与机器人定位,ROS提供了两个功能包实现其功能。

move_base功能包在ROS机器人导航中首先对全局路径进行规划,计算出机器人当前位置与目标位置之间的全局路径。navfn功能包通过 Dijkstra最优路径算法,计算在地图上所实现目标路径最小的消耗成本,从而实现全局路径规划。本地实时路径规划通过base_local_planner 功能包使用Dynamic Window Approaches和Trajectory Rollout计算机器人每个周期内的行驶速度和角度。 base_local_planner 功能包通过所建立的地图数据及算法搜索到多条到达目标的路经,判断是否会撞击障碍物以及预估所需要的时间等因素,从而选取最优的路径。

acml定位功能包采用蒙特卡洛定位方法升级版,使用自适应的 KLD 方法来更新粒子。

6 智能医疗服务机器人实验

基于以上设计构建的智能捡球机器人如图4所示:

6.1 寻球与捡球实验

在虚拟机中运行follower_lidar follower_lidar.launch命令,机器人即可实现如图5所示对乒乓球的动态寻找与夹取功能。

7 结语

本文设计了一款智能捡球机器人通过 OPENMV 机器视觉模块和 STM32 单片机进行图像采集与处理,根据图像中乒乓球的 Lab 颜色特征,寻找图像中最大的色块,得到乒乓球的位置坐标,将位置坐标打包发送至 STM32 单片机,通过控制电机驱动,使得机器人运动到小球附近,通过夹取式捡球装置对乒乓球进行收集。为了避免机器人对训练时的运动员造成干扰,为机器人设计了避人系统,使其在工作时能够避开运动员,以免影响到运动员的正常训练,从而提高工作效率。

参考文献

[1] 谭柏轩,易向东,钟雄源,林镇伟.智能捡球小车的设计与实现[J]. 福建电脑,2023(01)

[2] 胡春旭,熊枭等.基于嵌入式系统的室内移动机器人定位与导航[J].华中科技大学学报(自然科学版),2013,41(S1):254-257.

[3] 表允晳 赵汉哲等 ROS机器人编程[M].韩国:ROBOTIS Co., Ltd.,2017.

[4] 李宏达.基于ROS的自主导航机器人设计[D]. 哈尔滨师范大学硕士学位论文,2021.