深入浅出地理解机器人手眼标定
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
参考代码:https://github.com/christianwengert/calib_toolbox_addon
所谓手眼系统,就是人眼睛看到一个东西的时候要让手去抓取,就需要大脑知道眼睛和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的关系知道,B和C的关系知道,那么C和A的关系就知道了,也就是手和眼的坐标关系也就知道了。
相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。
在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。这个过程中涉及到了图像标定,图像处理,运动学正逆解,手眼标定等。
常用的标定方法有:九点标定
九点标定:
九点标定直接建立相机和机械手之间的坐标变换关系。
让机械手的末端去走这就9个点得到在机器人坐标系中的坐标,同时还要用相机识别9个点得到像素坐标。这样就得到了9组对应的坐标。
由下面的式子可知至少需要3个点才能求出标定的矩阵。
(1)、标定,Halcon中进行9点标定的算子
C#
%前面求出图像坐标
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)、求解
C#
affine_trans_point_2d(HomMat2D,Row2,Column2,Qx,Qy)
%由像素坐标和标定矩阵求出机器人基础坐标系中的坐标
一些特殊情况的解释:
有些情况中我们看到相机固定在一个地方,然后拍照找到目标,控制机械手去抓取,这种就很好理解。我们也叫做eye-to-hand
还有一种情况是相机固定在机械手上面,这种情况的标定过程实际上和相机和机械手分离的标定方法是一样的,因为相机拍照时,机械手会运动到相机标定的时候的位置,然后相机拍照,得到目标的坐标,再控制机械手,所以简单的相机固定在末端的手眼系统很多都是采用这种方法,标定的过程和手眼分离系统的标定是可以相同对待的。我们也叫做eye-in-hand
版权声明:本文为CSDN博主「南山二毛」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16481211/article/details/79764730
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~