陈志鹏,徐广涞,陈显扬,陈韵律,陈西明,李德荣*
(1.广东海洋大学 电子与信息工程学院,广东 湛江 524088;2.广东海洋大学 机械与动力工程学院,广东 湛江 524088)
在生产制造业中,物料分拣机器人成为了产业中承担物料分拣任务的重要一环。机器人所执行的物料分拣任务是将生产线上传输的产品或原材料通过机器视觉或传感器等方式加以分类或甄别[1]。
该文在2019年广东省工科大学生实验综合技能竞赛的背景下,设计出一种基于OpenCV的物料分拣搬运机器人,可通过视觉算法识别出赛场元素,自主拾取物料并以特定方式投放至储存区,任务执行高效而准确。
(1)机器人须有手爪且为整体制作。
(2)机器人需完全自主运行,不得与外界通讯。
(3)比赛场地设有机器人出发区、物料投放区、物料储存区、物料发射区。物料投放区为地面上白色正方形区域,物料储存区为粉红色收集筐,物料发射区为三个400 mm大小的圆形区域,与发射区距离相同。场地示意图及具体尺寸如图1所示。
(4)物料为红色或蓝色直径为40 mm的乒乓球,在比赛开始前从物料投放区被放出,随机滚到场地任意位置。机器人从出发区出发,在给定时间内进行特定颜色的物料抓取,并移动至发射区将物料投入物料储存区中,过程中不得储存球。其中蓝球与红球各20个。
图1 场地示意图
物料分拣搬运机器人的结构设计上包含行走结构、图像采集结构、物料发射结构、机械臂。结构各部分协调配合,使得机器人工作稳定高效。物料分拣搬运机器人三维建模图如图2所示。
1、直流电机; 2、电机驱动; 3、机械臂 4、树莓派; 5、集球漏斗;6、摄像头;7、数字舵机; 8、摩擦轮; 9、全向轮
(1)行走装置。
装有全向轮的电机在底盘上呈圆周分布,能实现原地旋转与全方位移动,旋转角度控制精度高,能够完成复杂的路线。
(2)图像采集结构。
摄像头通过3D打印件进行开槽限位和压盖连接的方式安装在可两个自由度的摄像头云台上,云台安装于由铝棒作为支撑的亚克力平面上,保证了摄像头充足的视野以及摄像头转动的流畅性。
(3)物料发射结构。
采用一对摩擦轮电机组与水平面成一定角度,当其以不同速度转动时,可将从集球漏斗中滑出的球形物料射出到不同位置。
(4)机械臂。
由于规则要求手爪设计一体化,基于球形物料形状,采用包夹式的结构,由齿轮直接与爪子相连构成一体化手爪,通过齿轮副转动来实现夹持动作。小型大扭矩舵机连接U型支架,使机械臂能够翻转,便于机器人对物料进行颜色复查以及将物料放入漏斗进行物料发射。机械臂设计如图3所示。
图3 机械臂设计
选用STM32F407ZGT6芯片及相关器件构成主控制系统,众多IO口便于驱动机器人外设。主控系统支持多种通信接口,便于与树莓派交互数据。
采用树莓派4B与120 fps摄像头构建识别系统。树莓派4B是一款微型单板计算机,具有多种通信接口以及丰富的网络功能,方便与主控制系统进行通信连接;高性能博通A72处理器以及4 GB的运行内存为基于OpenCV的实时图像识别功能奠定了基础;树莓派一般搭载Linux系统,适合嵌入式开发[2]。综合考虑树莓派的运算能力及图像质量,选用帧率为120 fps的USB摄像头,图像尺寸480×320像素。
机器人首先在场地的任意位置自转寻找物料,如果发现目标则靠近并抓取。抓取之后检验颜色是否正确,若正确则自转寻找物料发射区,找到发射区并移动至发射区,此时再自转寻找物料收集区,找到并对准物料收集区进行物料发射动作。执行完以上步骤则为一个流程,重复该工作流程直至场地无物料或既定时间结束,则流程结束。控制程序流程如图4所示。
图4 控制程序流程
OpenCV是Intel公司开发的开源计算机视觉算法库[3],拥有丰富的函数功能以及强大的图像和矩阵运算能力,且具有平台无关性和程序运行的实时性,因而成为了机器人实时识别算法库的最佳选择[4]。
识别系统在硬件上包含树莓派4B与120 fps摄像头,软件部分上则为基于OpenCV设计面向具体任务的识别算法。识别系统的运行受主控制系统控制。
为满足机器人的功能要求,识别任务有四种,分别是识别球型物料、识别物料发射区、识别储存区和颜色复查。由于目标的主要特征之一是颜色,所以所有识别任务的第一步都是经颜色分割生成二值图。对于不同的任务,第二步一般有所不同,但输入均为二值图,除了“颜色复查”外,输出均为坐标值。识别算法可能的执行路径如图5所示。
在如今的颜色分割算法的设计上,往往将灰度图像分割方法应用于不同的颜色空间,并且可直接应用于每个颜色分量上,其结果再通过一定的方式进行组合,即可获取最后的分割结果[5]。
图5 识别算法整体流程
采用颜色阈值二值化的方法对彩色图像进行颜色分割。在三维直角坐标系中,由一组颜色阈值上下限包围的空间是一个长方体,长方体内每个点的坐标对应一组颜色值[6-7]。HSV或Lab颜色空间用于描述人眼对颜色感受,由阈值上下限形成的长方体中更多地包含了目标的颜色,且更少地包含了其他的颜色。相对于RGB颜色空间,由于在实际中操作中,RGB颜色表示容易受到强光、弱光、阴影等因素的影响,因而选择在HSV或Lab颜色空间中进行颜色分割[8]。
由于OpenCV默认采用BGR颜色空间,所以读取图像后先将图像转换到HSV或Lab颜色空间,并使用inRange函数将图像二值化,最后经形态学操作去除噪声,完成颜色分割。对于各识别任务,转换到HSV还是Lab空间由实验效果确定。物料颜色分割效果如图6所示。
图6 物料颜色分割效果
颜色分割将具有特定颜色的区域筛选出来,对于这些区域,提取轮廓并考察其几何特征进行进一步筛选,从而识别出目标。
轮廓检测是基于在区域边缘上的像素灰度变化比较剧烈,试图通过检测不同区域的边缘来解决图像分割问题[9]。
利用findContours()函数提取出二值图中的所有轮廓,然后用相关函数求出轮廓的几何参数[10]。二值图中尺寸最大的区域往往就是目标,则轮廓的最小外接圆半径最大的区域就是目标。对于球型物料来说,由于近大远小,轮廓的最小外接圆半径最大的区域往往是最近的球型物料。于是,利用轮廓的几何特征即可将目标识别出来。如果识别到目标,输出的坐标为目标最小外接圆的圆心坐标,如果没有识别到目标,输出的坐标为(-1,-1)。
对于识别球型物料的任务,由于场地上存在多个目标,所以一经识别立即通过CAMshift跟踪算法将其“锁定”,直到物料跟踪任务完成;若跟踪过程中目标“丢失”,便重复识别到跟踪的步骤。
mean-shift算法的思想是,任意给定一个初始窗口,使目标的部分区域落在窗口内,然后逐步移动窗口,直到窗口中心与目标的质心重合(在给定精度内)[11]。由于运动可能导致物体大小的改变,因此衍生出CAMshift算法[12],该算法在mean-shift的基础上,可以自动更新窗口的大小和朝向以适应物体的变化[13]。
图7 窗口尺寸对跟踪效果的影响
为达到更好的目标跟踪效果,需要进一步调整窗口的尺寸。为了说明这个问题,考察如图7所示的运动。第一帧中,物料位置如图(a)所示,使用CAMshift算法计算左侧物料所在的窗口,将其在图中画出,可知窗口尺寸正好贴合目标。将第一帧得到的窗口作为第二帧输入跟踪算法的初始窗口。第二帧的情形如图(b)所示,如果运动速度过快,则物料可能运动到窗口之外,导致目标跟踪失败。而如果将第一帧得到的窗口尺寸扩大为原来的1.6倍,再作为第二帧的初始窗口,则第二帧中左侧物料仍有一部分落入其中,如图(c)所示。画出第二帧中扩大后的初始窗口和CAMshift算法给出的新窗口,可看到,实现了良好的跟踪效果。若目标附近存在其他物体,过大的窗口尺寸又容易导致最终窗口中心与二者共同的质心重合,造成“连体”现象。如图(d)所示,第二帧中,初始窗口尺寸扩大为原来的2.1倍,结果附近的物料也有部分落入其中,导致计算出的新窗口将两个物料都包含在内。经过试验,窗口尺寸扩大为原来的1.2至1.5倍为宜,同时限制窗口的最大尺寸。
为了判断是否抓取到正确的物料,由主控制系统发送一条指令和物料的坐标,识别系统检查该坐标附近的颜色。采用前一识别任务的阈值作颜色分割,因此对于正确颜色的物料,二值图中该坐标附近的像素应为白色。实际做法是计算给定坐标周围一定区间内,白色像素点所占的比例,以应对因二值图质量不佳的情况。
机器人通过网页实时显示机器人在工作时对目标的识别效果以及实时参数信息,方便在调试时进行参数的调节;机器人的主从通信即为以STM32为核心的主控制系统与作为从设备的树莓派之间的通信[14],主要为指令以及坐标的收发。
在OpenCV项目开发中,将图片用imwrite()函数保存,经服务器程序可在网页上显示出该图片。
采用Flask框架编写服务器程序[15],响应静态页面。利用HTML和JavaScript构建网页,每隔20 ms至50 ms向服务器请求图片并显示。局域网内的设备均可通过浏览器看到实时图像。
实际运行时,树莓派与手机或电脑通过连接同一Wi-Fi而处于同一局域网,启动服务器程序后,使用手机或电脑的浏览器内访问微型网站,即可看到实时图像。。
机器人识别系统与主控制系统通过串口交互[16]。基于分层的思想,设计了两层通信协议。底层采用串口通信协议,用于收发ASCII字符。在ASCII可见字符的基础上,约定数据帧的格式为:
在实验场地模拟实际比赛环境,机器人在场地内分拣与搬运随机洒落在场地的红色与蓝色物料,并定时2分钟,计算机器人在此时间内分拣并投入的到物料收集筐中的物料数目。首先对蓝色物料进行分拣搬运实验,实验结果如表1所示。
表1 蓝色物料识别搬运数目情况
同样,在相同环境下,对红色物料进行同样的分拣搬运实验,实验结果如表2所示。
表2 红色物料识别搬运数目情况
从以上的实验记录可以观察出经过多次实验并针对机器人自身痛点进行不断优化,机器人识别精度达到97%,在效率上平均每个球形物料分拣搬运时间为7.64秒,足以满足比赛精度及效率需求。机器人实物如图8所示。
图8 机器人实物
文章以大学生学科竞赛为背景,提出了一款基于OpenCV的物料分拣搬运机器人的设计。该机器人的主要核心技术是对物料以及场地环境的识别。在识别算法开发上,花费的时间最多,从简单的物料分拣到物料发射,整个识别流程的算法改进许多遍,从光流跟踪到CAMshift算法,经过了许许多多科学的计算,深刻明白了机器人自动化一切源自数学物理方法。该机器人在物料分拣搬运的任务中,准确率较高,在特定场合下加以改造,便可应用于各种工作环境的各种物料分拣与甄别工作。所设计的基于OpenCV的物料分拣搬运机器人在2019年工科大学生实验综合技能竞赛中,荣获一等奖。