张禹,马君桥,王永志,王绮梦
(沈阳工业大学机械工程学院,辽宁沈阳 110870)
随着工业机器人自动化水平日渐提高,机器视觉成为自动化加工重要的一部分。通过视觉来实现对目标物体的定位、抓取、搬运工作时,首先要通过相机来获得目标物体的三维空间信息,于是需要进行手眼标定。传统九点法工业手眼标定局限于二维平面,只能获取目标物体的二维平面信息,缺少空间内的轴信息,只能在固定高度的平面上进行抓取。若机器人在空间中进行抓取,需进行三维空间手眼标定,即获取机器人坐标系与摄像机坐标系之间的转换关系。
张正友所提出的相机标定方法,是通过相机提取棋盘格角点,对摄像机的内、外参进行矫正。其他标定方法大多数是在张氏标定法基础上进行改进。但摄像机标定只能对摄像机本身的误差进行矫正,使机器人通过摄像机获得目标物点三维坐标还需要进行手眼标定,手眼标定是进行机器人抓取、装配等的前提条件。林嘉睿等借助一个特制的具有3个标记圆的靶标进行标定,通过控制机器人在固定高度移动,识别3个圆的圆心坐标,求得转换矩阵。此方法具有较强的鲁棒性,但仅标定了二维平面,无法进行立体识别。
AXELROD和HUANG通过将标定靶安装在机器人末端,简化了手眼标定的过程,但要求标定靶有较高精度。HU和CHANG为简化标定过程,提出一种仅需一只激光笔的方法,无需手动测量即可工作,适用于机器人不在摄像机视场范围的情况,但对设备要求较高且不易操作。YANG等采用标定球代替标定板或其他复杂的三维模型进行手眼标定,这种方法参数化表示简单,但获得的球体中心的坐标易出现误差,标定过程较为复杂。杨伟姣等采用Halcon软件进行手眼标定,机器人末端抓取标定靶,但易受光照影响,抗噪能力弱,需要人为调整。ZENG等为实现抓取任务将传统九点标定法改进为三维手眼标定,不需要末端工具夹取标定靶,精度良好,但标定所需时间较长。
对于手眼标定缺少空间轴信息、过程繁琐、所需外部工具较多的情况,提出一种机器人三维手眼标定方法,不需要人为参与,自主完成手眼标定工作,减少标定所需时间的同时保证标定的精度,最后对方法进行实验验证。
在摄像机标定过程中,建立了4个坐标系,来更好地说明三维空间中一点在摄像机内的成像原理。像素坐标系是描述目标物体成像在相机内部产生的像点的坐标系,是二维坐标系,单位是像素;图像坐标系原点为成像平面与相机光轴的交点,为建立在相机成像平面上的坐标系,是二维坐标系,单位是m;视觉传感器坐标系是为描述三维空间一点投影到视觉传感器上所产生的坐标系,是三维坐标系,单位是m;世界坐标系是描绘真实世界任意一点位置坐标的坐标系,是三维坐标系,单位是m。
视觉传感器成像的问题可以用小孔成像模型来模拟。(,)为像素坐标,(,)为图像坐标,(,,)为视觉传感器坐标,(,,)为世界坐标,为视觉传感器的焦距。
像素坐标系与图像坐标系之间的关系为
(1)
其中:、为像素尺寸;、为图像中心;为两个坐标系轴之间的倾斜程度。
图像坐标系与视觉传感器坐标系间关系可建立数学模型:
(2)
视觉传感器坐标系与世界坐标系转换关系是:
(3)
视觉传感器所识别到的物点经过旋转矩阵与平移矩阵即可转换到世界坐标系下。
传统的标定方式都局限于二维平面上,缺少轴的深度信息,无法通过视觉使机器人进行空间抓取。双目立体视觉根据视差原理,通过获取多组图像,进而得到物体空间坐标信息。图1为双目摄像机视差法获得深度的原理,其中、为空间一点在左右相机成像平面上的映射点。
图1 立体视觉三维空间示意
根据相似三角形原理有
(4)
求解方程得到相机坐标系下一点、、坐标:
(5)
其中:(,)、(,)分别为、在图像坐标系下的坐标,mm;为相机的焦距;为左右两相机之间基线的距离,mm;为视差,mm。
手眼标定按照视觉传感器与机器人的位置关系共有两种形式:一种是眼在手上(eye-in-hand)型,视觉传感器与机器人相对静止,随机器人运动而运动;一种是眼在手外(eye-to-hand)型,视觉传感器与机器人作相对运动,摆放在机器人外侧位置,如图2所示。
图2 eye-to-hand手眼标定模型为标定板坐标系到相机坐标系的转换矩阵,为相机坐标系到机器人基坐标系的转换矩阵,为机器人基坐标系到机器人末端坐标系的转换矩阵,为标定板坐标系到机器人末端坐标系的转换矩阵,其为已知,未知但恒定不变,于是有:
(7)
将式(7)转换成:
=
(8)
手眼关系采取eye-to-hand的形式,棋盘格标定板置于机器人末端执行器上,通过视觉传感器获取棋盘格的彩色图像与深度图像,得到中心点二维坐标。通过双目成像原理计算棋盘格中心点深度,并转换成视觉传感器坐标系下的空间坐标。在机器人坐标系中测量棋盘格中心点到末端执行器中心点之间的偏移量,以获得该点机器人坐标系下的坐标。
在机器人坐标系下、、方向上设定限位,构成一个机器人的标定空间。设置机器人移动步长,在标定空间内按照步长进行轨迹移动,移动轨迹设置为三角形轨迹或者N形轨迹,加快标定速度。
标定过程中机器人每经过标定轨迹所设定一路点,视觉传感器采集标定板中心点一次,并记录当前中心点在视觉传感器坐标系下的坐标。标定空间轨迹及路点如图3所示。
图3 手眼标定轨迹及路点
对摄像机识别到的点与机器人坐标系下的点进行转换,求解旋转矩阵则变为point-to-point Iterative Closest Points(ICP)问题:
(9)
(10)
(11)
通过奇异值(SVD)分解得到:
=Σ
(12)
其中:是分解得到的3×3阶的右奇异矩阵;是3×3阶的左奇异矩阵的共轭转置;是3×3阶的半正定对角矩阵。
设定迭代次数,经过ICP算法进行迭代,获得变换旋转矩阵与平移向量的最优解为
=
(13)
(14)
设置相机深度比例因子初值为1,比例因子与从相机捕获的每个深度像素相乘获得轴方向坐标值。为减少视觉传感器出现的缩放问题,通过下山单纯形(Nelder-Mead)法对深度比例因子进行迭代优化,求取比例因子最优解,缩小点云配准的误差。
于是获得两坐标系之间的转换矩阵为
(15)
实验采用六自由度UR5e系列机器人,Intel Realsense D415视觉传感器,PC端采用Intel 3060显卡,系统Ubuntu 16.04 LTS,PyCharm编译软件,使用Python与OpenCV计算机视觉库进行开发。棋盘格采用3×3阵列图案,方格边长为1.4 mm,粘贴在RG6抓手中心。整个系统采取eye-to-hand的手眼标定方式,UR5e控制RG6抓手始终平行于水平面,标定板中心与机器人工具中心在轴、轴方向偏移量分别为-0.266 2、0.022 m,如图4所示。
图4 手眼标定实验系统(a),Intel Realsense D415摄像机(b),RG6抓手与标定板黏贴位置(c)
分别对三角形、N形、基准法手眼标定移动轨迹进行实验,使用movel指令控制机器人遍历标定点阵。如图5(a)(b)分别为N形标定轨迹与三角形标定轨迹实际标定过程,展示在标定空间上的一个平面的轨迹,并获得两种轨迹转换矩阵与:
图5 手眼标定实验轨迹
(16)
(17)
基准法手眼标定是传统九点标定法的三维形式,设定、、三个方向上的限位,机器人按照步长遍历整个工作空间,将相机坐标系下与机器人坐标系下的点云进行转换,进而获得转换矩阵。
采取、、三个方向上的平均误差与定位误差作为改进算法精度指标的判定标准,其中(,,)为理论标准坐标值,(,,)为实验所得坐标值,为所对比点数:
(18)
(19)
(20)
(21)
通过机器人变换10组位姿,得到3种标定轨迹在、、三个坐标轴上的平均误差如表1所示,标定消耗时间与定位误差如表2所示。
表1 3种标定精度平均误差对比
表2 3种标定效率对比
由实验结果知:三角形标定轨迹精度最高,在、、3个坐标轴上的平均误差为0.902 1、0.885 3、0.808 4 mm,最大误差分别为1.318 8、1.221 4、1.518 8 mm,最小误差分别为0.244 1、0.295 4、0.074 3 mm,定位误差为0.863 6 mm。所提出方法缩短了标定操作时间,标定精度能够满足机器人进行视觉定位、抓取的工作需求。
为完成机器人空间抓取任务,提高机器人三维手眼标定精度与效率,分析并建立了机器人手眼标定数学模型,提出一种无需外接其他设备的手眼标定方法,标定过程无需人为参与。对眼在手外的手眼模式进行标定实验,通过棋盘格角点识别、ICP变换、SVD求解得到转换矩阵,采用Nelder-Mead法对深度比例因子进行优化,缩小标定误差。建立实验平台对所提出三维手眼标定方法的性能进行验证,由实验结果可得,改进方法的平均标定误差比标准方法减小了18.90%,标定时间减少了49.12%,可见所提出方法相比基准法的效率更高,能够满足标定需求。
该方法的局限性包括光线干扰仍对标定精度有着一定影响,对棋盘格中心与末端执行器中心的偏移量存在测量误差。未来的研究方向是进一步减少光照的影响,避免测量误差,增强方法的鲁棒性。