手眼标定_机器人手眼标定详细步骤

手眼标定_机器人手眼标定详细步骤机器人视觉系统中要实现像素坐标与实际坐标的转换,首先要进行标定

转载请注明出处 https://blog.csdn.net/wanggao_1990/article/details/81435660

机器人视觉系统中要实现像素坐标与实际坐标的转换,首先要进行标定。这里标定不仅包括摄像头标定,也包括机器人系统的手眼标定。这里的构型为Eye-in-hand。
这里写图片描述

1、摄像机标定

(1)理论

张正友棋盘标定法对摄像机进行标定。
由于摄像机标定结果要用到后面的手眼标定中,棋盘图片拍摄时需要遵守:标定板固定位置不动,手眼组合体变换姿态拍摄图片
目的:两组坐标系的两两转化矩阵: T 1 T_1 T1 T 2 T_2 T2
1) 摄像机坐标系C转化为图片像素坐标系P的转换矩阵T1

P = T 1 ∗ C P=T_1*C P=T1C

T1在摄像机标定中内参矩阵3*3
2) 棋盘世界坐标系G转化为摄像机坐标系C的转换矩阵T2

C = T 2 ∗ G C=T_2*G C=T2G

T2在摄像机标定中外参矩阵4*4,由旋转矩阵r33和平移向量t31构成[ t r; 0 0 0 1]

(2) 方法

OpenCv 或者 Matlab

2、手眼标定

(1)理论部分

手眼标定目的:得到机器手坐标系H转化为摄像机坐标系 C C C的转化矩阵 T 3 T_3 T3。可表示为:

C = T 3 ∗ H C=T_3*H C=T3H

T3需要根据公式 A X = X B AX=XB AX=XB得到;实际中,分别知道 A A A B B B求出来的X有无穷多个解。所以为了实现唯一解至少需要两组 A A A B B B,即至少需要3个位置的摄像机标定结果。
下图为 A X = X B AX=XB AX=XB图解,棋盘相对机器人基坐标系固定,因此有

B 1 ∗ X − 1 ∗ A 1 = B 2 ∗ X − 1 ∗ A 2 B_1*X^{-1}*A_1 = B_2*X^{-1}*A_2 B1X1A1=B2X1A2

转换 A 2 ∗ A 1 − 1 ∗ X = X ∗ B 2 − 1 ∗ B 1 A_2*A_1^{-1}*X = X*B_2^{-1}*B_1 A2A11X=XB21B1

可令 A = A 2 ∗ A 1 − 1 A= A_2*A_1^{-1} A=A2A11 B = B 2 − 1 ∗ B 1 B=B_2^{-1}*B_1 B=B21B1
在这里插入图片描述

1) A A A的求法

A A A是两个摄像机坐标系之间的变换矩阵。假设上述摄像机标定中有3张标定图片的外参标定结果分别是 H c 1 H_{c1} Hc1 H c 2 H_{c2} Hc2 H c 3 H_{c3} Hc3,那么可以得到两个 A A A矩阵:

A 1 = H c 2 ∗ H c 1 − 1 A_1=H_{c2}*H_{c1}^{-1} A1=Hc2Hc11

A 2 = H c 3 ∗ H c 2 − 1 A_2=H_{c3}*H_{c2}^{-1} A2=Hc3Hc21

2) B B B的求法

B是两个机器手坐标系之间的变换矩阵。假设上述摄像机标定中的3张标定图片所一一对应的机器手坐标系在基坐标系(也可以是工件坐标系或者其他固定的参考坐标系)中的坐标系描述矩阵结果分别是 H g 1 H_{g1} Hg1 H g 2 H_{g2} Hg2 H g 3 H_{g3} Hg3(需要从机器人控制器或示教器中读取或转换),那么可以得到两个 B B B矩阵:

B 1 = H c 2 − 1 ∗ H c 1 B_1=H_{c2}^{-1}*H_{c1} B1=Hc21Hc1

B 2 = H c 3 − 1 ∗ H c 2 B_2=H_{c3}^{-1}*H_{c2} B2=Hc31Hc2

