APP下载

基于最小外接矩形的目标工件定位算法

2022-12-21董阳于洪鹏台立钢张禹

机械工程师 2022年12期
关键词:轮廓主轴矩形

董阳,于洪鹏,台立钢,张禹

(1.沈阳工业大学 机械工程学院,沈阳 110870;2.中国科学院 沈阳自动化研究所,沈阳 110017;3.中国科学院 机器人与智能制造创新研究院,沈阳 110169)

0 引言

近年来,随着互联网、人工智能这些技术的高速发展,全世界都处在以科技创新为动力的第四次工业革命浪潮之中,工业智能机器人扮演了重要的角色[1]。

本文使用工业相机采集目标图像的图片,对图像进行预处理。改进了原始的图像Canny边缘检测算法,仔细分析了原Canny算法的思路和步骤,结合实验场景,改进了Canny算法的梯度计算和双阈值的选取。获得目标物体轮廓后,利用Hough变换投影法确定目标物体的主轴获取目标物体最小面积的外接矩形,确定出目标物的抓取位置点。通过实验验证了工件定位算法的准确性。

1 机器人抓取任务设计

开启固定位置的工业相机采集目标工件图像,对采集的图像做预处理。接着利用文中提出的定位算法计算出目标工件的像素坐标。通过相机标定和手眼标定的结果,将工件抓取位置的像素坐标转换为相对于UR5机械臂的基坐标系的世界坐标。最后通过ROS(机器人操作系统)下的MoveIt平台,控制机械臂到达指定抓取位置,完成工件的夹取操作。抓取任务的主要部件构成如图1所示,目标物体抓取流程如图2所示。

图1 目标工件抓取系统组成

图2 目标工件抓取流程

2 基于改进Canny算法的视觉识别与定位

2.1 图像的预处理

工业环境的光照均匀度、空气的灰尘、镜头的制造误差都会影响到采集目标图像的质量。为了减少干扰图像的信息,必须要对图像进行预先处理来加以改善。图像预处理的目的就在于最大程度地保留目标物体的有用的特征,弱化影响图像处理和分析的无用干扰。

本文选用最大类间方差法自动获取阈值。该方法不会受到相机采集到的图像亮度和对比度变化的影响,具有较好的抗噪性能。处理效果如图3所示。

图3 最大类间方差法

从两幅图像中可以看出,图像经过二值化处理后目标图像的特征更加明显,有利于下一步的目标轮廓检测。

2.2 改进Canny边缘检测

1986年John F. Canny开发了Canny边缘检测算法。它使用多阶段的算法来检测图像中广泛的边缘[2]。传统的Canny检测算法分为以下4个步骤:

1)使用高斯滤波器对原始图像进行去噪处理,提高图像的质量和检测的精确性。设I(x,y)为原始输入图像,G(x,y)为高斯函数,S(x,y)为滤波后的图像结果。

则有:

2)计算滤波后图像的各点梯度幅值和梯度方向。卷积算子如下所示。

计算图像水平方向和垂直方向的一阶偏导数H(x,y)、V(x,y),然后计算出图像梯度幅值M(x,y)和梯度方向θ(x,y),如下列公式所示:

3)对计算得到的梯度幅值进行非极大值抑制来细化边缘。

4)双阈值优化图像边缘,确定检测真实和潜在的边缘。

通过上述4个步骤的分析可以得知,传统的Canny检测算法存在一些缺陷:计算高斯滤波后图像的各点梯度幅值和梯度方向时[3],卷积算子是2×2的,卷积算子维度小且又是近似计算,所以易受噪声干扰和计算精度差影响,导致检测的结果不够精确,因此更容易检测到伪造边缘或遗漏掉真实边缘[4]。原始的Canny 算法的高低双阈值是全局固定的,高低双阈值的选取受人为因素影响较大,需要人工通过经验设定,找到一个合适的高低阈值。但是这样操作费时费力,往往不能达到最优的分割效果。

针对本篇文章视觉的应用场合,对Canny检测算子做出如下改进,改进后的Canny图像边缘检测算法流程如图4所示。

图4 改进后的Canny算子边缘检测算法流程

改进的Canny 算子边缘检测算法的具体实现步骤如下:

