机器视觉(二)手眼标定(2D和3D)

手眼标定是指标定机器人坐标系统和相机坐标系之间的外参数关系。一般分为相机固定和相机安装在机器人末端两种固定方式,分为Eye-to-hand和Eye-in-hand方式。不论哪种方式其理论基础都是一样的。下面以对2D相机和3D相机的外参数进行阐述。

1 2D相机手眼标定

其实不止是2D相机,如果3D相机有图像输出,也可以用下面方法进行标定。

不论哪种安装方式,最终都可以转化为下面两种矩阵方程,分别对应两种求解方法。

机器视觉(二)手眼标定(2D和3D)_第1张图片

(1)AX = XB

方程的含义如下:

机器视觉(二)手眼标定(2D和3D)_第2张图片

具体推导:

方程一:wMe(i) * eMc = wMo * oMc(i);

方程二:wMe(i +1) * eMc = wMo * oMc(i +1);

由两个方程可得:

[inv(wMe(i+1)) * wMe(i)] * eMc = eMc * [inv(oMc(i +1)) *oMc(i)]

其中:

wMe: 机器人末端位姿

eMc: 相机坐标系相对于末端位姿,即要求的手眼关系。

oMc: 相机坐标系在标定板坐标系的位姿;

wMo;标定板坐标系在机器人基坐标系下的位姿。

(2)AX = ZB

方程的含义如下:

 

 

 

机器视觉(二)手眼标定(2D和3D)_第3张图片

具体推导:

wMe * eMc = wMo * oMc;

其中:

wMe: 机器人末端位姿

eMc: 相机坐标系相对于末端位姿,即要求的手眼关系。

oMc: 相机坐标系在标定板坐标系的位姿;

wMo;标定板坐标系在机器人基坐标系下的位姿。

上述两种方程,目前网上都有开源库进行求解,这里推荐一下CamOdoCal开源库, Ros里面好像也是用的它。

我对比了TSAI方法和CamOdoCal的四元数求解方法,最后精度效果都差不多。当然由AX = ZB方程还能直接求解出机器人和标定板系的关系,也就是Z。

上面举例都是以Eye-in-hand进行举例,Eye-to-hand理论都是一样的。

在Eye-in-hand标定过程中, 标定板固定, 机器人末端带动相机改变不同的位姿去拍标定板,获得不同的末端位姿参数和标定板位姿参数;在Eye-to-hand过程中,相机固定,标定板固定在机器人末端,变换不同的位姿在相机下面进行成像。获得不同的末端位姿参数和标定板位姿参数。位姿的变换尽可能的大,次数尽量多。

另外, 在实际机器人工业应用现场,为了快速简单调试,点到点的标定方法还是比较常见的,尤其是相机固定的时候,利用mark点的图像坐标和世界坐标,直接求home矩阵或者外参数。opencv都有相应的函数,这里不再赘述。

 

2 3D相机手眼标定

由于3D相机中,可能没有图像只有点云,这样就不太方便检测标定板的位姿。可以通过标定球等进行标定。原理如下:

机器视觉(二)手眼标定(2D和3D)_第4张图片

实施过程中就是对同一个标志物进行多次3D成像,获取标志物中心的相机3D坐标和此时对应的机器人位姿,然后用最小二乘法进行求解。

在点云检测过程中,球的检测一般比较容易。所以在标定过程中,一般用标定球进行标定。

经过一些项目上的应用测试,此种3D手眼标定方法精度一般在0.5mm之内。

 

 

 

 

你可能感兴趣的:(机器视觉)