您的位置:首页 >> 新闻中心 >> 机器人新闻

机器人新闻

  • NAO 机器人的红球识别算法

  •   近年来,机器人技术作为高新技术产业发展的代表得到了快速的进步,其中全自主仿人机器人是机器人技术的最先进代表。仿人机器人的研究工作始于1960年代,现在软银公司开发的NAO 机器人已成为世界上人型机器人的代表。该类机器人被机器人世界杯组委会定为RobotCup参赛机器人,当然是对这款机器人的认可。

      选定NAO 机器人为参赛平台可以在一定程度上反映机器人的智力水平,它主要体现在以下几个方面:识别目标对象,平衡处理,避让障碍物,感知环境以及相应事件的决策等。目前,国内外提出的许多研究算法还不够成熟,无法实现快速的目标识别定位。本文打算利用计算机视觉技术和多传感器系统来实现目标的检测定位等功能。

      NAO 机器人视觉系统

      NAO 机器人视觉系统通过分析处理摄像机拍摄的彩色图像获取有关周围环境的信息,例如通过图像处理获得机器人自己的位置以及是否有障碍物和障碍物的位置等重要信息。NAO 的两个摄像头:一个在额头上,负责距离机器人较远的地点的水平观察,视野范围宽广,另一个摄像头位于NAO 嘴部,负责距离机器人较近处的环境扫视。NAO 机器人两台摄像头的分辨率皆为640*480,两个摄像头之间的夹角为40度。系统可以提供30帧/秒的图像帧率。当机器人移动时,摄像头的水平和垂直视图跟随头部转身而改变。在实际运动中,由于系统原因,两台摄像头不能同时工作,但可以随时切换。NAO机器人拍摄和输出的图像格式为YUV422,该类图像的每个像素只占用2个字节。

      红球识别

      1 色彩空间

      目前,色彩空间通常可分为RGB空间、CMY空间、HSV空间和YUV空间等。在这四种颜色空间中,最常用的是RGB颜色空间,它是由R(红)、G(绿)、B(蓝)三种颜色组合而成,其它的颜色都由它们变换得来。但由于RGB 颜色空间没有考虑光照强度的影响,所以若采用RGB颜色空间获取图像,环境中的光照强度将会对识别产生较大影响。实验结果表明,在不同环境(物体反射特性、光源的种类和光照强度等) 下,对具有相同颜色的物体,测得的R、G、B三个分量值彼此联系,RGB颜色值很分散且波段非常宽。因此很难确定RGB颜色空间的阈值范围,从而导致漏掉本应被识别的部分物体,或者将环境中并非目标颜色的物体识别成目标。所以在比赛中,若采用RGB颜色空间,则可能会因为场地光照不均匀导致目标丢失。为加强识别效果,在高尔夫球赛中通常利用OpenCV库中cvtColor()函数将RGB颜色空间转化为HSV颜色空间。

      2 红球颜色阈值的选择

      选择红色作为识别的目标颜色,NAO 机器人自动获取并确定红色特征点的阈值,然后根据目标阈值识别获取的图像颜色。为获取其颜色特征中相对稳定的范围,应对不同成像距离和光照等环境条件下的目标颜色多次进行测量,然后将得到的稳定范围进行进一步转换。在比赛中根据转换规则直接确定目标阈值,这样不仅可以提高确定阈值效率,而且避免了当场调整阈值的不确定性和其他偶然因素的影响,从而提升机器人在比赛中的识别效果。

      3 红球识别过程

      对 NAO 机器人拍摄的图片,通过颜色识别,获取满足预设阈值范围的红色像素点。然后按下列步骤处理获取的红色点来检测红球:

      3.1 初步处理红色特征点理由:由于光照的影响,识别到的红色像素点周围会出现一些干扰噪声。这些噪声点较分散,但红球红色像素点较集中。我们通过判断红色点的相邻点,即选择周围有代表性的八个点,来判定其是否是满足条件的红色点。如果其周围有5个及以上点是红色特征点,那么我们判定该点是满足条件的红球像素点,反之判定其为噪声点。

      3.2 获得图片中的圆形NAO 机器人识别的这个物体,既是红的又是圆的。具体做法是:对采集到的每一帧图像,如图1所示,我们称为原始图,将其背景设置为(0,0,0),红色像素设置为(255,255,255)。在预处理后我们采用高斯滤波平滑图像,处理效果图如图2所示。高斯滤波实质上是一种信号的滤波器,其主要用来对信号进行平滑处理。然后采用霍夫变换检测圆形,这一步骤通过OpenCV库中的霍夫圆检测函数实现,如图3所示。

      从图中我们可以得到以下信息:处于图片下方的红球都能被较好的识别,同时确定球心的位置,且上面一颗干扰绿球也被还原成了绿色。通过上述步骤已经完成了NAO对目标红球的识别以及定位。

      红球识别具体实现过程如下:

      1)获取图像;

      2)通过颜色空间的转换:将BGR颜色空间转换为HSV颜色空间;

      3)高斯模糊:利用OpenCV中的GaussianBlur()函数进行高斯模糊,让局部信息模糊;

      4)图像二值化:利用inRange()函数进行图像二值化(由于红色对应的HSV的区间范围有两个,所以在代码实现上用了“并”操作);

      5)红球筛选:霍夫圆检测筛选符合条件的红球;

      6)是否检测到符合条件的红球?是到7),否到1);

      7)返回红球在图片中的坐标。


客户服务热线

13602858842

在线客服