手眼标定的理解附9点标定

  1. 什么是手眼标定?

确定像素坐标系和空间机械手坐标系的坐标转化关系
为什么需要九点标定?
为了得到机械和相机的关系,就好比人的手和眼的关系。我们用手将一个物体放到空间的一个位置,用眼看到这个物体,这也存在两个坐标系,一个是手所在的运动空间的坐标系,一个是视网膜上成像的二维平面坐标系。我们用眼看到一个物体,用手去拿,之所以能够准确地拿到这个物体,是因为我们的神经系统把这两个坐标系准确地关联好了。机械和视觉系统也是这样,相机对工作空间中的物体进行拍照,机械手要想准确地取到这个物体,就必须首先把机械坐标系和视觉坐标系进行准确地关联。

九点标定的基本原理:
使用机械手将物体放在工作空间中的9个位置,分别用相机进行拍照,取得9个点的机械坐标和像素坐标,然后用Halcon提供的求得仿射矩阵HomMat2D

眼在外:相机放置一个固定的位置,与机器人基坐标系相对位置不变
眼在手:相机和机器手绑定在一个位置,机器手移动,相机也跟着移动
举一个生活中常见的例子——用手移动物体:

第一步:眼睛观察到三维世界,并将其转换到视网膜平面(三维空间转换到二维平面)传送信息给大脑;
第二步:大脑想要移动某个物体,假设想要将物体从A点移动B点(二维坐标),但是物体是三维空间中的物体,是三维坐标,需要将二维坐标换算成三维坐标;
第三步:大脑已经获得A点和B点的三维坐标,大脑给手(执行机构)发出指令去完成这个任务;
其中第二步就是手眼标定,得到二维坐标(像素坐标)到三维坐标的转换矩阵
在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。这个过程中涉及到了图像标定,图像处理,运动学正逆解,手眼标定等。

根据相机的装载位置分为两种情况:
(1)不在手上(eye-to-hand)
相机固定在一个地方,机械手的运动不会带着相机一起移动。

(2)在手上(eye-in-hand)
相机安装在机械手上,随着机械手一起移动。较为常用。这个实际上和eye-to-hand类似。
可以快速有效地标定被测物体的坐标。
这种情况的标定过程实际上和相机和机械手分离的标定方法是一样的,因为相机拍照时,机械手会运动到相机标定的时候的位置,然后相机拍照,得到目标的坐标,再控制机械手,所以简单的相机固定在末端的手眼系统很多都是采用这种方法,标定的过程和手眼分离系统的标定是可以相同对待的。
手眼标定的理解附9点标定_第1张图片
相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。
在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。这个过程中涉及到了图像标定,图像处理,运动学正逆解,手眼标定等。
手眼标定的理解附9点标定_第2张图片
(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)
%由像素坐标和标定矩阵求出机器人基础坐标系中的坐标

一些特殊情况的解释:
有些情况中我们看到相机固定在一个地方,然后拍照找到目标,控制机械手去抓取,这种就很好理解。我们也叫做eye-to-hand
还有一种情况是相机固定在机械手上面,这种情况的标定过程实际上和相机和机械手分离的标定方法是一样的,因为相机拍照时,机械手会运动到相机标定的时候的位置,然后相机拍照,得到目标的坐标,再控制机械手,所以简单的相机固定在末端的手眼系统很多都是采用这种方法,标定的过程和手眼分离系统的标定是可以相同对待的。我们也叫做eye-in-hand
手眼标定的理解附9点标定_第3张图片
手眼标定的理解附9点标定_第4张图片

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