1)利用Sobel算子的3×3卷积算子代替Canny原有的2×2卷积算子计算高斯平滑后的图像的近似梯度。

a.水平方向的图像卷积操作:

2)基于图像的梯度的平均值和标准偏差的自适应双阈值。

利用图像的梯度信息,计算图像梯度的均值和方差。图像的梯度大小反映着边缘信息的丰富程度。梯度值的平均值反应梯度值的分布中心位置,标准偏差反映了梯度值分布的离散程度[5]。一幅图像的边缘像素的梯度幅值都很大,通过梯度值的分布情况确定高低阈值的选择方法。具体过程如下:

a.图像经过非极大值抑制后,统计出图像的梯度幅值Grad(x,y),接着计算出梯度的平均值AveGrad(x,y)和标准差σ:

式(11)和式(12)中的U、V表示为图像的行数和列数,式(13)中的K为标准差的系数,K值的大小决定着检测边缘信息的丰富程度。通过多次实验得出K=1.2时,本文图像检测效果更佳。此种方法能够实现自适应的双阈值,节省调节参数的时间。

为验证本文的改进Canny的图像边缘检测算法的效果,设定原始Canny算子中的高阈值和低阈值分别为40 和200。原始Canny边缘检测算法和改进后的Canny边缘检测算法进行边缘检测后的图像分别如图5和图6所示。

图5 原始Canny算子边缘检测的图像

图6 改进Canny算子边缘检测的图像

通过两图的边缘检测效果可以看出,改进Canny边缘检测算法获得目标图像边缘杂点较少,能够去除一些伪边缘。目标边缘的图像轮廓也比原始Canny算法更加连续,增加了边缘检测的准确度。而且改进后的检测算法可以根据不同的图像,自动地选择高阈值和低阈值,减少算法调试时间。

2.3 求取目标最小外接矩形及定位

在工业环境中,工件大多都是轮廓形状不规则的,一些轮廓检测算法,常常得到的只是孤立、不连续的目标轮廓,难以做出准确的工件轮廓检测。所以提出建立目标工件的外接矩形,通过最小外接矩形获取目标工件的抓取信息[6]。

本文提出使用寻找主轴法来求取最小外接矩形,确定目标物体的抓取点和偏转角度。具体的实现步骤如下:

1)确定目标物体的水平主轴和垂直主轴的初始位置和方向。

使用上一节改进的Canny边缘检测算法,检测目标物体的轮廓。通过检测到的轮廓数据,利用重心原理,分别计算轮廓区域的横纵坐标的像素坐标和,得到目标物体主轴的起始位置:

2)水平主轴和垂直主轴的方向确定。

为了更加有效地描述目标物体的形状信息,本文使用Hough变换投影法确定目标物体的主轴方向,利用图像空间中共线的点与参数空间中相交的线存在对偶性[7],即在图像空间下直线的方程为y=px+q,将其可转换为在参数空间下对应的极坐标方程ρ=xcos θ+ysin θ。根据点线的对偶性,当已知图像空间的一些边缘点,就可通过Hough变换得到这些边缘点的直线方程。Hough变换把图像空间中的直线检测问题转换到参数空间里对点的检测问题,通过在参数空间里进行简单的累加统计完成检测任务[8-10]。算法的流程如下:

a.对目标图像建立合适的平面直角坐标系,并将其转换到对应的参数空间下的极坐标系。

b.初始化投影角度φ值、最小极径λmin和最大极径λmax值为0。从0°到180°遍历θ,每次增加1°。将目标图像的所有轮廓点逐个代入ρ=xcos θ+ysin θ,便可以把图像上的属于工件的轮廓点全部转化为极坐标。因此λ值会不断地更新。比较每个θ对应的λ值,寻找到非零点对应最小极径λmin和最大极径λmax值,求出λmax-λmin的值λθ。

c.更新λθ值,直到求出最小的值为止。将投影轴角度转换为主轴角度,当θ大于90°,投影的方向为θ-90°。反之投影的方向为θ+90°。

得到的图像主轴如图7所示,图中的直线为所求的目标图像主轴。

图7 目标图像的主轴

3)获取长短轴与轮廓的交点点集并转换为矩形点集。

