向艳芳,潘跃亮,刘 苗*
(1 湖南工业职业技术学院,410208,湖南长沙;2 复杂薄壁精密零件智能柔性加工技术湖南省工程研究中心,410208,湖南长沙)
随着国家智能制造政策出台,作为智能制造关键设备的工业机器人高速发展,在众多场合中应用起来。利用视觉识别技术实现机器人动态目标检测与智能抓取,一方面提高机器人环境感知能力,另一方面也为技术更新升级、新产品研发生产提供动力[1-3]。
Python 作为开源系统,可供用户自由开发,源代码阅读共享,利于交流学习。其结构简单,容易上手,在数据处理、自动化技术、人工智能、机器视觉等领域得到广泛应用。使用Python 软件开发包中的灰度算法、高斯滤波算法、Canny 边缘检测算法,实现图像的预处理;利用最小二乘算法,计算工件的中心点,通过数据分析建立坐标转换矩阵,确定机器人抓取点位与图像中心点位坐标关系,为开发和应用工业机器人视觉目标检测技术提供参考[4]。
用于执行任务的机器人是华中数控公司生产的6自由度关节HsRobot605 机器人,使用海克斯康MVCA060-10GC/HIKVISION 摄像头来进行样图采集,使用FQGH2-200X150-W 视觉光源增强光照效果。采用圆形柱状物料作为抓取对象,物料经传送带运至视觉镜头下方,传输位置具有随机性。
在Python 环境下使用OpenCV 工作空间,可视化机器人图像检测和识别目标位置过程。系统工作过程主要包括基于Python 实现图像处理、物料边缘检测、物体中心点计算、抓取坐标确定,然后通过机器人示教编程完成随机传送物料的动态抓取。
2.1.1 灰度算法 采用色彩空间转换方法,将色彩鲜艳物料与单一背景区别开。同时,原始图像由RGB 三个通道数据反映每个像素点的状态信息,增加运算时长。而灰度图像的每个像素点仅由一个通道数值决定,足够表达图像的大部分特征。
利用Python 自带OpenCV 库函数CvtColor 实现图像灰度化,原图如图1(a)所示,灰度化处理后如图1(b)所示。CvtColor 是OpenCV 里的颜色空间转换函数,实现RGB 颜色空间向HSV、HSI 等颜色空间的转换,也可以将彩色图像转换为灰度图像。该函数本质上快速地使用RGB 三通道像素值加权求和,将导入的彩色图片转化为灰色图片。
图1 图像预处理
式中:gray 为灰度化后的图像名称,COLOR_BGR2GRAY 表示将image 图像进行灰度化处理。
2.1.2 高斯滤波算法 采集到的数字图像存在干扰噪声,影响后续图像处理。本次采用高斯滤波算法抑制图像噪声,为图像边缘检测作准备。利用Python 高斯模糊函数GaussianBlur 去噪,通过对邻域内不同位置像素赋予不同权值方式,最大限度保留图像的总体灰度分布特征,实现图像平滑处理,如图1(c)所示。
式中:src 为输入图像,即源图像;dst 即目标图像,需要和源图片有一样的尺寸和类型;ksize 为高斯内核的大小;sigmaX 表示高斯核函数在x 方向的标准偏差;sigmaY 表示高斯核函数在y 方向的标准偏差。
式中:gray 为灰度处理后图像;(5,5)表示卷积矩阵为5*5;1.5 表示x 方向和y 方向标准差均为1.5。
2.1.3 边缘检测算法 边缘检测的目的是将数字图像中亮度变化明显的点标识出来,如深度上的不连续点、颜色变化明显点、物质属性变化点和场景照明变化点等[5]。
边缘检测任务中,选用Canny 算子进行边缘检测。当设置不同的阈值时,使用Canny 算子处理后产生一定的结果偏差。阈值的设置会对结果产生影响,对比效果如图2 所示。
图2 边缘检测效果对比
本次选用最小二乘法求解确定圆形物料圆心和半径,中心点确定问题转换为边缘点到圆心(A,B)距离与半径R 差值最小化问题。
最小二乘法拟合圆曲线:R2=(x-A)2+(y-B)2,也即x2+y2+ax+by+c=0。
样本集(xi,yi)点到圆心距离平方与半径平方差为:
根据最小二乘法原理,构建Q(a,b,c)=∑δi2,求参数a,b,c 使得Q(a,b,c)的值最小。利用偏导数等于0,得到极值点。
解得a,b,c 值即可得A,B,R 的估计拟合值。
在Python 编程中,使用matrix 函数构建矩阵、inv对矩阵求逆、pow 开方等数学运算,确定圆心坐标A 和B 及半径R,处理效果如图3 所示。
图3 确定圆心坐标
2.3.1 图像坐标系与相机坐标系 定义图像平面坐标系(u,v),以像素为单位。相机坐标系以摄像机光心为原点,其所在平面坐标系(x,y);z 轴为摄像机光轴,与图像平面垂直,用f 表示[6]。图像坐标系与相机坐标系关系表示为:
式中:s 为常数;dx 和dy 为像素在x 轴和y 轴方向上的物理尺寸;M1为参数矩阵。2.3.2 相机坐标系与机器人基坐标系 机器人基坐标系是以大地为参考的直角坐标系,常为机器人的默认坐标系。工具坐标系用来定义工具中心点位置和工具姿态坐标系[7]。两坐标系关系如下:
式中:x1、y1、z1为工具坐标系下坐标值;xb、yb、zb为机器人基坐标系下坐标值;M2为机器人基坐标系与相机坐标系的变换矩阵。
机器人坐标与相机坐标关系如下:
式中:M3为相机坐标系与工具坐标系的变换矩阵。
2.3.3 图像坐标系与机器人基坐标系 由公式1 和公式3 可得
其中:M 为图像坐标系与机器人基坐标系之间的转换矩阵。
2.3.4 坐标转换矩阵算法 从图像坐标系到机器人基坐标系转换矩阵M,通常包括平移矩阵关系(5)、缩放矩阵关系(6)和旋转矩阵关系(7)[8]。
利用Python 中Solve 函数求解M 矩阵。本次随机选用标定的3 组数值建立视觉图像和机器人基坐标系的矩阵关系。
经计算与验证可得转换矩阵:
结合M 矩阵数据和拟合图像圆心数据,(u,v)=(1586.1971,995.3053),根据(8)式代入可得机器人抓取坐标(xb,yb)=(239.7052,-491.7815),该数据通过ModBus 协议发送至机器人笛卡儿坐标LR 寄存器。机器人获取机器人基坐标系抓取点位数值,通过示教器示教与编程,实现机器人动态智能抓取物料。经3 组随机样本测试,计算结果偏差在0.5 mm 以内,机器人视觉识别和动态抓取准确性很高。
本文利用Python 环境,实现机器人视觉图像识别,方便物料位置快速定位,通过HsRobot 机器人完成对象精准抓取。可视化再现了机器人视觉检测与抓取的过程,能够快速跟踪视觉失败问题及其原因,为机器视觉应用方案提供一种参考。尽管该算法能够正确识别和抓取形状简单对象,但对于复杂形状工件检测与识别还在进一步研究中,接下来研究工作主要包括检测算法优化及基于此的柔性控制方案的设计,最终实现对复杂对象的快速、精准识别与抓取。