汪凌阳,朱璠婷,蒋文萍
(上海应用技术大学电气与电子工程学院,上海 201418)
近年来,在国内外的工业机器人研究中,机器视觉检测[1]成为工业机器人智能制造发展的潮流。在机器视觉检测领域,非接触的视觉测量方法相较于人工测量在速度和精度上都具有优势,对工业机器人的工作效率和产能效率有极大的提高。
本文所研究的测距工作是指测量目标工件和摄像头之间的距离。在工业机器人的实际测距研究[2-4]中,激光测距、超声波测距和视觉测距是最为广泛的研究方向。激光测距和超声波测距由于需要借助激光测距仪和超声波传感器进行测距,如王子雨[5]提出一种结合立体视觉和激光测距的姿态识别方法;谢永超等[6]提出1种基于超声波传感器模块的测距方法。但成本较高,不利于在实际工业生产中推广应用。视觉测距指的是基于摄像头获取的二维图像应用视觉算法重建目标的三维信息从而进行测距工作。单双目测距和结构光测距是视觉测距中最主要的两种方式。结构光测距[6]属于主动式三维测量,其通过结构光投射至物体上测量物体的尺寸参数获取三维信息,其测量效果收到环境和物体性质的影响。单双目测距[7-10]属于被动式三维测量,从二维平面信息获取三维信息,其可有效降低成本并且避免受到测量环境和物体性质的影响。
本文考虑实际工作应用效能和资源成本,提出一种基于机器视觉的机械臂双目测距系统。此系统是通过双目CMOS相机拍摄目标工件得到二维图像,并进行相应的图像处理和立体匹配得出图像的视差图,从而重建三维信息得到点云,根据关键点的三维信息得出目标工件和摄像头的距离。通过此计算结果,配合机械臂抓取实现一系列的功能。此系统能够快速完成测距工件,并且在不依托任何附加光源的情况下保证精度和准度。
机械臂双目测距系统,即在自然光的工作环境下,采用2个固定的CMOS摄像头对目标工件进行图像采集。而后将二维图像结合机器视觉的图像处理算法得到目标工件的三维信息[11],将此三维信息传输至机械臂控制机构做出相应指令。此系统共分为4个步骤,分别是双目标定、立体校正、立体匹配、测距计算。机械臂双目测距系统流程图如图1所示。
图1 机械臂双目测距系统流程图Fig.1 Flowchart of the manipulator binocular distance measurement system
此系统采用三大坐标系分别是世界坐标系、相机坐标系和图像坐标系。目标工件的中心在世界坐标系的坐标为(x w,y w,z w),在相机坐标系中的坐标为(x c,y c,z c),在图像坐标系中的坐标为(x,y)。世界坐标系可通过刚体变换转化成相机坐标系,相机坐标系可通过透视投影转换成图像坐标系[12-14]。
刚体变换的转换关系的齐次表达式可表示为:
式中,R为旋转矩阵,表示绕坐标系三大轴的旋转角度,也是右相机相对左相机的旋转矩阵。R可划分为双目相机的合成矩阵R1,R2,用于下一步的立体校正。T是平移矩阵,表示在坐标系三大轴平移的列向量。R和T与相机无关,为相机的外参数。0T3表示[ 0,0,0]T。
P点在二维平面的成像根据三角形相似原理可知:
透视投影的转换关系的其次表达式可表示为:
联合式(1)、(3)可知:
式中:P1表示内参数;P2表示上述提到的外参数。P1包括相机的镜头焦距f和感光CMOS相关元件的中心位置。此外,相机的内参数还包括畸变系数,由于相机成像存在着径向和切向畸变[15],故此系统也应该考虑到相机的畸变系数。其中径向畸变常采用泰勒级数展开来描述,取前三阶次的系数k1、k2、k3,切向畸变取前两阶次的系数p1、p2[16]。令P点在图像坐标系中畸变矫正后的坐标为(x1,y),则畸变矫正的转换关系为:
本系统的双目测距是根据在立体匹配步骤后得到视差图通过三角测量[17]的数学模型计算得出的。
如图2所示,在本研究中,双目摄像头在统一水平线上,Ol和Or分别为左摄像头和右摄像头的光心,两者距离即为基线。P点是目标工件的中心,A1、A2分别为左、右摄像机的像平面。A1和A2经过旋转,至双摄像头的前方。Pl和Pr为目标工件中心点P在A1和A2左右摄像机像平面的投影,Pl和Pr的距离即为视差。以左右相机的光心在像平面的投影Ol
图2 机械臂双目测距系统Fig.2 Manipulator binocular distancemeasurement system
′和Or′为像平面的中心,则Pl的坐标为(xl,yl),Pr的坐标为(xr,yr)。f是左右摄像机的焦距,由于双目摄像机的摄像头的规格参数是一致的,故焦距是相同的。Z是P点到摄像头水平面的距离,即为深度信息[18],计算深度即是本文所探讨的双目测距计算。
结合相似三角形原理,可以得出:
由此可以得出,要获取距离Z信息,需要求得视差d,而求取视差的过程即是一维搜索的过程。其中一维搜索获取视差即是立体匹配的关键步骤。
双目标定是求解三维世界位姿关系和二维图像坐标的对应关系的过程[19]。双目标定主要计算的是双目工业相机的畸变系数和4个内参数以及旋转矩阵R和平移矩阵T,2个外部参数。其中所求解的内外参数,其是立体校正和立体匹配所采用的关键参数。
此系统使用的是带有500万像素镜头的CMOS彩色工业相机,其采集的图像分辨率为640×480。标定所采用的标靶为黑白正方形棋盘格,角点数量规格6×8,棋盘格大小为25 mm×25 mm。由于相机内外参数的求解至少需要3对及以上的图像对,并且在标定过程中容易存在重投影误差较大的图像,此类图像影响标定后内外参数的准确度。因此本文共采集了14对棋盘格图像对,有效保证双目标定的精度。
本文采用Matlab的StereoCameraCalibrator工具箱为双目相机标定工具箱。打开MATLB软件选择应用程序中的StereoCameraCalibrator,添加图像,选定3个径向畸变参数、2个切向畸变参数,其中左相机用Camera1表示,右相机用Camera2表示,进行标定。
采用Matlab标定后,误差如图3所示。图3展示了每个图像对的重投影误差,得知这14对的重投影误差平均值在0.13piexl。
图3 图像对的重投影误差Fig.3 Reprojection error of image pairs
并且经过标定后通过工具箱得出双目CMOS相机的相对位置关系,如图4所示。
图4 双目CMOS相机的相对位置Fig. 4 Relative position of binocular CMOScameras
最后,可以求得相机的内、外参数和左、右相机的内外参数
式中,Dl和Dr为左右2个相机的畸变系数。
在双目标定之后,需要将采集的图像对进行立体校正。由于本文的机械臂双目测距系统中的理想情况是双目摄像机的投影面是平行的,并且光轴与像平面垂直。在实际实验过程中,也尽量保证镜头安装在同一水平线上。在采集图像对根据上述求得畸变参数进行畸变校正后可以进行立体校正,以保证2幅图像可以严格对应。立体校正可以有效减少立体匹配的搜索量[20]。
本文采用的是Bouguet立体校正法,其校正原理是在校正过程中旋转一半的旋转合成矩阵,并建立行对准转化矩阵,从而使得重投影畸变降至最小,保证2个像平面在平行平面上。此处采用计算机视觉开源库OpenCV进行实验过程的立体校正。
首先采用stereoRectify函数进行旋转矩阵和投影矩阵的计算,再借助initUndistortRectifyMap函数进行计算畸变矫正和校正查找映射变换表,其可将原始采集的图像对和校正后的图像对上的点对应。最后载入验证图像对进行立体校正的图像对的检验。
在完成立体校正后,可以保证图像对的行对准,从而使得立体匹配的匹配点搜索工作从二维平面转化至一维搜索。
立体匹配主要是在左相机所成的图像中以任意1个像素点为参考点,在右相机中所成的图像中找寻与之相匹配的参考像素点,通过这一过程就可以获得相机的视差[21],这一过程在此系统测距的过程中非常重要,为后续的相机的深度信息的准确性埋下伏笔。
立体匹配通常具有匹配代价计算、代价聚合、视差计算和视差细化4个步骤[22]。其中匹配代价计算指的是度量像素匹配的相似性,其通常计算的是局部定义下2个相邻像素的匹配代价。而代价聚合可以在全局范围下根据匹配代价将像素间建立联系,可以有效地降低噪声带来的代价干扰。在全局优化的代价聚合后,各像素将进行匹配代价重新评估得到代价矩阵。根据代价矩阵可以计算各像素的视差值,最后进行视差细化,降低视差误差。根据上述步骤,立体匹配算法通常分为全局匹配算法和局部匹配算法[23]。
本文采用的是半全局的立体匹配算法SGBM。它具有较高的时效性[24],主要是利用互信息之间的像素进行匹配,简化了全局算法的求解过程,主要步骤是求取图像中的像素点8个方向的能量代价以及函数,当得到最小值时,代表着该图像中的像素点作为匹配点可以得到最佳的视差值。该算法中的代价能量函数用公式表达为:
式中:E(D)表示的是能量函数;C(p,Dp)表示在图像中任意一个像素点所对应的代价函数;Np代表像素点的集合;T[|Dp-Dq|]=1与T[|Dp-Dq|]>1代表着各像素点之间的1个约束函数;T[|Dp-Dq|]=1表示p区域内的视差值与q区域内的差值等于1,此时P1作为惩罚系数将会受惩罚,T[|Dp-Dq|]>1表示p区域内的视差值与q区域内的差值大于1,而这时是P2作为惩罚系数惩罚[25]。
根据上述实验步骤对此系统进行测距验证。取工件正面的中心点作为目标工件中心点,不断调整目标工件和双目工业相机的距离,进行测距实验,测距结果如表1所示。
由表1可见,此机械臂双目视觉测距系统的测距平均误差在0.3%以下,随着矩阵增加,测距误差逐渐升高。此误差主要来源于双目标定环节中的内外参数误差。
表1 机械臂双目测距系统测量结果Tab.1 The measurement result of manipulator binocular distance measurement system
本文主要研究了基于机器视觉的机械臂双目测距工作,其中包括对双目工业相机进行双目标定得到其内外参数,并根据内外参数进行立体校正和立体匹配得到视差图进行双目测距工作。双目测距可以有效地帮助机械臂控制系统获取目标工件的三维信息并实现定位抓取等一系列通过。从实验结果上看,本系统具有一定标定上导致的测量误差但是仍保有高精度的测量精度,具有一定的可行性和实践价值。