a.获得一条起始点为质心并沿着主轴角度方向的射线l1,求出射线l1与目标图像轮廓的交点p1,将射线l1旋转180°。得到与l1方向相反的并共线的射线l2,求射线l2与轮廓的交点p2。接着以p1为起始点沿着主轴反方向循环移动一个单位,得到p1的移动点p1m。获取通过移动点p1m并垂直于主轴长轴的所有直线,求出直线与目标轮廓的交点p11m1和p1m2,寻找两交点的距离最大值。将两交点记为p3和p4,则p3p4的长度为短轴长度。结果如图8所示。

图8 确定长度的长轴和短轴

b.已知长短轴与轮廓的交点点集{p1,p2,p3,p4},根据公式

计算p1沿着主轴角度方向分别旋转±90°,移动短轴的1/2长度,得到矩形顶点T1和T2;计算p2沿着主轴角度方向分别旋转±90°,移动短轴的1/2长度,得到矩形顶点T3和T4。这时的T1、T2、T3、T4为初始的外接矩形4个顶点,如图9所示。

图9 目标物体初始矩形

4)优化外接矩形的姿态。

通过Hough投影法在做投影的时候求得的主轴方向会出现一些误差,获取的初始外接矩形没有完全将目标轮廓包络在内,所得的外接矩形并不是最优的。所以本文使用旋转法优化外接矩形,判断矩形是否为最佳。优化外接矩形的步骤如下:

a.设初始的质心点M(x¯,y¯)为旋转中心,从矩形顶点点集获取矩形顶点。计算矩形顶点坐标绕中心坐标旋转θ角度后的横坐标和纵坐标。用以下公式表示:

b.先对矩形轮廓绕点M逆时针旋转修正角度β(0°~180°),计算每次轮廓的面积,如果旋转矩形区域的轮廓面积小于上次,则更改旋转方向,将旋转方向设置为顺时针,设置修正角度为顺时针增量值度数。如果旋转矩形区域的轮廓面积不小于上次,则加大修正角度,继续优化矩形的姿态。直至搜索到轮廓面积最小为止。若修正角度β超过180°,则停止旋转,不再进行优化。

5)修正外接矩形的尺寸。

在得到最优姿态的矩形后,矩形的轮廓无法保证边缘与目标图像轮廓正好相切,所以需要对矩形的边缘进行平移操作。

a.从矩形顶点点集获取V1、V2、V3、V4点,寻找V1V4边与图像轮廓的偏移值,需要判断V1V4边与图像目标轮廓的交点存在的关系,如果偏移方向为远离质心方向,偏移直线与轮廓无交点,因此减一次偏移值可得到轮廓与偏移直线的相切点的偏移值,则说明找到轮廓与偏移直线的相切点。如果偏移方向为靠近质心方向,偏移直线与轮廓存在一个交点,则说明找到轮廓与偏移直线的相切点。同理V1V2、V2V3、V3V4边的偏移值也可获得。在得到矩形4条边与图形轮廓的相切点的偏移值后,将矩形进行平移,得到最终的最小外接矩形ABCD,如图10所示。

图10 最小外接矩形形成的过程

6)目标的定位实现。

通过上述内容的Hough投影主轴法求解出目标物体的最小外接矩形,由目标的最小外接矩形求得目标物体的抓取点,如图11所示。

图11 目标物体的定位

3 视觉系统标定

在不考虑相机的成像有畸变的影响下,简化相机模型,可以将单目相机获取图像的成像过程看作为小孔成像模型,小孔成像模型可使物体的三维空间坐标与图像平面坐标之间呈线性关系。原理如图12所示。

图12 简化的相机小孔成像模型

通过模型建立世界坐标系与像素坐标系之间的变换关系式:

式中:f、dx、dy、u0、v0均为相机的内部参数;Zc为比例因子。

由式(18)可知,若相机的内外参数已知,则可以求得世界坐标系的位置点在相机的图像像素下的坐标或者图像像素的坐标在世界坐标系下的位置点。

3.1 相机标定

相机标定步骤:

1)首先把单目相机放到固定位置,在相机的视野范围内,依次移动标定板并拍摄保存标定板的当前状态,共拍摄12张图片,如图13所示。

图13 相机标定模板图片

