文章目录

  • 前言
  • 一、为什么手眼标定?
  • 二、使用步骤
  • 九点标定算法(halcon)
  • 三、总结
  • 参考链接



前言


一、为什么手眼标定?

为什么手眼标定?因为相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。这个过程中涉及到了图像标定,图像处理,运动学正逆解,手眼标定等。
手眼标定的类别有哪些呢?根据相机的装载位置分为两种情况:eye-to-hand(相机固定在一个地方,机械手的运动不会带着相机一起移动)和eye-in-hand(相机安装在机械手上,随着机械手一起移动)。

二、使用步骤

九点标定算法(halcon)

代码如下:

(1)、标定,Halcon中进行9点标定的算子

%前面求出图像坐标
area_center(SortedRegions,Area,Row,Column) %
Column_robot := [275,225,170,280,230,180,295,240,190]
%机器人末端运动到9点的列坐标
Row_robot := [55,50,45,5,0,-5,-50,-50,-50]
%机器人末端运动到9点的行坐标
vector_to_hom_mat2d(Row,Column,Row_robot,Column_robot,HomMat2D)
%求解变换矩阵,HomMat2D是图像坐标和机械手坐标之间的关系

(2)、求解

affine_trans_point_2d(HomMat2D,Row2,Column2,Qx,Qy)
%由像素坐标和标定矩阵求出机器人基础坐标系中的坐标

提示:
Row,Column对应的匹配到的9个像素坐标 ;
Row1,Column1对应手臂的位置;
Row2,Column2对应标定后相机抓取的特征的像素坐标;
Qx,Qy为标定后的手臂要走的坐标;
此方法没有考虑畸变。


三、总结

(1)、手眼标定涉及的坐标系有:

  • 工件坐标系
  • 工具坐标系
  • 相机坐标系(相机坐标系里又有图像坐标系和像素坐标系)
  • 基坐标系

(2)、四个坐标系之间的转换关系

  1. tool相对于base的转换 M1,变换已知的,可以手臂读出
  2. cal相对于tool的转换 M4,固定未知的,不用求出具体值
  3. cal相对于camera的转换 M3,变换已知的,相机内外参构成的
  4. camera相对于base的转换 MX,在相机固定时,这个也是一个固定值,未知

(3)、手眼标定原理

eyeinhand 手眼标定 python 手眼标定算法_图像处理