本发明属于图像识别及控制技术领域,具体涉及一种基于视觉定位的双臂协同智能装配系统。
背景技术:
现有技术中,有一种led路灯模组,参见图1所示,包括led光源和模组底座,装配的时候通过螺钉固定led光源上和模组底座上设置有对应的两组螺孔完成led路灯模组的装配。目前,此类led路灯模组的装配全由人工操作完成,人工装配存在人工成本较高,装配速度较慢的问题。
为了加速实现“工业4.0”,有必要对led路灯模组生产过程结合视觉技术对路灯模组产线进行智能化升级,将原有包含抓取光源,固定光源等工序的人工操作生产线全部改为由机械臂来进行自动化装配生产。
技术实现要素:
鉴于以上存在的技术问题,本发明用于提供基于视觉定位的双臂协同智能装配系统,用于利用机器视觉技术准确的找到目标点的位置,并控制两台机械臂协同完成装配操作。
为解决上述技术问题,本发明采用如下的技术方案:
一种基于视觉定位的双臂协同智能装配系统,包括两台机械臂和两台相机,其中,第一相机固定在第一机械臂的末端执行器上,用来拍摄模组底座;第二相机固定在第一机械臂外部,用来拍摄led光源;第二机械臂的末端执行器为自动打螺丝机,
在系统正式开始工作之前,进行前期标定,进行第一相机和第一机械臂基坐标系的标定,第二相机和第一机械臂基坐标系的标定,以及第一机械臂和第二机械臂之间位置转换的标定工作,获得对应的转换矩阵,以便将相机拍摄的图片中点的位置转换到机械臂的基坐标系下,引导机械臂到达指定位置;
系统装配,分别进行如下动作:
当待安装的模组底座运行到安装工位时,第一机械臂运动至的模组上方由标定关系确定的拍摄基准,触发第一相机拍照,并对待安装的模组的照片进行图像处理之后,获取模组上两个螺纹孔的位置;
第一机械臂吸取led光源并将其准确的移动到第二相机下方由标定关系确定的拍摄基准;
第二相机拍摄led光源照片,获取led光源上两个螺纹孔的位置;
将led光源放置在模组底板上,使led光源与模组底座上两组对应的螺纹孔重合并压紧;
第二机械臂运动到指定位置将led光源和模组底座采用螺钉锁死。
优选地,对待安装的模组的照片进行图像处理之后,获取模组上两个螺纹孔的位置如下:
对拍摄的图片进行预处理,先根据相机每次拍摄的图片效果截取照片中靠近模组中央位置的包含需要定位的两个螺纹孔一个方形区域,对图形进行去噪处理;
对去噪后的图像进行初步二值化处理,算法步骤如下:首先采集一组不同光照情况下的模组图片估算出每张图片中螺纹孔区域灰度值的变化范围(i0~in);取变化阈值t0≥in-i0;每次拍摄好图片之后,首先对图片进行遍历,记录每一个像素点的灰度值,并进行比较,获取图像中的最小灰度值im;取图像分割阈值t=im t0;利用阈值t对图像进行初步二值化分割;
进行边缘检测;
进行螺纹孔位置检测,用霍夫圆检测算法来确定模组上螺纹孔位置。
优选地,进行螺纹孔位置检测,用霍夫圆检测算法来确定模组上螺纹孔位置具体如下:初始化圆心空间n(a,b),令所有的n(a,b)=0;遍历二值图中的所有非0像素点,沿梯度方向和其反方向画线,线段的起点和长度由设置的半径区间决定,将线段经过的所有累加器中的点(a,b)的n(a,b) =1,统计排序n(a,b),得到可能的圆心;对于可能的圆心,按照累加器点数从高到低进行排序,依次计算边缘图中所有的非0像素点距此圆心的距离,并对距离从小到大排序,对于距离相差小于某个阈值的点视为在同一个圆中,统计属于该半径的非0点数;重复以上步骤计算多个圆心点,优先选择非0点数最多的半径画圆,在此情况下,会检测到许多的圆存在,根据对不同图片多次检测的结果可知,模组中央两个螺纹孔的间距约为900个像素点,据此设置圆心最小间距,圆心之间距离小于此间距的只取累加器点数最多的为圆心,螺纹孔半径约为25-30个像素,据此设置霍夫圆检测的半径阈值。
优选地,第二相机拍摄led光源照片具体如下,获取led光源上两个螺纹孔的位置:对led光源的图片进行图像处理,获取图片中led光源两个螺纹孔的位置,并计算出两个螺纹孔圆心连线与模组上两个螺纹孔圆心连线的夹角。
优选地,led光源图片处理的计算过程如下:
首先同样需对图片进行滤波处理,排除噪声干扰;
进行二值化处理,此时根据图像特征可以发现,图片中光源区域的灰度值相较于其他区域比较大,因此仍需通过事先采集的图像样本集,确定不同光照条件下,光源图像的灰度值变化范围(i0’~in’),取变化阈值t0’≥in’-i0’;每次拍摄好图片之后,首先对图片进行遍历,记录每一个像素点的灰度值,并进行比较,获取图像中的最大灰度值im’;取图像分割阈值t’=im’-t0’;利用阈值t’对图像进行初步二值化分割;对二值化之后的图像再进行边缘检测,获得轮廓图;为了便于更好的提取螺纹孔特征,排除其他元素干扰,利用检测螺纹孔两侧的线段的交点来对螺纹孔进行定位;根据通过霍夫直线检测的算法,先后对led光源螺纹孔对应的线段进行提取,根据对不同图片多次检测的结果可知,两侧线段的长度约为100-150个像素点,,两幅图中两个圆圈的位置已知,其连线中点的位置可求,其连线的直线斜率也可求,即光源螺纹孔连线中点的和斜率可求。此时光源螺纹孔连线的位置和斜率已知,模组底座的螺纹孔位置和斜率也已知,即可求解两对螺纹孔在空间中的位置关系,从而引导第一机械臂将光源准确的放置在模组底座上,使两对螺纹孔重合,完成装配。
采用本发明具有如下的有益效果:本系统可以快速、精准的检测到螺钉孔位置,并完成led光源和模组底座的装配,视觉系统很好的解决了自动化加工过程中模组摆放位置偏差造成的无法装配的问题,减小了上一道工序对于模组放置精度的要求,降低了人工成本。
附图说明
图1为现有技术中led路灯模组的结构示意图;
图2为本发明实施例的基于视觉定位的双臂协同智能装配系统的结构示意图;
图3为模组底座原始图片;
图4为图3对应的中心roi区域截取图片;
图5为中值滤波效果图;
图6为图片二值化效果图;
图7为光照充足条件下本文方法改进前后分割效果对比图;
图8为canny边缘检测效果图;
图9为模组底座螺纹孔检测结果图;
图10为第二相机拍摄led光源图像;
图11为led光源螺纹孔定位图片。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于视觉定位的双臂协同智能装配系统,包括两台机械臂和两台相机,其中,第一相机固定在主动机械臂的末端执行器上,用来拍摄模组底座;第二相机固定在主动机械臂外部;从动机械臂的末端执行器为自动打螺丝机,在系统正式开始工作之前,进行前期标定,进行第一相机和第一机械臂基坐标系的标定,第二相机和主动机械臂基坐标系的标定,以及主动机械臂和从动机械臂之间位置转换的标定工作,获得对应的转换矩阵,以便将相机拍摄的图片中点的位置转换到机械臂的基坐标系下,引导机械臂到达指定位置;系统装配,分别进行如下动作:当待安装的模组底座运行到装配工位时,主动机械臂运动至模组上方由标定关系确定的拍摄基准,触发第一相机拍照,并对待安装的模组的照片进行图像处理之后,获取模组上两个螺纹孔的位置;主动机械臂吸取led光源并将其准确的移动到第二相机下方由标定关系确定的拍摄基准;第二相机拍摄led光源照片,获取led光源上两个螺纹孔的位置;将led光源放置在模组底座上,使led光源与模组底座上两组对应的螺纹孔重合并压紧;从动机械臂运动到指定位置将led光源和模组底座采用螺钉锁死。
具体应用实例中,对待安装的模组的照片进行图像处理之后,获取模组上两个螺纹孔的位置如下:对拍摄的图片进行预处理,先根据相机每次拍摄的图片效果截取照片中靠近模组中央位置的包含需要定位的两个螺纹孔一个方形区域,对图形进行去噪处理;对去噪后的图像进行初步二值化处理,算法步骤如下:首先采集一组不同光照情况下的模组图片估算出每张图片中螺纹孔区域灰度值的变化范围(i0~in);取变化阈值t0≥in-i0;每次拍摄好图片之后,首先对图片进行遍历,记录每一个像素点的灰度值,并进行比较,获取图像中的最小灰度值im;取图像分割阈值t=im t0;利用阈值t对图像进行初步二值化分割;进行边缘检测;进行螺纹孔位置检测,用霍夫圆检测算法来确定模组上螺纹孔位置。
具体应用实例中,进行螺纹孔位置检测,用霍夫圆检测算法来确定模组上螺纹孔位置具体如下:初始化圆心空间n(a,b),令所有的n(a,b)=0;遍历二值图中的所有非0像素点,沿梯度方向和其反方向画线,线段的起点和长度由设置的半径区间决定,将线段经过的所有累加器中的点(a,b)的n(a,b) =1,统计排序n(a,b),得到可能的圆心;对于可能的圆心,按照累加器点数从高到低进行排序,依次计算边缘图中所有的非0像素点距此圆心的距离,并对距离从小到大排序,对于距离相差小于某个阈值的点视为在同一个圆中,统计属于该半径的非0点数;重复以上步骤计算多个圆心点,优先选择非0点数最多的半径画圆,在此情况下,会检测到许多的圆存在,根据对不同图片多次检测的结果可知,模组中央两个螺纹孔的间距约为900个像素点,据此设置圆心最小间距,圆心之间距离小于此间距的只取累加器点数最多的为圆心。
具体应用实例中,第二相机拍摄led光源照片具体如下,获取led光源上两个螺纹孔的位置:对led光源的图片进行图像处理,获取图片中led光源两个螺纹孔的位置,并计算出两个螺纹孔圆心连线与模组上两个螺纹孔圆心连线的夹角。
具体应用实例中,led光源图片处理的计算过程如下:
首先同样需对图片进行滤波处理,排除噪声干扰;
进行二值化处理,此时根据图像特征可以发现,图片中光源区域的灰度值相较于其他区域比较大,因此仍需通过事先采集的图像样本集,确定不同光照条件下,光源图像的灰度值变化范围(i0’~in’),取变化阈值t0’≥in’-i0’;每次拍摄好图片之后,首先对图片进行遍历,记录每一个像素点的灰度值,并进行比较,获取图像中的最大灰度值im’;取图像分割阈值t’=im’-t0’;利用阈值t’对图像进行初步二值化分割;对二值化之后的图像再进行边缘检测,获得轮廓图;为了便于更好的提取螺纹孔特征,排除其他元素干扰,利用检测螺纹孔两侧的线段的交点来对螺纹孔进行定位;根据通过霍夫直线检测的算法,先后对led光源螺纹孔对应的线段进行提取,根据对不同图片多次检测的结果可知,两侧线段的长度约为100-150个像素点,且两条线段所在直线垂直,可知,两条直线斜率的乘积为k=-1,由此设定直线夹角的阈值为ki*ka<=-0.8,进一步减小图像中检测出其他干扰直线的可能,两幅图中两个圆圈的位置已知,其连线中点的位置可求,其连线的直线斜率也可求,即光源螺纹孔连线中点的和斜率可求。此时光源螺纹孔连线的位置和斜率已知,模组底座的螺纹孔位置和斜率也已知,即可求解两对螺纹孔在空间中的位置关系,从而引导第一机械臂将光源准确的放置在模组底座上,使两对螺纹孔重合,完成装配。
为了使本领域技术人员更直观的理解本发明实施例提供的基于视觉定位的双臂协同led光源模组智能装配系统,以下将结合具体实施过程对本发明进行进一步的说明。参见图2系统结构示意图,整个装配系统包括一台主动机械臂、一台从动机械臂,两台用来进行视觉定位的工业相机,以上部件均通过工业pc机进行控制和通讯,其中固定在主动机械臂末端执行器压爪上的第一相机主要用来进行模组底座上的两个螺纹孔的定位;另一台第二相机固定在工作台上,用来对led光源上的螺纹孔进行定位;当底座到达本装配工位时,触发位置传感器,装配系统开启启动。由主动机械臂带动第一相机运动至模组底座正上方,拍摄模组底座照片,经过图像处理之后,计算出模组底座上两个螺纹孔的位置并保存;然后主动机械臂运动至工作台指定位置,吸取led光源,再将led光源带至第二相机下方,对led光源进行拍摄,计算出此时led光源上两个螺纹孔的位置。此时已获得两对螺纹孔的位置,即可分别计算出连接两对螺纹孔的线段l1和l2。求解l1和l2中点位置在空间中的偏差,即可控制主动机械臂将led光源带至底座上方,并使线段l1和l2的中点重合;之后求解出l1和l2的夹角,使主动机械臂带动led光源旋转对应的角度,使l1和l2完全重合,即两对螺纹孔的位置完全重合,顺利完成定位。之后由主动机械臂将led光源准确地放置在底座上,并固定、压紧,将底座螺纹孔的位置发送给从动机械臂,从动机械臂先从螺丝供给机处吸取螺丝,然后运动至两个螺纹孔处,利用电机自动完成锁螺丝的操作,装配完成。
具体的,包括如下步骤:
第一步,当模组运行到装配工位时,主动机械臂运动至模组上方由标定关系确定的拍摄基准,触发第一相机拍照,并对模组的照片进行图像处理之后,获取模组上两个螺纹孔的位置。具体应用实例中,第一相机通过硬件连接件固定在主动机械臂末端执行器上,距模组垂直高度0.15米。规定最大安装误差为0.3mm,图像检测部分最大误差0.1mm。拍摄目标为直径116mm的圆形区域,为保证目标物体在视野范围内,最小拍摄范围为130×130mm2,因此工业相机的纵向最低分辨率为1300,此时横向分辨率通常在1700左右,由此计算出相机像素为250万左右。初定拍摄高度为200mm。在实际使用中,为提高视觉系统的稳定性和准确性,一般会选取相机像素理论计算值的2倍以上,因此选取500万像素的工业相机。由此进行相机选型,最终选择了大恒的mer-504-10gm/c-pgige接口ccd工业数字相机。拍摄图像为灰度图,在黑色工作台上拍摄效果如图3所示。
第二步,对拍摄的图片进行预处理。根据装配要求,只需要获取模组中央两个螺纹孔的位置,并转化到机器人坐标系下。从图3中可以看出模组四周也有四个同样大小的螺纹孔,会对中央螺纹孔的提取造成干扰。因此先根据相机每次拍摄的图片效果截取照片中靠近模组中央位置的一个方形区域,这个区域中只包含需要定位的两个螺纹孔,如图4所示。接下来就继续对这个区域进行处理,为了减小图片中噪声的影响,首先对图像进行滤波。在此使用了非线性滤波方法——中值滤波,中值滤波可以在减小图片噪声的同时,保留其边缘。双边中值滤波的基本原理是把数字图像或数字序列中某一点的像素值,用以该点为中心的九个像素点的像素值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。具体方法为:用3×3的矩阵,依次扫过图像的每一个像素点所在的九宫格区域,每个矩阵元素对应一个像素点。在每经过一个点时,对于以该点为中心的9个像素值按大小进行排序,选取中值作为这个点的新像素值。对图像进行中值滤波后,效果如图5所示。
第三步,进行图像二值化处理。图像二值化的基本原理是设定一个阈值,并以此为界限将图像中所有灰度值小于该阈值的像素点的像素值赋予0,所有灰度值大于该阈值的像素点的像素值赋予255,使图像呈现出黑白的效果,减少图像中的数据量,突出特征,便于后续的图像处理步骤。本发明实施例需要突出图5中两个螺纹孔的位置,因此期望设置阈值将两个螺纹孔的像素值与图片其他部分的像素值区分开。但是由于安装空间和机械臂载荷的限制,无法在相机附近安装合适的光源,导致装配工位每次拍摄的模组图片整体灰度值都会根据自然光变化而产生变化,因此如果设定固定的阈值无法保证对每一张图片都有好的效果。
针对这种情况,采用针对模组图像特征的自适应阈值分割方法。观察模组图片可以看出,无论外界光照情况如何变化,螺纹孔所在区域均为灰度值最小的区域,因此可根据此不变特征来进行提取。算法步骤如下:
1)首先采集一组不同光照情况下的模组图片估算出每张图片中螺纹孔区域灰度值的变化范围(i0~in);
2)取变化阈值t0≥in-i0,通常取t0=(in-i0) 30;
3)每次拍摄好图片之后,首先对图片进行遍历,记录每一个像素点的灰度值,并进行比较,获取图像中的最小灰度值im;
4)取图像分割阈值t=im t0;
5)利用阈值t对图像进行二值化分割。
本发明实施例中采集了96张不同光照条件下的模组图片,利用本方法进行处理,取t=0;对图片进行处理,原图和对应二值化图像对比如图6所示,图6a)-1为较暗条件下的原图,图6b)-1为图6a)-1对应的二值化图像,图6a)-2明亮条件下的原图,图6b)-2为图6a)-2对应的二值化图像。根据图6可以看出,即使原图图像的亮度变化较大,本发明实施例都能很好的获取阈值对图像进行二值化处理,提取出螺纹孔的位置,满足后续定位的精度要求。
仔细观察图6a)-2和图6b)-2,可以看出,在光线比较明亮时,通过本发明实施例的二值化之后的图像中,螺纹孔中心仍有少部分区域被判定为背景区域,出现了空腔,且检测到的螺纹孔区域面积与实际尺寸相差1-2个像素,针对这种情况,本发明实施例在原有方法的基础上进一步提出了优化的方法。
在利用上述方法初步对图像进行分割以后,求解二值化图像中每个联通域的面积,具体应用实例中的螺纹孔直径为3mm,根据相机的像素,拍摄视野等参数进行计算,拍摄的底座图像中螺纹孔的半径应为30个像素点左右,因此可以求解图像中螺纹孔区域的理想面积,并根据其大小设定面积阈值;将初步二值化之后图像中的各个连通域的面积与面积阈值进行对比。当图像中所有连通域的面积均小于面积阈值时,说明图像亮度过大,初步二值化的灰度阈值过低,误将螺纹孔区域的像素点判定为背景像素,此时再返回增大二值化的灰度阈值,然后再重复进行图像切割再与面积阈值进行对比,根据灰度值范围设置迭代次数,直到二值化之后出现两个联通域的面积大于给定面积阈值,说明两个螺纹孔均已完整分割出来,图像二值化的效果达到最好,具体算法步骤如下:
1)根据底座结构和相机参数,计算出图片中的理想螺纹孔区域的面积s,并根据s设定面积阈值s0(考虑相机安装误差和螺纹孔加工误差等,通常取s0<s);
2)给定初始二值化灰度阈值偏差t0;
3)对图像进行遍历,获取图像中最小灰度值im;
4)将灰度阈值t设定为t0 im;
5)利用灰度阈值对图像进行二值化分割处理,获得初步处理的二值化图像;
6)对步骤(5)获取的图像中,各个连通域的面积进行求解并保存为s1,s2...sn;
7)对比每一个连通域面积与面积阈值s0的大小,并统计面积大于s0的联通域个数n,若n<2,则取新的阈值t=t 1;再重复步骤(5)-(7);若n>2,则证明当前图像的二值化处理,已经达到理想效果,结束该步骤。
利用上述改进的方法再次对同一组光照充足条件下的图像进行处理,效果如图7所示。
第四步,边缘检测。边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛应用于各种计算机视觉系统。常用的canny边缘检测是在一阶微分算子的基础上,增加了非最大值抑制和双阈值两项改进,利用非极大值抑制不仅可以有效地抑制多响应边缘,而且还可以提高边缘的定位精度;双阈值可以确定真实的和潜在的边缘,有效减少漏检率。
所谓非最大值抑制是一种边缘细化方法。通常得出来的梯度边缘不止一个像素宽,而是多个像素宽,因此这样的梯度图还是很“模糊”。非最大值抑制能帮助保留局部最大梯度而抑制所有其他梯度值。只保留了梯度变化中最锐利的位置。算法:1)将当前像素的梯度强度与沿正负梯度方向上的两个像素进行比较。2)如果当前点的梯度强度和同方向的其他点的梯度强度相比较是最大,保留其值。否则抑制,即设为0。比如当前点的方向指向正上方90°方向,那它需要和垂直方向,它的正上方和正下方的像素比较。
在施加非极大值抑制之后,剩余的像素可以更准确地表示图像中的实际边缘。然而,仍然存在由于噪声和颜色变化引起的一些边缘像素。为了解决这些杂散响应,必须用弱梯度值过滤边缘像素,并保留具有高梯度值的边缘像素,可以通过选择高低阈值来实现。如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素;如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素;如果边缘像素的梯度值小于低阈值,则会被抑制。阈值的选择取决于给定输入图像的内容。一般高低阈值比在2:1到3:1之间
本发明实施例中根据图像特征,选取3*3的核进行卷积,边缘检测的梯度上限阈值为120,下限阈值为40。经过canny边缘检测的图片效果如图8所示。
第五步,螺纹孔位置检测。这一步主要是用霍夫圆检测算法来确定螺纹孔位置,霍夫圆检测的基本原理是一个圆上的点都沿着其梯度方向画线,那么所有线的交点就是圆心,先计算可能的圆心,再计算可能的半径。(核心关键部分写清楚,如何运用结计算过程)
初始化圆心空间n(a,b),令所有的n(a,b)=0。遍历二值图中的所有非0像素点,沿梯度方向和其反方向画线,线段的起点和长度由设置的半径区间决定,将线段经过的所有累加器中的点(a,b)的n(a,b) =1,统计排序n(a,b),得到可能的圆心。对于可能的圆心,从累加器点数从高到低进行排序,依次计算边缘图中所有的非0像素点距此圆心的距离,并对距离从小到大排序,对于距离相差小于某个阈值的点视为在同一个圆中,统计属于该半径的非0点数。重复以上步骤计算多个圆心点,优先选择非0点数最多的半径画圆。在此情况下,会检测到许多的圆存在,根据对不同图片多次检测的结果可知,模组中央两个螺纹孔的间距约为900个像素点,据此设置圆心最小间距,圆心之间距离小于此间距的只取累加器点数最多的为圆心。
由试验得知模组底座内圆轮廓半径约为轮廓半径约为25-30个像素点,故设置半径区间在25-30,最优圆半径不在此范围的全部排除掉。由图9可看出设定的参数可以很好地利用霍夫圆检测的方法检测出两个螺纹孔的位置,根据模组最初的设计,模组的圆心刚好在两个螺纹孔圆心连线的中点,也可求得其位置,且在这一步要根据两个螺纹孔圆心坐标确定其连线的直线方程。
第六步,主动机械臂在模组上方完成照片拍摄,pc机计算出模组上两个螺纹孔的位置以及模组圆心位置之后,控制主动机械臂运动到第二个位置吸取led光源。
之后同样需要确定光源上的两个螺纹孔在空间中的位置和姿态。因此机械臂将继续运动到下一个位置,使光源位于第二相机的正下方,拍摄光源,获取所需的位姿数据。光源图片如图10所示。
第七步,对led光源的图片进行图像处理,获取图片中两个螺纹孔的位置,并计算出两个螺纹孔圆心连线与模组上两个螺纹孔圆心连线的夹角。这一步的图像处理的预处理过程与模组图像处理的预处理基本雷同。区别在于led光源的图像中,两个螺纹孔的边缘形状不是标准的圆,而是两段不太标准的圆弧,故无法通过霍夫圆检测的方法来确定其圆心,因此提出另一种代替的检测定位方法。根据图像可以看出螺纹孔所在的位置为光源两条边的交点,故两个螺纹孔的圆心,应该刚好在两条直线的交点所连成的线段上,且螺纹孔圆心连线的中点,应该与两个交点连线的中点重合。获得两个交点坐标后,即可求得交点连线的直线方程,以及led光源圆心的位置坐标。如图11所示。
第八步,获取到两对螺纹孔所有的相对位置信息以后,机械臂开始带动光源进行装配。程序计算出两个中心点在空间中三个坐标方向的偏差,并发送给机械臂,机械臂中会调用相应的函数指令根据数据做出相应的移动,带动led光源到达模组上方,使两者中心重合。之后根据上文计算的结果,计算出两对螺纹孔所在直线的夹角,并发送给主动机械臂,使其调用相应的函数绕中心点旋转对应的角度。使对螺纹孔重合,并压紧固定光源,从动机械臂来完成锁螺钉的操作。
第九步,提前对两台机械臂各自所在的基坐标系进行标定,求得两个坐标系的位置转换矩阵t。在这一步中,将上文计算出的模组上螺纹孔的位置,转换到从动机械臂的基坐标系下,求得其位置,并控制从动运动到指定位置,并启动电气系统,由自动锁螺丝机进行锁螺钉的操作,完成一次装配。
应当理解,本文所述的示例性实施例是说明性的而非限制性的。尽管结合附图描述了本发明的一个或多个实施例,本领域普通技术人员应当理解,在不脱离通过所附权利要求所限定的本发明的精神和范围的情况下,可以做出各种形式和细节的改变。
1.一种基于视觉定位的双臂协同智能装配系统,其特征在于,包括两台机械臂和两台相机,其中,第一相机固定在第一机械臂的末端执行器上,用来拍摄模组底座;第二相机固定在第一机械臂外部,用来拍摄led光源;第二机械臂的末端执行器为自动打螺丝机,
在系统正式开始工作之前,进行前期标定,进行第一相机和第一机械臂基坐标系的标定,第二相机和第一机械臂基坐标系的标定,以及第一机械臂和第二机械臂之间位置转换的标定工作,获得对应的转换矩阵,以便将相机拍摄的图片中点的位置转换到机械臂的基坐标系下,引导机械臂到达指定位置;
系统装配,分别进行如下动作:
当待安装的模组底座运行到安装工位时,第一机械臂运动至模组上方由标定关系确定的拍摄基准,触发第一相机拍照,并对待安装的模组的照片进行图像处理之后,获取模组上两个螺纹孔的位置;
第一机械臂吸取led光源并将其准确的移动到第二相机下方由标定关系确定的拍摄基准;
第二相机拍摄led光源照片,获取led光源上两个螺纹孔的位置;
将led光源放置在模组底板上,使led光源与模组底座上两组对应的螺纹孔重合并压紧;
第二机械臂运动到指定位置将led光源和模组底座采用螺钉锁死。
2.如权利要求1所述的基于视觉定位的双臂协同智能装配系统,其特征在于,对待安装的模组的照片进行图像处理之后,获取模组上两个螺纹孔的位置如下:
对拍摄的图片进行预处理,先根据相机每次拍摄的图片效果截取照片中靠近模组中央位置的包含需要定位的两个螺纹孔一个方形区域,对图形进行去噪处理;
对去噪后的图像进行初步二值化处理,算法步骤如下:首先采集一组不同光照情况下的模组图片估算出每张图片中螺纹孔区域灰度值的变化范围(i0~in);取变化阈值t0≥in-i0;每次拍摄好图片之后,首先对图片进行遍历,记录每一个像素点的灰度值,并进行比较,获取图像中的最小灰度值im;取图像分割阈值t=im t0;利用阈值t对图像进行初步二值化分割;
进行边缘检测;
进行螺纹孔位置检测,用霍夫圆检测算法来确定模组上螺纹孔位置。
3.如权利要求2所述的基于视觉定位的双臂协同智能装配系统,其特征在于,进行螺纹孔位置检测,用霍夫圆检测算法来确定模组上螺纹孔位置具体如下:初始化圆心空间n(a,b),令所有的n(a,b)=0;遍历二值图中的所有非0像素点,沿梯度方向和其反方向画线,线段的起点和长度由设置的半径区间决定,将线段经过的所有累加器中的点(a,b)的n(a,b) =1,统计排序n(a,b),得到可能的圆心;对于可能的圆心,按照累加器点数从高到低进行排序,依次计算边缘图中所有的非0像素点距此圆心的距离,并对距离从小到大排序,对于距离相差小于某个阈值的点视为在同一个圆中,统计属于该半径的非0点数;重复以上步骤计算多个圆心点,优先选择非0点数最多的半径画圆,在此情况下,会检测到许多的圆存在,根据对不同图片多次检测的结果可知,模组中央两个螺纹孔的间距约为900个像素点,据此设置圆心最小间距,圆心之间距离小于此间距的只取累加器点数最多的为圆心,螺纹孔半径约为25-30个像素,据此设置霍夫圆检测的半径阈值。
4.如权利要求1所述的基于视觉定位的双臂协同智能装配系统,其特征在于,第二相机拍摄led光源照片具体如下,获取led光源上两个螺纹孔的位置:对led光源的图片进行图像处理,获取图片中led光源两个螺纹孔的位置,并计算出两个螺纹孔圆心连线与模组上两个螺纹孔圆心连线的夹角。
5.如权利要求4所述的基于视觉定位的双臂协同智能装配系统,其特征在于,led光源图片处理的计算过程如下:
首先同样需对图片进行滤波处理,排除噪声干扰;
进行二值化处理,此时根据图像特征可以发现,图片中光源区域的灰度值相较于其他区域比较大,因此仍需通过事先采集的图像样本集,确定不同光照条件下,光源图像的灰度值变化范围(i0’~in’),取变化阈值t0’≥in’-i0’;每次拍摄好图片之后,首先对图片进行遍历,记录每一个像素点的灰度值,并进行比较,获取图像中的最大灰度值im’;取图像分割阈值t’=im’-t0’;利用阈值t’对图像进行初步二值化分割;对二值化之后的图像再进行边缘检测,获得轮廓图;为了便于更好的提取螺纹孔特征,排除其他元素干扰,利用检测螺纹孔两侧的线段的交点来对螺纹孔进行定位;根据霍夫直线检测的算法,先后对led光源螺纹孔对应的线段进行提取,根据对不同图片多次检测的结果可知,两侧线段的长度约为100-150个像素点,两幅图中两个圆圈的位置已知,其连线中点的位置可求,其连线的直线斜率也可求,即光源螺纹孔连线中点的和斜率可求。此时光源螺纹孔连线的位置和斜率已知,模组底座的螺纹孔位置和斜率也已知,即可求解两对螺纹孔在空间中的位置关系,从而引导第一机械臂将光源准确的放置在模组底座上,使两对螺纹孔重合,完成装配。
技术总结