张青春,姚 胜,郭振久,何孝慈
(淮阴工学院自动化学院,江苏 淮安 223003)
随着工业生产越来越自动化、智能化,工业机器人的应用也越来越普遍。机械臂作为机器人的分支之一,在工业生产中发挥着重要的作用,机械臂与机器视觉的结合使机械臂得到更广泛的应用,机械臂抓取物料的速度和精度问题一直都是研究的焦点。在图像处理方面,对目标识别和定位时间的快慢直接影响机械臂的工作效率[1-3]。
机械臂在抓取物料的过程中,对物料的识别和定位是机械臂抓取系统的关键问题。在实际物料抓取时,系统会面临一些结构化的和复杂的外部环境,为使系统具有从未知环境中获取信息的能力,需要给机械臂配备摄像头模块,单目和双目摄像头模块作为机械臂的眼睛,单目视觉建立全局空间定位模型,实现目标的定位和障碍物的识别,同时将摄取的环境信息上传至上位机[4]。双目视觉摄取的左右图像经过极线校正,使图像的每一行像素处于同一水平线上,然后基于改进的BM立体匹配算法,完成目标的空间定位,然后将目标的三维信息传转换为驱动参数递给机械臂,驱动机械臂抓取目标。
基于AR技术机械臂物料抓取系统的硬件主要包括机械臂、单目摄像头模块、双目摄像头模块、WiFi模块等。系统硬件框图如图1所示,系统实验硬件搭建图如图2所示。
图1 整体硬件架构图
图2 系统实验硬件搭建图
机械臂由支架和舵机组成。采用6个型号为ZX361D的总线舵机,其供电范围为5~8.4 V,舵机准确度为0.24°,具有四种舵机模式和四种马达模式,舵机模式为180°/270°顺逆转动四种,马达模式为定圈/定时顺逆转动四种,拥有15 kg/cm扭矩,满足系统实验需求。在夹爪的止推轴承处安装压力传感器,通过压力传感器调节夹爪的抓力。
系统中有两个摄像头模块,分别为单目摄像头模块和双目摄像头模块。其中,单目摄像头获取目标及目标周围空间信息,建立全局空间模型,实现目标物粗定位与障碍物识别并将摄取的环境信息上传至上位机;双目摄像头模块根据双目测距原理计算出目标的深度信息,将目标的位置信息转化为世界坐标[5]。
系统采用飞凌RK3399嵌入式计算机,其核心板基于瑞芯微公司的RK3399处理器设计。具备2个ARMCortex-A72内核,主频1.8GHz;4个ARM Cortex-A53内核,主频1.4GHz;GPU采用Mali-T864,支持 OpenGL ES 1.1/2.0/3.0/3.1,OpenVG1.1,OpenCL,DX11;板载2 GB LPDDR3 RAM,16 GB eM-MCROM。在主板上装有2.4 GHz和5 GHz双频WiFi模块,传输速度在433 MB/s以上,满足系统需求。
系统的软件部分的设计包括单目视觉程序,双目视觉程序和机械臂控制程序。系统收到开始指令后,开始工作,首先进行软硬件初始化,接着,启动单目视觉程序,首先对单目摄像头进行标定,接着获取环境信息,建立全局空间定位模型,实现障碍物的识别和基于颜色特征检测对目标的粗定位,同时将环境信息上传至上位机,上位机界面如图3所示;双目视觉程序启动,双目摄像头开始采集图像,采集后的图像经过极线校正操作得到在同一水平线上的左右视图,缩小匹配的区域,接着进行BM立体匹配,通过三维重建获得目标的三维坐标,并将目标位置三维坐标转化为世界坐标系坐标,完成对目标定位。获取目标位置信息以后,将目标信息传递给嵌入式计算机,输出对应的控制参数,并通过USB串口将数据传输给机械臂系统,驱动机械臂系统的执行机构动作,从而完成对目标的抓取,再将目标放到设定好的区域。图4为系统流程图。
图4 系统流程图
目标物在一个平面内活动,将这个平面定义为世界坐标系中Zw=0的平面。此时,通过以下变换将像素坐标系转换到世界坐标系:
2.3.1 双目测距原理
如图5所示,将目标P看做质点且P在相机视线范围内,分别将左右两个相机的光心标记为OL与OR,p和p'为点P在左右相机感光器上的成像点,相机的焦距为f,两个相机的中心距为B,点P在左右相机成像的图像坐标的XL和XR,目标P到两个相机光心连线的距离Z为需要计算的深度信息[6-7]。设点p'到点p的距离为dis,则:
图5 双目测距原理图
根据相似三角形原理可得:
2.3.2 极线校正
在双目视觉中,存在一个重要的几何关系即极线几何,如图6所示,将左右相机的光心记为OL与OR,OL与OR之间的连线为基线,记为B,空间中的一点M与两光心构成的平面为极面π,极面π与左右图像所在平面之间交线称为极线。点M向点P处移动,点P在左右视图上的极线与点M的极线的交点为极点el、er。同时,el和er也是基线与左右各自成像平面相交的点[8]。
图6 极线约束原理图
系统采用bouguet算法进行校正,经计算得到R1,T1与R2,T2,R为旋转矩阵,T为平移矩阵。左右图像经过分解得到的旋转和平移矩阵变换后,重投影共同面积最大,使图像的失真率在可控范围内。具体步骤如下:
首先旋转左右相机,使左右相机的光轴平行。公式如下:
构造 e1。其方向与左右相机投影中心的平移向量方向相同,所以:
e2为图像平面方向的向量,方向与主光轴方向正交,沿图像方向,与e1垂直,则通过e1与主光轴方向的叉积并归一化获得:
最后,整体旋转变换矩阵为各自的旋转矩阵与变换矩阵乘积。经过整体旋转变换矩阵变换,左右相机光轴平行,基线与成像平面也平行。公式如下:
2.3.3 BM立体匹配算法
根据极线约束原理,校正后的左右图像的对应极线在同一水平线上,因此,可以在左视图中选取模式目标,在同一水平线上的右视图中寻找匹配点。立体匹配算法根据算法特点可以分为局部、全局、半全局和基于深度学习的立体匹配算法。其中局部立体匹配速度快,根据系统的功能需求选用属于局部立体匹配的BM匹配算法[9]。
1)BM匹配算法原理
坏像素规则:若发现尾位的像素值不相等,则按如下两种情况讨论:
a.若末位的像素值在模式P中没有出现,则将模式P向右移动m位;
b.若末位的像素值在模式P中出现,则将在模式P中出现的最右位置与该像素值对齐。
好后缀规则:若尾部已有两个或两个以上的像素已匹配,则按如下两种情况讨论:
a.若在P中t至m处的像素值已匹配,已匹配部分记为P',且P'在1至t中也出现,t–1处的像素点不匹配,则将P右移到1至t中出现的P'与待匹配像素组中出现的位置;
b.若P中没有出现P',在P'之前搜索与P'最长的子后缀P″相同的像素组X,向右移动P,使X的首位与方才P″的首位对齐[10]。
2)改进的BM匹配算法
在匹配过程中需要储存两个右移位置值d1和d2,d1为当像素不匹配时,首先计算模式串最右端像素对应的像素T[i]的下一次右移位置,d2为计算T[i+1]确定的下一次右移位置。d1和d2的计算规则如下:
首先,考察模式串P的末像素P[m]与对应的待匹配像素组T[m]是否匹配。若不匹配,则考虑T[m]的下一像素T[m+i],且利用坏像素规则,求得d1的值;
其次,考察像素T[i+m+d1–1],计算d2的值。
若像素T[i+m+d1–1]不在模式串中,则考察其下一像素T[i+m+d1]是否与P[1]相同。若相同,则将模式串P右移m+d1位,否则移动m+d1+1位。
若像素T[i+m+d1–1]在模式串中,则计算d2的值是否为1。
a.d2≠1时,将模式串右移d1+d2–1位;
b.当d2=1时,考察像素T[i+m+d1–1]是否与P[1]相同。若不同,则将模式右移,使得T[i+m+d1–1]与T[i+m+d1–1]像素的前一位对齐,否则按d2≠1时右移。
2.3.4 立体匹配
在实际匹配中,由于受到光线,左右相机参数等因素的影响,模式串P不能在待匹配像素组T中出现,无法达到每一个像素一一对应,只能通过寻找T中与模式串P最相近的像素,因此,实际匹配需要进行匹配代价计算、代价聚合和视差优化三个步骤。
2.3.5 目标三维重建
三维重建需要获取目标的深度信息Z,根据双目测距原理,由已知的焦距,视差和光心距离即可求得。若需获得目标物在世界坐标系中的的横纵坐标X、Y,则需要知道cx和cy。令左视图中的目标点为(x,y),视差为d,在以左相机坐标系下的目标点世界坐标为(X,Y,Z),用Q来表示目标点的物理坐标与世界坐标间的关系:
将图像坐标映射到相机三维空间中,通过Q按下式进行变换:
实验采用Windows10操作系统,AMD2600 3.4 GHz,16 GB内存的台式电脑,在 Visual Studio2013编程平台和OpenCV3.0图像处理库协同编程实现改进BM匹配算法。实验使用Middlebury公开数据集中的Cones、Teddy、Tsukuba、Venus四组图片,同时与BM算法、SGBM算法比较算法的的运行时间。实验结果如表1所示。
表1 立体匹配时间表 s
从实验数据可以看出,BM算法和改进的BM算法运行时间皆低于SGBM算法,原因是SGBM算法的复杂度比BM算法的高[12]。从表中还可以看出,改进的BM匹配算法经过对模式串P移动规则的调整,确实能加快匹配速度。
在相同的打光、相机曝光情况下,抓取小木块60次,记录每次立体匹配时间和抓取时间,最终取平均值,结果如表2所示。
表2 实验结果
在60次的抓取实验中,均能成功抓取,其抓取的平均时间为12.358 s,平均立体匹配时间为5.167 s。满足系统需求。由于标定的方法、机械臂装配以及电机精度等原因,机械臂产生的误差如表3所示。
表3 机械臂误差 mm
其中绝对误差为实际坐标和机械臂末端到达坐标之间的距离,最大绝对误差为60次中的绝对误差最大值;平均误差(x,y,z)中x,y,z分别为在x,y,z方向上的平均绝对误差。
为快速识别运动中的目标,缩短反应时间,提高抓取的速度,设计了基于AR技术机械臂物料抓取系统。在研究双目视觉立体匹配时,使用了一种改进的BM匹配算法,在不影响误匹配率的前提下,比传统的BM匹配算法速度快,且结合了机械臂系统、视觉系统、计算机系统完成了机械臂物料抓取系统总体方案的设计。根据系统的功能需求,进行了硬件系统的各模块设计,完成了系统软件的流程设计,最后进行了立体匹配算法和目标抓取的实验。实验表明:改进的BM匹配算法在不影响误匹配率的前提下,有效的缩短了匹配时间,因此,降低了机械臂抓取物料的时间,在要求实时性高的领域,具有很好的使用价值。