相机标定简介

1.背景

机器人视觉应用中,手眼标定是一个非常基础且关键的问题。简单来说手眼标定的目的就是获取机器人坐标系和相机坐标系(或者像素坐标系)的关系,最后将视觉识别的像素坐标转换到机器人坐标系下。

2.两大类型的手眼标定

手眼标定行业内主要分为两种形式,根据相机固定的地方不同,如果相机和机器人末端固定在一起,就称之为“眼在手”,如果相机固定在机器人外面的底座上,则称之为眼在外。

2.1 眼在手的标定

相机标定简介

如图所示,当相机固定于机械臂末端时,此时相机坐标系camera和机械臂末端坐标系end固定为一常矩阵,他们两者的转化关系endTcamera^{end}T_{camera}即为待求解的量,保持标定板位置不变,则棋盘格角点在机器人基坐标系的坐标是固定的

basep=baseTendendTcameracamerap^{base}p=^{base}T_{end}{^{end}}T_{camera}{^{camera}}p

其中basep^{base}p代表固定在某个位置的标定板的点在基坐标系下的坐标,这个坐标是保持不变的,这个坐标的计算如下: 在机械臂末端装上探针,直接由末端去触碰标定板格点,根据机器人正向运动学或者示教器(机器人控制系统)可以得到角点在机器人基坐标系下的坐标basep^{base}p
接着我们控制机器人变换几个不同的姿态并用相机拍摄标定板识别出角点在相机坐标系下的坐标(这里假设已知,实际还有一个像素坐标系至相机坐标系的转化),接着分2D相机和3D相机讨论。

  • 3D相机:因为3D相机可以直接识别测量出棋盘格角点以及对应的3D坐标camerap^{camera}p,则对前式作简单的变换:

(baseTend)1basep(camerap)1=endTcamera(^{base}T_{end}){^{-1}}{^{base}p}({^{camera}}p)^{-1}={^{end}}T_{camera}

左边中的三个量都是已知量,因此标定矩阵endTcamera^{end}T_{camera}即可求出。

  • 2D相机:因为2D相机无法测量深度值,因此无法重建测量出来目标物体的3D坐标信息。一般2D相机只用于识别平面上物体的位移和旋转关系,可以通过下面这个方法直接估计目标点在基坐标系下的位置。

相机标定简介

如图所示,我们可以通过摆放三个标志物于相机视野的角落,这样识别出来三个位置点在像素坐标系中的坐标[u0,v0]T[u_0,v_0]^T,[u1,v1]T[u_1,v_1]^T,[u2,v2]T[u_2,v_2]^T.然后我们可以构建平行四边形,用两个坐标轴的向量去计算三个位置点在图像坐标系下的坐标[ui,vi]T[u_i,v_i]^T,注意这里的坐标轴不需要是直角坐标轴。

相机标定简介

然后我们通过在机器人末端安装探针,通过示教器移动机器人至标志物处,得到这三个位置点在机器人基座表系下坐标[x0,y0,z0]T[x_0,y_0,z_0]^T,[x1,y1,z1]T[x_1,y_1,z_1]^T,[x2,y2,z2]T[x_2,y_2,z_2]^T,这三个点在一个平面上。根据相似三角形的原理,我们可以计算出目标点在机器人基坐标系下的坐标basepi=[xi,yi,zi]T^{base}p_i=[x_i,y_i,z_i]^T

相机标定简介

于是通过上式我们可以将目标点的像素坐标[ui,vi]T[u_i,v_i]^T转化为在机器人基坐标系下的三维坐标basepi=[xi,yi,zi]T^{base}p_i=[x_i,y_i,z_i]^T,这个方法需要目标检测平面和相机平面平行。(我们应该就用的这个方法)

2.2 眼在手外的标定

相机标定简介

这种关系下, 机器人基坐标系base和相机坐标系camera之间的关系固定不变,他们两者的关系baseTcamera^{base}T_{camera}即为待求解的量,棋盘格角点坐标在机器人末端坐标系下的坐标是固定的。

  • 3D相机

相机的图像坐标为二维坐标,代表了在图像中的行数和列数。将二维的图像坐标转换为在相机坐标系下的三维坐标,需要用到相机的内参公式和深度值:

相机标定简介

z为目标点的深度值,3D相机能够测出来目标点的深度,从而能够计算出目标点在相机坐标系下的3维坐标camerap^{camera}p,相机相关内参一般相机会提供,如果没有给出,则我们需要通过张正友标定法标定相机,接下来我们需要测量出标定板的角点在机器人基坐标系下的坐标basep^{base}p,便可以通过下式标定出机器人和相机之间的转化矩阵baseTcamera^{base}T_{camera}

相机标定简介

basep^{base}p可以通过如下方法求得:

相机标定简介
其中baseTend^{base}T_{end}endTboard^{end}T_{board}分别代表机器人末端坐标系到基坐标系的转化矩阵和棋盘格坐标系到机器人末端坐标系的转换矩阵,baseTend^{base}T_{end}可以实时根据机器人正运动学得到,而endTboard^{end}T_{board}是固定不变的,可以通过测量两者之间的偏移和旋转得到,一般我们设棋盘格的左上角为原点,然后测量或者根据尺寸三维模型得到棋盘格原点到机器人末端坐标系原点的平移坐标,一般棋盘格平面与机器人末端平面平行,这样旋转关系也知道了,于是可计算得到endTboard^{end}T_{board}boardp^{board}p代表棋格盘角点在棋盘格坐标系下的坐标,这个同样根据棋盘格的尺寸得到。

  • 2D相机:
    • 2D相机一般用于平面的物体识别,只需估计出一个平面的z坐标,然后便可以根据前式计算得到目标点在相机坐标下的坐标,之后的标定步骤和3D相机一样

    • 同2.1中2D相机的方法一样,只要目标物体所在工作平台的参考点集可以实时被测量得到,同时我们又事先标定了这个参考点集在机器人坐标系下的坐标,那么我们可以通过同样的比例关系计算得到目标点在机器人基坐标系的坐标。