机器人手眼标定 (四轴/六轴都适用)
问题解析
机器人手眼标定分为两种情况:eye-in-hand和eye-to-hand,即传感器是否安装在机器人手抓末端。不管是那种情况,手眼标定的科学问题都是求解AX=XD的问题,其中X为刚体变换矩阵,包含旋转和平移两个部分。通常关于该问题的求解方法分为两类:1)先求解旋转矩阵,再计算平移向量;2)同时求解旋转矩阵和平移向量。
(1)CX=XD
CX=XD\tag{1}
CX=XD(1)
如何计算X?
公式CX=XD中,矩阵C为相机坐标系经过一次运动之后的相对位姿,可以通过pnp算法计算出来,矩阵D为机器人手抓坐标系经过一次运动之后的相对位姿,可以通过机器人控制器读取(计算)出来。因此,我们知道矩阵C和D都是刚体变换矩阵,都包含旋转和平移两个部分。设Rc、tc、Rd、td分别为矩阵C、D中包含的旋转矩阵和平移向量,将其带入上式化简得:
(2){Rc=RRdR−1(Rc−I)t=Rtd−tc
\left\{\begin{matrix}
R_{c}=RR_{d}R^{-1}\\
(R_{c}-I)t=Rt_{d}-t_{c}
\end{matrix}\right.\tag{2}
{Rc=RRdR−1(Rc−I)t=Rtd−tc(2)
对于一般奇异矩阵T,可以对其进行特征值分解,得:
(3)T=U⋅[λ1000λ2000λ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λ3⎦⎤⋅U−1(3)
但是对于旋转矩阵R,由于其特殊性质,可以分解为以下形式:
(4)R=U⋅[1000e−jθ000ejθ]⋅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=U⋅⎣⎡1000e−jθ000ejθ⎦⎤⋅U−1(4)
对上式进行化简,得:
(5)kc=R⋅kd
k_{c}=R\cdot k_{d}\tag{5}
kc=R⋅kd(5)
式中:kck_{c}kc为RcR_{c}Rc对应的旋转向量,kdk_{d}kd为RdR_{d}Rd对应的旋转向量。
特别地,当机器人运动中存在纯平移的运动时,由公式(2), 存在Rc−I=0R_{c}-I=0Rc−I=0,即:
(6)tc=Rtd
t_{c}=Rt_{d}\tag{6}
tc=Rtd(6)
可见,这种纯平移运动也会建立类似于公式(5)的约束。
传统的手眼标定算法仅仅利用公式(5)建立的约束来建立方程组:
(7)[kc1,kc2,...,kcN]=R⋅[kd1,kd2,...,kdN]
[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)M1=R⋅M2
M_{1}=R\cdot M_{2}\tag{8}
M1=R⋅M2(8)
传统的标定方法利用公式(7)求解旋转矩阵R的前提是约束矩阵M1M_{1}M1可逆。
然而,桌面四轴机器人由于只具有x、y、z方向的移动和z方向的转动,因此决定了M1M_{1}M1的秩为1,因此通过传统方法计算出来的旋转变换R不为正交矩阵,即无法正确求解R。因此,传统的手眼标定方法不适用于桌面机器人。并且,对于六轴机器人,传统方法要求机器人的运动必须保证旋转向量具有三维空间特征。
传统方法仅仅使用公式(5)由机器人旋转信息提供的约束来约束方程,忽略了平移运动提供的信息(该种运动只有在机器人做纯平移运动时才存在),因此,可以将平移信息添加到约束中来求解旋转矩阵R:
(9)[kc1,...,kcN,tc1,...,tcM]=R⋅[kd1,...,kdN,td1,...,tdM]
[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)M1∗=R⋅M2∗
M_{1}^{*}=R\cdot M_{2}^{*}\tag{10}
M1∗=R⋅M2∗(10)
对于平移向量t的求解,根据公式(2),带入R,并将每相邻两次运动得到的方程联立,得到如下方程组:
(11)[Rc12−IRc23−I...RcN−1N−I]⋅t=[Rtd12−tc12Rtd23−tc23...RtdN−1N−tcN−1N]
\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}
⎣⎢⎢⎡Rc12−IRc23−I...RcN−1N−I⎦⎥⎥⎤⋅t=⎣⎢⎢⎡Rtd12−tc12Rtd23−tc23...RtdN−1N−tcN−1N⎦⎥⎥⎤(11)
将公式(11)简记为:
(12)t=M3−1⋅M4
t=M_{3}^{-1}\cdot M_{4}\tag{12}
t=M3−1⋅M4(12)
传统手眼标定方法,使用公式(10)计算平移向量。
大家好,我主要的研究方向有:
1)主流的结构光三维测量方法,包括:线扫,格雷码,相移,散斑等;
2)摄像机标定和投影仪标定;
3)点云处理;
4)图像处理;
5)编码标志点识别;
6)Halcon应用;
7)机器视觉相机选型。
对以上研究方向感兴趣的朋友可以加入我的知识星球:
