APP下载

基于OpenCV与NAOqi库的NAO机器人点球决策

2021-12-01陈泽宇

长春大学学报 2021年10期
关键词:掩膜点球踢球

冯 萍,陈泽宇

(长春大学 计算机科学与技术学院, 长春 130022)

机器人点球大赛是由软银组织的面向本科生、研究生的开放比赛。NAO 机器人作为 robocup 标准平台组的比赛机器人,被广泛使用于各大学间的机器人足球比赛。在比赛中,参赛者需使用设定好的程序,使NAO机器人自主完成在模拟足球场地上的点球射门;主要考察参赛者对NAO机器人的控制技术以及对足球的精准识别和进攻策略。传统的NAO机器人点球比赛普遍存在着足球识别不准确、决策速度慢且无法进行微调操作、机器人与草坪摩擦过大导致的摔倒问题等。文章就以上几点进行分析及解决。

1 NAO机器人视觉及移动控制系统

NAO机器人的视觉模块通过对摄像机拍摄的彩色图像处理来获取环境的相关数据信息,进而判断机器人与球的相对位置,为机器人移动提供决策依据。NAO机器人有着极高的自由度,如图1所示,通过对机器人关节的相对角度的控制以及官方提供的API接口来实现对其移动控制。

图1 NAO机器人的相关关节

NAO机器人的两个摄像头一个位于额头上,负责机器人水平方向的视野;另一个位于嘴部,负责机器人脚下近处的观察,分辨率皆为640*480。由于系统原因,两个摄像头不可同时开启,但可做到随时切换。主要使用下摄像头来进行图像的捕获。

2 足球识别

2.1 色彩空间

在最常用的RGB的色彩空间中,色彩均由R(红)、G(绿)、B(蓝)3种基础颜色组合变换而来。但在摄像机实际拍照时,会有不同场景不同光照的情况,使用RGB颜色空间会产生一定程度上的误差。相关结果表明,在不同环境(光源种类、光照强度等)下,对相同颜色的物体,测得的RGB值很分散而且波段非常宽。因此很难选取到合理的RGB值,识别的泛化性很差。故在比赛中选取RGB色彩空间进行识别可能会出现因环境引起的漏识别、错识别。为增强识别的泛化性以及准确率,选用HSV作为图像处理的色彩空间。在对图像进行处理前使用OpenCV下的cvtColor()方法将RGB空间转化为HSV空间。

2.2 足球颜色阈值的筛选与组合

2.2.1 掩膜操作进行足球颜色阈值的选择

在点球比赛中,足球的成功识别是赢得比赛的基础。而足球识别中的足球由黑白两色组成,一直都是识别的难点。部分选手选择使用NAO的红外装置对球进行定位,解决了对足球颜色识别的难题,但定位准确率较低。我们采用OpenCV中的掩膜操作,并通过TrackBar来分别找出足球中白色部分、黑色部分对应的阈值解决了这个问题,识别效果如图2、 图3所示。

HSVH(min)H(max)S(min)S(max)V(min)V(max)白048425599255黑01790255092

图2 对足球中的黑色进行掩膜 图3 对足球中的白色进行掩膜

2.2.2 足球颜色的组合

在完成了对足球上黑白两色的筛选后,将这两张提取颜色的图片拼接,使用cv2下的inRange方法分别得到对应白色与黑色的灰度图,然后利用cv2.add完成两张图片的拼接,目标区域为255(白色),无关区域为0(黑色),效果如图4、图5、图6所示。

图4 白色部分inRange后的二值图 图5 黑色部分inRange后的二值图 图6 图片拼接后的结果图

3 圆形的识别与相应的处理

要使NAO机器人识别足球,不仅要识别足球的颜色,同时也要识别足球的形状,在找到足球的颜色阈值的基础上,对符合颜色阈值的图像进行形状检测。应用高斯滤波,腐蚀膨胀技术进行平滑去噪,最后采用霍夫变化检测圆形。

3.1 高斯滤波

在完成掩膜操作后,仍存在小部分干扰图像识别的噪声,为防止其影响图像识别的准确率,采用高斯滤波减少噪声的干扰。

(1)

式中,δ为在程序中指定的sigmaX,f(x)则为各个点经过处理后的权重,指定δ为1.5,经过处理后得到图7所示效果。

3.2 腐蚀、膨胀

在高斯滤波后,仍存在部分干扰噪声,使用腐蚀操作进一步去除图形中存在的椒盐噪声点,并使用膨胀操作强化局部最大值较大的区域。经过处理后得到图8所示效果。

图7 高斯滤波后的图像

图8 经过腐蚀膨胀后处理的图像

3.3 霍夫圆检测

在霍夫变换方法中,首先使用Canny方法对图片中的圆形进行筛选,然后经过霍夫变换,将圆内的点转换到霍夫空间。转换方程如下:

x=x0+rcosθ;y=y0+rsinθ,

(2)

式中,x0,y0为圆的圆心坐标,r为圆的半径,且对于圆来说,θ的范围为0°~360°。

在此方法中,圆内的每一点都有成为“圆心”的可能,故需将圆内每一点都映射到由x0,y0,r组成的三维空间中,由于霍夫线变换需要更多的计算消耗,所以采用霍夫梯度法来对圆进行检测。

霍夫梯度法通过遍历圆内的每一个点,并计算其模向量,即垂直于该点并且经过该点的切线的垂直线上,这些圆上的模向量的交点就是圆心。根据某一点上模向量焦点的多少,来判断这点是否为圆心。

综上所述,对于足球识别的具体实现过程如图9所示。

图9 足球识别算法流程图

(1)通过摄像头获取图像信息;

(2)变换色彩空间,由RGB转换为HSV空间;

(3)二值化图像:根据预设好的白、黑阈值参数,对图片分别进行inRange(),然后进行拼接,得到二值图;

(4)对二值图进行高斯模糊,使用OpenCV中的GaussianBlur()函数,并使用erode、dilate对图像进行进一步的处理;

(5)足球检测:通过霍夫圆检测来筛选视野里是否出现足球;

(6)是否检测到足球?是到(7),否到(1);

(7)返回足球在图片中的相对位置。

4 总体策略设计

4.1 移动控制

在点球比赛中,进攻方与球的距离相距1 m,由于上摄像头像素较低、视野范围较大,对足球的定位以及识别都存在诸多不利(足球相对较小,占用系统计算资源等),所以选用视野范围相对小的下摄像头,先调用NAOqi中的angleInterpolationWithSpeed()方法对机器人的头部headYaw进行角度调整,使机器人在行走的过程中处于低头的状态,下摄像头的视野范围可以监控到NAO脚步附近的各种情况。由于比赛场地为8 mm的标准草坪,使用moveTo()方法进行行走会导致机器人不稳,在机器人脚上缠绕报纸,减少了与草坪的摩擦,使机器人可以正常地行走。

4.2 踢球动作的调用

由于点球位置与球门相距1.5 m,需要设计一个有力的踢球动作。使用Choregraphe中的时间线储存一套合适的动作,然后传输到机器人内。如图10所示。

图10 Choregraphe中编写的踢球动作

在程序中创建一个ALBehaviorManger代理,然后在成功识别足球且根据策略需要踢球时,通过代理启动这条时间线,完成踢球动作。使用多线程的方式,将ALBehaviorManger封装其中,并编写启动函数为其启动。

4.3 策略

当摄像机回传的画面中出现足球时,根据足球在图像中的相对位置,对乙方机器人以及守门员的位置进行微调,寻找合适的角度进行踢球。具体流程如图11所示。

图11 程序的具体流程图

5 结语

针对机器人点球比赛中目标识别困难、草地摩擦力过大等问题,分别采用掩膜+图像拼接和物理降低摩擦力的方法得以优化,并提出了一套包含移动控制,点球决策的完整的点球体系。由视觉模块获取数据,应用策略来控制球不同位置下机器人的移动行为,并通过ALBehaviorManager模块来调用Choregraphe中的时间线来实现踢球,使点球比赛更具准确性。经实验测试,在正常的灯光照射下,机器人可以正确识别球,完成射门的准确率在97%以上。且通过此程序参加本地区的点球比赛并以优越的性能取得了一等奖。

猜你喜欢

掩膜点球踢球
利用掩膜和单应矩阵提高LK光流追踪效果
踢球
一记点球 一次突破
宽周期掩膜法HVPE侧向外延自支撑GaN的研究
学习、踢球两不误
索罗斯的背痛和梅西的点球
光纤激光掩膜微细电解复合加工装置研发
像梅西那样踢球
在镜像投影曝光机上使用相移掩膜提高解像力的初步研究
两猴踢球