halcon第二十四讲:手眼标定基本原理

手眼标定涉及的坐标系有:

  • 工件坐标系
  • 工具坐标系
  • 相机坐标系(相机坐标系里又有图像坐标系和像素坐标系,这其实就是前面讲的单目标定的内容)
  • 基坐标系

手眼标定一般有两种形式:

1、相机固定(eye-to-hand)

halcon第二十四讲:手眼标定基本原理_第1张图片

我们需要的最终结果,即得到base 与 cam 的空间位置关系,即一个4*4的变换矩阵。这个可以通过移动tool带着标定板移动到相机下方不同位置角度,由相机多次拍摄标定板来计算得到。

每次移动tool,工件坐标系相对于工具坐标系的位置是一定的,设其变换矩阵为

工具坐标系到基坐标系的变换关系也是一定的,一般由机器人厂家给定,设其变换矩阵为

相机固定,所以相机坐标系相对于基坐标系的位置也是一定的,设其变换矩阵为

然后和单目标定一样,由标定板知道一个点在工件坐标系中的位置假设用cal表示,由相机又可得到这个点的像素坐标假设用cam表示,然后cal*H1*H2*H3 = cam,通过拍摄多组图,可以解得其中的三个矩阵方程。即可得到,即相机坐标系与基坐标系之间的位置关系。

实际拍摄抓取时,通过相机知道像素坐标后,再由上面公式可得到,然后左乘的逆,就可得到,即工件在基坐标系中的位置:

有些相机虽然固定在机械手上,但如果相机每次拍摄时都回到标定时的固定位置拍摄,这还是属于eye-to-hand模式,即相机固定不动。

对于相机固定不动模式,有一种简单的标定方法叫九点标定:摄像机和标定板不动,让机械手末端装上探针或者其它东西去走这九个点(接触),记录下这九个点在机械手基础坐标系中的位置Row1,column1,同时摄像机拍摄得到这九个点的像素坐标Row,Column,由vector_to_hom_mat2d得到工件在像素坐标系中的位置与工件在机械手基础坐标系中的位置的变换矩阵HomMat2D,假设下次一个物品过来相机拍摄得到其像素坐标,由该变换矩阵就可得到该工件在机械手基础坐标系下的坐标,进而控制机械手末端执行抓取或其它任务。

*【1】标定
*1、得到九点标定板在相机坐标系中的像素坐标
* area_center (SortedRegions, Area, Row, Column)
*2、通过机械手末端走这九个点,得到九点标定板在机械手基础坐标系中的位置
*Row1:=[55,50,45,5,0,-5,-50,-50,-50]
*Column1:=[375,325,270,380,330,280,395,340,290]
*3、得到变换矩阵
*vector_to_hom_mat2d (Row, Column, Row1, Column1, HomMat2D)

*【2】求解
*affine_trans_point_2d (HomMat2D, row2, column2, Qx, Qy)

 

2、相机固定在机械手工具上(eye-in-hand) 

halcon第二十四讲:手眼标定基本原理_第2张图片

我们需要的最终结果,即得到cam与 tool 的空间位置关系,即一个4*4的变换矩阵。这个可以每次移动tool即相机在不同位置角度多次拍摄标定板来计算得到。 

设定位姿后,工件坐标系相对于 基坐标系的位置是一定的,设其变换矩阵为

工具坐标系与基坐标系的变换关系也是一定的,一般由机器人厂家给定,设其变换矩阵为

相机绑定在工具上,所以相机相对与工具的位置也是一定的,设其变换矩阵为

然后和单目标定一样,由标定板知道一个点在工件坐标系中的位置假设用cal表示,由相机又可得到这个点的像素坐标假设用cam表示,然后cal*H1*H2*H3 = cam,通过拍摄多组图,可以解得其中的三个矩阵方程。即可得到,即相机坐标系和工具坐标系之间的位置关系。

实际拍摄抓取时可获得像素坐标,通过上面公式,就可得到 ,然后左乘以  的逆,再左乘以 的逆,就可得到。即工件在基坐标系中的位置:

 

你可能感兴趣的:(halcon)