标题原理推导
Base为基坐标系(B),工具末端坐标系(T),标定板为Mark坐标系(M),相机坐标系(C)
在眼在手外的时候,其实是要求解
C
B
A
^{B}_{C}A
CBA 相机坐标系到Base基坐标系下的转换关系。
标定板上目标点坐标存在如下关系:
T
B
A
∗
M
T
A
=
C
B
A
∗
M
C
A
^{B}_{T}A*^{T}_{M}A=^{B}_{C}A*^{C}_{M}A
TBA∗MTA=CBA∗MCA
→
\quad \rightarrow \quad
→
M
T
A
=
B
T
A
∗
C
B
A
∗
M
C
A
^{T}_{M}A=^{T}_{B}A*^{B}_{C}A*^{C}_{M}A
MTA=BTA∗CBA∗MCA
已知标定板与机械臂末端的相对位置固定不变,,即
M
T
A
^{T}_{M}A
MTA 固定不变。
因此每个姿态下上式均成立:
M
T
A
=
B
T
A
i
∗
C
B
A
∗
M
C
A
i
^{T}_{M}A=^{T}_{B}A_{i}*^{B}_{C}A*^{C}_{M}A_{i}
MTA=BTAi∗CBA∗MCAi
当i=1,i=2时,存在:
B
T
A
1
∗
C
B
A
∗
M
C
A
1
=
B
T
A
2
∗
C
B
A
∗
M
C
A
2
^{T}_{B}A_{1}*^{B}_{C}A*^{C}_{M}A_{1} =^{T}_{B}A_{2}*^{B}_{C}A*^{C}_{M}A_{2}
BTA1∗CBA∗MCA1=BTA2∗CBA∗MCA2
→
\quad \rightarrow \quad
→
(
B
T
A
2
)
−
1
∗
B
T
A
1
∗
C
B
A
=
C
B
A
∗
M
C
A
2
∗
(
M
C
A
1
)
−
1
(^{T}_{B}A_{2})^{-1}*^{T}_{B}A_{1}*^{B}_{C}A=^{B}_{C}A*^{C}_{M}A_{2} *(^{C}_{M}A_{1} )^{-1}
(BTA2)−1∗BTA1∗CBA=CBA∗MCA2∗(MCA1)−1
→
\quad \rightarrow \quad
→
T
B
A
2
∗
B
T
A
1
∗
C
B
A
=
C
B
A
∗
M
C
A
2
∗
C
M
A
1
^{B}_{T}A_{2}*^{T}_{B}A_{1}*^{B}_{C}A=^{B}_{C}A*^{C}_{M}A_{2} *^{M}_{C}A_{1}
TBA2∗BTA1∗CBA=CBA∗MCA2∗CMA1
对于每两个姿态都存在上式,组成一个AX=XB的矩阵方程,X为 X = C B A 1 = C B A 2 X=^{B}_{C}A_{1}=^{B}_{C}A_{2} X=CBA1=CBA2即标定的手眼矩阵。
求解AX=XB,方法不止一种,这里列举一种:
对于AX=XB: [ R A T A 0 1 ] ∗ [ R X T X 0 1 ] = [ R X T X 0 1 ] ∗ [ R B T B 0 1 ] \begin{bmatrix} R_{A}& T_{A} \\0&1\end{bmatrix}*\begin{bmatrix} R_{X}& T_{X} \\0&1\end{bmatrix}=\begin{bmatrix} R_{X} &T_{X} \\0&1\end{bmatrix}*\begin{bmatrix} R_{B}& T_{B} \\0&1\end{bmatrix} [RA0TA1]∗[RX0TX1]=[RX0TX1]∗[RB0TB1]
展开:
{
R
A
∗
R
X
=
R
X
∗
R
B
(
1
)
R
A
∗
T
X
+
T
A
=
R
X
∗
T
B
+
T
X
(
2
)
\{\begin{aligned}R_A*R_X=R_X*R_B \quad (1) \\R_A*T_X+T_A=R_X*T_B+T_X \quad (2)\end{aligned}
{RA∗RX=RX∗RB(1)RA∗TX+TA=RX∗TB+TX(2)
对于(1)等式两边同时乘以单位阵,然后对矩阵向量化得:
v
e
c
(
R
A
∗
R
X
∗
I
)
=
v
e
c
(
I
∗
R
X
∗
R
B
)
→
(
R
A
⊗
I
T
)
∗
v
e
c
(
R
X
)
=
(
I
⊗
R
B
T
)
∗
v
e
c
(
R
X
)
→
(
R
A
⊗
I
T
−
I
⊗
R
B
T
)
∗
v
e
c
(
R
X
)
=
0
vec(R_A*R_X*I)=vec(I*R_X*R_B) \quad\rightarrow\quad (R_{A} \otimes I^T)*vec(R_X)=(I \otimes R_B^T)*vec(R_X)\quad\rightarrow\quad (R_{A} \otimes I^T-I \otimes R_B^T)*vec(R_X)=0
vec(RA∗RX∗I)=vec(I∗RX∗RB)→(RA⊗IT)∗vec(RX)=(I⊗RBT)∗vec(RX)→(RA⊗IT−I⊗RBT)∗vec(RX)=0
此时转换成AX=0的问题,单纯用SVD求奇异解便可得到 R X R_X RX, 将 R X R_X RX带入(2)式求,至此求解出需要的手眼矩阵 C B A ^{B}_{C}A CBA