基于双目视觉的工件位姿检测方法
2021-07-08鲁照权
牛 晨,鲁照权,鲁 飞
(合肥工业大学电气与自动化工程学院,安徽合肥 230009)
0 引言
工业化生产过程中,大部分工业机器人往往无法直接获得工件的位姿信息,执行抓取任务时一般都是采用人工示教的方式,抓取位姿与工件位姿都需要预先规定。但当工件的位姿因为不确定因素发生变动时,会产生抓取误差[1]。近年来,随着机器视觉技术的发展,人们利用机器视觉技术对工件进行定位,并将工件的视觉信息传输给机器人,让机器人具有“感知能力”进而完成定位和抓取任务。双目视觉技术是机器视觉的重要组成部分,当抓取任务需要目标物空间位姿时,不同于单目视觉只能获取目标的二维信息,双目视觉具备获取目标三维信息的能力。
本文利用目标物的点、线特征及其本身几何约束建立一种基于双目视觉的空间位姿求解模型。该模型可分为5部分:双目摄像机标定、目标检测、特征点提取、立体匹配、位姿计算。利用SURF算法旋转和尺度不变性[2]搜索匹配模板以检测目标物所在区域。位姿检测的重点在于如何提取出目标物上的特征点,特征角点的检测精度将直接影响到目标物空间位姿的估算精度。而一般的角点检测算法如Harris角点检测算法存在误检和漏检情况[3],检测精度不高。本文对目标区域进行边缘检测[4],利用霍夫变换提取特征边缘,求解直线交点拟合出目标物的特征点,提升了角点的检测精度。采用基于灰度函数的双向区域匹配算法[5],对左右两图像所检测出来的特征角点进行双向确认,有效减少了误匹配的发生。
最后结合双目视觉模型建立图像特征角点像素坐标与用户坐标间的映射关系计算目标物在用户坐标系下的位姿信息。
1 双目位姿计算原理
机械臂抓取箱体工件的位姿需要知道其在用户坐标系的位置范围及相对朝向。对于箱体工件而言,由于其本身的几何约束,只需要求出工件表面的特征点坐标,经过计算便可确定其位姿信息[6],位姿计算示意图如图1所示。
图1 位姿计算示意图
在图1中,O-XYZ为用户坐标系,P1、P2、P3为箱体工件平面上的角点。P4为与P1、P2、P3异面的点。以这4个点建立目标物坐标系O′-X′Y′Z′,经过平移、旋转操作使目标物坐标系与用户坐标系重合,可得到目标物坐标系绕用户坐标轴的旋转参数(θx,θy,θz)。
工件特征角点Pi在用户坐标系的坐标Pi=(xi,yi,zi),将2坐标系重合可分为4个步骤:
(1)通过平移使两坐标系原点重合,平移向量为t,平移后各特征角点用户坐标为
(1)
特征角点的新坐标为
(2)
(3)
当θy为负时,令θy=π+θy。
(3)在步骤(2)的基础上绕用户坐标系X轴旋转角度θx,使目标物坐标系Z′轴与用户坐标系Z轴重合,旋转矩阵为
特征角点的新坐标为
(4)
(5)
(4)在Z′坐标轴与Z坐标轴重合后,绕用户坐标系Z轴旋转角度θz便可使两坐标系重合,旋转矩阵为
特征角点的新坐标为
(6)
(7)
(θx,θy,θz)反映了工件相对于用户坐标的位姿角度。此外,用箱体工件的重心坐标(xM,yM,zM)表示工件的总体位置,公式如式(8)。
(8)
摄像机的线性成像模型如图2所示。
图2 线性成像模型
空间点P的用户坐标为(XW,YW,ZW)与投影点p像素坐标(u,v)映射关系如式(9)所示。
(9)
式中:M1属于相机内参数,由fx,fy,u0,v0决定;M2属于相机外参数,由旋转矩阵R和平移向量T决定。
将内外参数矩阵合并,并将左、右2个相机线性模型联立可有:
将其消元整理后,可得到左、右相机像素坐标与用户坐标的映射关系:
(10)
通过张正友标定法[8]得到参数矩阵中的参数。在拍摄过程中,可能存在误差和噪声,一般取式(10)的最小二乘解作为理论值。通过该映射关系,便可用空间点P在左、右相机中的像素坐标估算出其用户坐标(XW,YW,ZW)。
空间位姿检测流程如图3所示。
2 目标检测
工件所处的环境一般比较复杂,对所拍摄的图片进行目标检测有利于甄别目标并检测目标所在区域,减小后续图像处理的计算量。经典的目标检测算法如采用基于HSV空间的目标识别方法[9]在目标物颜色并不鲜明时,检测效果并不理想,且受光照影响较大。SURF算法是基于SIFT算法的基础上提出的一种改进算法。其在特征点的提取和匹配速度方面达到近乎实时的水平。基于SURF算法检测分离目标区域具体步骤如下:
(1)在单一背景下,目标物每旋转45°,左摄像头便采集1幅图片,手动标记目标物轮廓,建立离线目标物图片模板库。
(2)采集场景图片,并与模板库中的图片用SURF算法逐一匹配,设定检测阈值(本文阈值设为7)。特征点匹配个数超过这一阈值则认为找到目标物,否则继续与模板库下一张图片匹配直至搜索完成。若直至最后仍未超过阈值则认为目标物不在此场景中。模板匹配效果如图4所示。
图4 模板匹配
(3)由匹配成功点求解模板图片与场景图片间的单应矩阵[10],将模板图片的4个顶点坐标由单应矩映射到场景图片中,获得映射坐标A(xA、yA)、B(xB、yB)、C(xC,yC)、D(xD,yD)。以(xmin,ymin)为矩形的左上顶点坐标,(xmax,ymax)为矩形右下顶点坐标截取目标区域。其中xmax、xmin、ymax、ymin分别表示A、B、C、D映射像素坐标横坐标的最大值、最小值和纵坐标的最大值、最小值。检测效果如图5所示。窗口截取区域即为目标区域。
图5 目标区域截取
3 特征点提取
3.1 边缘检测
确定目标物所在区域后,为了获得箱体工件特征点的像素坐标,需要对目标区域做相应处理,处理步骤包括边缘检测、直线检测和特征直线筛选。
边缘检测的目的是为了提取目标物的几何轮廓,本文采用经典Canny算法。当目标物因光照和遮挡等原因使图像出现亮度低和对比度低等情况时,Canny算法的检测效果并不理想。适当增强图像的对比度,使得目标物与背景颜色对比更为明显以便适度增大Canny算法梯度阈值以去除无关边缘和噪声干扰。对图5中目标区域边缘检测效果如图6所示。
图6 目标物边缘检测
3.2 特征角点提取
检测出目标物的边缘轮廓后,利用霍夫变换[11-12]以提取特征直线。
一条特征直线可能对应霍夫变换检测出的多条线段。为了检测结果的准确性,要根据实际情况选择两点之间的距离阈值(小于此阈值则认为这两点属于同一条线段)、线段长度阈值(大于此阈值则返回该线段参数)。霍夫变换检测的直线会有多条,需要从中筛选出特征直线。特征直线的筛选需满足以下条件:
(1)线段是目标物与背景的分界线,一侧像素为背景色,一侧像素偏目标物表面颜色。灰度梯度差异较大,属于强边缘。
(2)虽然目标物上各条平行的棱在图片上不会严格平行,但其θ值差异不会过大,如图6中线段1、2、3的θ值相近。因此以强边缘特征直线θ值为基准,设置偏差阈值,经多次试验,阈值取±15°时筛选的特征直线较为可靠。霍夫变换检测特征直线效果如图7所示。
图7 霍夫变换直线筛选
筛选出特征直线后,为了防止直线处于垂直状态时斜截式无法表示,直线应用两点式表示。计算它们的交点坐标。
用上述方法对左、右图像做同样处理,得到各候选特征点的左、右图像像素坐标。
4 立体匹配
立体匹配的目的是为了确定左右图像中的特征点的对应关系[13]。利用霍夫变换检测直线进而拟合出特征角点计算工件的位姿,仅需利用特征点像素周围的局部信息计算匹配代价,匹配左、右图像中所检测出的特征点。同时,局部立体匹配算法相较于其他立体匹配算法,具有计算复杂度低,时间效率高的优点[14]。采用双向灰度相关匹配,对一个匹配特征点进行双向确认,以减少误匹配的发生。
特征点立体匹配流程图如图8所示。
图8 特征点立体匹配流程图
考虑相机的安装偏差因素,图像的搜索区域高度设置为[vk-5,vk+5],宽度为[uk-d,uk+d]。d表示图像宽度的1/4,灰度相关函数[15]为
(11)
由式(11)计算出的相关分值区间为[-1,1],匹配窗口完全相似时分值为1,完全不相似时分值为-1。取n=m=5,匹配阈值设为0.85。
5 实验结果及分析
5.1 双目相机标定
本文采用张正友标定法对2个摄像头分别进行标定。标定物为标准棋盘格,左、右摄像头内外参数标定结果见表1、表2。
表1 左摄像头内外参数表
表2 右摄像头内外参数表
5.2 位姿检测
为便于测量工件角点实际坐标,工件均水平放置。本文共进行了30组实验,从中选取3组P1~P4坐标实验数据见表3。
表3 位姿检测实验数据表 mm
表3(续)
实验所用工件长a=150 mm,宽b=100 mm,高h=40 mm,利用式(12)可以计算得出抓取平面各边的理论长度,进而得到其与实际长度的误差。其对比见表4。
表4 抓取平面边长与实际边长对比 mm
(12)
由表4可知本文测量模型得到的抓取平面各边理论边长与实际边长相差很小,其平均误差不超过1mm。
根据表3实验数据可计算得出用户坐标系下工件重心位置坐标和工件姿态角度。其重心坐标理论值和实际数据对比见表5。
表5 重心坐标理论值与实际值对比 mm
由表5可知重心理论坐标与实际坐标最大平均误差为1.57 mm,不超过2 mm,满足误差要求。
工件在用户坐标系下姿态角理论值与实际值对比见表6。
表6 姿态角理论值与实际值对比 (°)
由于工件均是水平放置,θx、θy理论上为0°。本文测量模型计算的θx、θy均接近于0°,且θz理论值与实际值最大误差为3.33°,不超过4°,满足误差要求。
5.3 误差分析
实验中,特征点与相机间的深度距离与其横坐标成正比,与纵坐标成反比。当把工件重心的纵坐标分别设置为0、25、50、75、100 mm时,工件重心坐标Z值的绝对误差与横、纵坐标间的关系如图9所示。
图9 不同位置下三维坐标Z的误差
由图9可以看出,Z的绝对误差随着深度距离的增大,总体呈增大趋势。且误差的波动幅度随着深度距离的增大而变大。
6 结束语
本文建立了一种基于双目视觉的箱体工件空间位姿检测模型。该位姿检测模型结构简单,易于实现。在目标检测部分,采集目标物在不同角度下的图片建立模板库,再对场景图片利用SURF算法搜索匹配该模板库,结合匹配结果确定不同场景下目标物所在区域;在特征点提取部分,利用霍夫变换拟合提取特征点,减小了角点的检测误差。最终,结合双目视觉原理,实现了目标的识别和位姿检测。为后续机械臂执行抓取任务奠定了基础。实验结果显示重心坐标平均检测误差不超过2 mm,姿态角度检测误差不超过4°,验证了该方法的可行性。