机器人手眼标定 (四轴六轴都适用)

机器人手眼标定 (四轴/六轴都适用)

问题解析

​ 机器人手眼标定分为两种情况:eye-in-hand和eye-to-hand,即传感器是否安装在机器人手抓末端。不管是那种情况,手眼标定的科学问题都是求解AX=XD的问题,其中X为刚体变换矩阵,包含旋转和平移两个部分。通常关于该问题的求解方法分为两类:1)先求解旋转矩阵,再计算平移向量;2)同时求解旋转矩阵和平移向量。
(1) C X = X D CX=XD\tag{1} CX=XD(1)

如何计算X?

公式CX=XD中,矩阵C为相机坐标系经过一次运动之后的相对位姿,可以通过pnp算法计算出来,矩阵D为机器人手抓坐标系经过一次运动之后的相对位姿,可以通过机器人控制器读取(计算)出来。因此,我们知道矩阵C和D都是刚体变换矩阵,都包含旋转和平移两个部分。设Rc、tc、Rd、td分别为矩阵C、D中包含的旋转矩阵和平移向量,将其带入上式化简得:
(2) { R c = R R d R − 1 ( R c − I ) t = R t d − t c \left\{\begin{matrix} R_{c}=RR_{d}R^{-1}\\ (R_{c}-I)t=Rt_{d}-t_{c} \end{matrix}\right.\tag{2} {Rc=RRdR1(RcI)t=Rtdtc(2)
对于一般奇异矩阵T,可以对其进行特征值分解,得:
(3) T = U ⋅ [ λ 1 0 0 0 λ 2 0 0 0 λ 3 ] ⋅ U − 1 T=U\cdot \begin{bmatrix} \lambda _{1} &0 &0 \\ 0&\lambda _{2} &0 \\ 0& 0 & \lambda _{3} \end{bmatrix}\cdot U^{-1}\tag{3} T=Uλ1000λ2000λ3U1(3)
但是对于旋转矩阵R,由于其特殊性质,可以分解为以下形式:
(4) R = U ⋅ [ 1 0 0 0 e − j θ 0 0 0 e j θ ] ⋅ U − 1 R=U\cdot \begin{bmatrix} 1 &0 &0 \\ 0&e^{-j\theta } &0 \\ 0& 0 & e^{j\theta } \end{bmatrix}\cdot U^{-1}\tag{4} R=U1000ejθ000ejθU1(4)
对上式进行化简,得:
(5) k c = R ⋅ k d k_{c}=R\cdot k_{d}\tag{5} kc=Rkd(5)
式中: k c k_{c} kc R c R_{c} Rc对应的旋转向量, k d k_{d} kd R d R_{d} Rd对应的旋转向量。

特别地,当机器人运动中存在纯平移的运动时,由公式(2), 存在 R c − I = 0 R_{c}-I=0 RcI=0,即:
(6) t c = R t d t_{c}=Rt_{d}\tag{6} tc=Rtd(6)
可见,这种纯平移运动也会建立类似于公式(5)的约束。

传统的手眼标定算法仅仅利用公式(5)建立的约束来建立方程组:
(7) [ k c 1 , k c 2 , . . . , k c N ] = R ⋅ [ k d 1 , k d 2 , . . . , k d N ] [k_{c_{1}},k_{c_{2}},...,k_{c_{N}}]=R\cdot [k_{d_{1}},k_{d_{2}},...,k_{d_{N}}]\tag{7} [kc1,kc2,...,kcN]=R[kd1,kd2,...,kdN](7)
将该公式简记为
(8) M 1 = R ⋅ M 2 M_{1}=R\cdot M_{2}\tag{8} M1=RM2(8)
传统的标定方法利用公式(7)求解旋转矩阵R的前提是约束矩阵 M 1 M_{1} M1可逆。

然而,桌面四轴机器人由于只具有x、y、z方向的移动和z方向的转动,因此决定了 M 1 M_{1} M1的秩为1,因此通过传统方法计算出来的旋转变换R不为正交矩阵,即无法正确求解R。因此,传统的手眼标定方法不适用于桌面机器人。并且,对于六轴机器人,传统方法要求机器人的运动必须保证旋转向量具有三维空间特征。

传统方法仅仅使用公式(5)由机器人旋转信息提供的约束来约束方程,忽略了平移运动提供的信息(该种运动只有在机器人做纯平移运动时才存在),因此,可以将平移信息添加到约束中来求解旋转矩阵R:
(9) [ k c 1 , . . . , k c N , t c 1 , . . . , t c M ] = R ⋅ [ k d 1 , . . . , k d N , t d 1 , . . . , t d M ] [k_{c_{1}},...,k_{c_{N}},t_{c_{1}},...,t_{c_{M}}]=R\cdot [k_{d_{1}},...,k_{d_{N}},t_{d_{1}},...,t_{d_{M}}]\tag{9} [kc1,...,kcN,tc1,...,tcM]=R[kd1,...,kdN,td1,...,tdM](9)
注意:只有当机器人做纯平移运动时公式(6)才有效。

公式(7)简记为:
(10) M 1 ∗ = R ⋅ M 2 ∗ M_{1}^{*}=R\cdot M_{2}^{*}\tag{10} M1=RM2(10)
对于平移向量t的求解,根据公式(2),带入R,并将每相邻两次运动得到的方程联立,得到如下方程组:
(11) [ R c 12 − I R c 23 − I . . . R c N − 1 N − I ] ⋅ t = [ R t d 12 − t c 12 R t d 23 − t c 23 . . . R t d N − 1 N − t c N − 1 N ] \begin{bmatrix} R_{c_{12}}-I\\ R_{c_{23}}-I\\ ...\\ R_{c_{N-1N}}-I \end{bmatrix}\cdot t=\begin{bmatrix} Rt_{d_{12}}-t_{c_{12}}\\ Rt_{d_{23}}-t_{c_{23}}\\ ...\\ Rt_{d_{N-1N}}-t_{c_{N-1N}} \end{bmatrix}\tag{11} Rc12IRc23I...RcN1NIt=Rtd12tc12Rtd23tc23...RtdN1NtcN1N(11)
将公式(11)简记为:
(12) t = M 3 − 1 ⋅ M 4 t=M_{3}^{-1}\cdot M_{4}\tag{12} t=M31M4(12)
传统手眼标定方法,使用公式(10)计算平移向量。

大家好,我主要的研究方向有:
1)主流的结构光三维测量方法,包括:线扫,格雷码,相移,散斑等;
2)摄像机标定和投影仪标定;
3)点云处理;
4)图像处理;
5)编码标志点识别;
6)Halcon应用;
7)机器视觉相机选型。

对以上研究方向感兴趣的朋友可以加入我的知识星球:

你可能感兴趣的:(机器人标定)