2)利用OpenCV C++程序提取每个图案的角点位置,保存角点位置。

3)开始标定,求出相机的内外参数矩阵和畸变系数k1、k2、p1、p2、k3。

最终的相机标定结果为:

3.2 手眼标定

本次实验使用UR5机械臂,Basler相机,标定板使用长×宽为120 mm×120 mm大小的圆点标定板。具体的手眼标定系统实验步骤如下:

1)相机固定在某个位置上,末端夹爪夹持标定板。通过UR5机械臂的示教器控制机械臂移动至相机的视野范围内,停留在某一处,此时从示教器里读取机械臂的末端姿态。

2)机械臂静止不动,保证相机的视野下的标定板图案清晰且不反光。固定位置的相机拍摄当前姿态下的标定板图案。

3)在相机的视野范围内,继续通过示教器移动机械臂并改变标定板的方位,机械臂静止不动,记录下示教器的机械臂末端姿态。相机采集对应姿态下的图像。一共获得到14张标定图案,如图14所示。

图14 手眼标定图片

手眼标定的结果:

4 实验验证与结果分析

为验证本文图像处理算法对目标物体定位的效果,选择螺栓作为抓取对象。在机械臂抓取之前,将螺栓随机放置在相机的视野范围内。利用本文的定位算法获取目标工件的抓取位置和偏转角度。

UR5机械臂的重复定位精度很高,通过UR5机械臂的控制器能够实时获取机械臂末端法兰盘中心处的位姿信息,因此利用UR5机械臂的末端姿态信息衡量本文定位算法的准确性。以本文的定位算法得到的位置信息为测量值。手动控制UR5机械臂的末端工具到达抓取位置后,以示教器中的位置数值为标准值。算法计算的测量值、机械臂得到的标准值和误差值,如表1所示。

表1 视觉检测数据

由表1中的内容可知,视觉检测的X轴位置的绝对误差结果最大为1.89 mm,Y轴位置的绝对误差结果最大为1.14 mm,Z轴偏转角度最大为2°。绝对误差结果不超过2 mm,相对误差不超过1%,所以本文的图像处理算法在控制误差精度方面较好,满足系统实际需求。

接下来要完成机械臂对目标工件的抓取实验。本文借助于MoveIt下的C++程序接口控制机械臂抓取。3个长度和直径均不同的螺栓随机放置。实现步骤如下:

1)首先初始化MoveIt平台,设置Move_Group规划组,方便调用MoveIt平台的程序接口。

2)发布控制Robotiq夹爪的话题“/gripper/cmd”。控制Robotiq 夹爪张开至最大。设置机械臂的基座为参考坐标系。

3)为减少机械臂运动求解的误差,设置机械臂允许的误差不超过1 mm。并允许机械臂在运动求解失败后,重新进行规划。

4)将目标工件的实际的位置和偏转角度发布给机械臂。执行程序控制机械臂运动到抓取位置。抓取过程如图15所示。机械臂抓取数据如表2所示。

图15 机械臂抓取实验过程

由表2数据可知,该实验结果证明了本文提出的基于机器视觉工件定位技术算法具有较好的可行性和准确性。

表2 机械臂抓取数据

5 结论

本文基于机器视觉技术,以UR5机械臂为研究对象,针对工业生产中的不规则工件的轮廓难以定位的问题,在ROS平台下,提出并实现了一种联合改进的Canny边缘检测算法和Hough变换投影法寻找最小外接矩形的定位算法。在UR5机械臂上利用该算法进行了抓取目标工件的实验验证,展示了UR5机械臂抓取实验过程。通过实验验证了本文提出的图像处理算法在控制误差精度方面较好,满足系统实际需求,具有实际工程的应用价值。

猜你喜欢

轮廓主轴矩形
OPENCV轮廓识别研究与实践
两矩形上的全偏差
把握新时代 谋划全面深化改革的主轴
基于实时轮廓误差估算的数控系统轮廓控制
化归矩形证直角
双主轴双排刀复合机床的研制
从矩形内一点说起
基于FANUC-31i外部一转信号在三档主轴定向中的应用
高速公路主动发光轮廓标应用方案设计探讨
基于FANUC0i系统的多主轴控制研究