由以上两组 A A A B B B,代入 A X = X B AX=XB AX=XB就可以得到唯一解X,从而 T 3 = X T_3=X T3=X
至少2组数据,可以进行求解,参考Navy_HandEye或Tsai_HandEye等方法。

(2)计算过程

  1. 获取摄像机标定已知摄像机外参矩阵 H c 1 H_{c1} Hc1 H c 2 H_{c2} Hc2 H c 3 H_{c3} Hc3(摄像机标定时已有)

  2. 从机器人控制器中读取对应的机械手坐标末端姿态描述数据
    机器人系统的坐标系描述数据可能有2种形式:
    – 平移向量+欧拉角: x , y , z , r z , r y , r z x, y, z, r_z, r_y, r_z x,y,z,rz,ry,rz , 需要知道转换关系.
    – 平移向量+四元数模式: x , y , z , q w , q x , q y , q z x, y, z, q_w, q_x, q_y, q_z x,y,z,qw,qx,qy,qz,唯一转换。
    推荐选择四元数模式,转换成旋转矩阵方式唯一,如下

    R = [ 2 ( q w 2 + q x 2 ) − 1 2 ( q x q y − q w q z ) 2 ( q x q z + q w q x ) 2 ( q x q y + q w q z ) 2 ( q w 2 + q y 2 ) − 1 2 ( q y q z − q w q x ) 2 ( q x q z + q w q x ) 2 ( q y q z + q w q x ) 2 ( q w 2 + q z 2 ) − 1 ] R = \begin{bmatrix} 2(q_w^2+q_x^2)-1 & 2(q_xq_y – q_wq_z) & 2(q_xq_z+q_wq_x) \\ 2(q_xq_y+q_wq_z) & 2(q_w^2 + q_y^2)-1 & 2(q_yq_z-q_wq_x) \\ 2(q_xq_z+q_wq_x) & 2(q_yq_z + q_wq_x) & 2(q_w^2 + q_z^2)-1\\ \end{bmatrix} R=2(qw2+qx2)12(qxqy+qwqz)2(qxqz+qwqx)2(qxqyqwqz)2(qw2+qy2)12(qyqz+qwqx)2(qxqz+qwqx)2(qyqzqwqx)2(qw2+qz2)1

  3. 求解摄像机坐标系到机械手坐标系的变换矩阵X
    例如采集图像25幅,进行相机标定,可得到25个外参矩阵,同时对应可以从控制器界面读取或者转换得到25个姿态矩阵。接着可以利用 1) 2)得到 C 25 2 C_{25}^2 C252 A A A B B B,再利用 A X = X B AX=XB AX=XB计算得到 X X X

标题3、根据标定结果对目标定位

##(1)理论部分
由上述1、2标定得到:

矩阵 含义 说明
H p c H_{pc} Hpc 内参矩阵 摄像机坐标系C -> 像素坐标系P
H c g H_{cg} Hcg 手眼矩阵 机械手坐标系H -> 摄像机坐标系C
H g H_g Hg 从控制器读取的末端姿态矩阵 机械手坐标系H -> 基坐标系B

基坐标系转化为像素坐标系的变换矩阵,可由下面两式求解(注意使用齐次坐标系)。

z c ∗ [ u , v , 1 ] T = H p c ∗ [ x c , y c , z c ] T z_c* [u,v,1]^{T} = H_{pc} * [x_c,y_c,z_c]^{T} zc[u,v,1]T=Hpc[xc,yc,zc]T

[ x , y , z ] T = H g ∗ H c g − 1 ∗ [ x c , y c , z c ] T [x,y,z]^{T} = H_g * H_{cg}^{-1}*[x_c,y_c,z_c]^{T} [x,y,z]T=HgHcg1[xc,yc,zc]T


未完 …

win10,vs2015。 linux下使用有几个小错误或警告地方,根据编译器输出略作修改。源码 https://github.com/wanggao1990/HandEyeCalibration, 有用烦请star一下。

新浪演示视频地址 http://t.cn/RDW1sAf?m=4271991789966178&u=2335487824,CSDN视频 https://live.csdn.net/v/177543

opencv4.1 也加入了手眼标定,可以尝试。

今天的文章手眼标定_机器人手眼标定详细步骤分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/71475.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注