双目标定
工业上经常需要对双目相机进行标定,双目标定是进行机械臂手眼标定和末端标定的基础,准确的双目相机参数对机械臂的精准控制至关重要。
双目标定不仅需要标定出两个相机的内参和畸变参数,关键还要获得两个相机之间的相对位置。
假设标定板上某个点在世界系下的坐标
P
w
P_w
Pw,对应相机系的坐标为
P
l
,
P
r
P_l,P_r
Pl,Pr,右相机相对于左相机旋转平移矩阵为
R
,
T
R,T
R,T,该点相对于左相机的旋转平移矩阵为
R
l
,
T
l
R_l,T_l
Rl,Tl,相对于右相机的旋转平移矩阵为
R
r
,
T
r
R_r,T_r
Rr,Tr,对于左右相机显然有
P
l
=
R
l
∙
P
w
+
T
l
P
r
=
R
r
∙
P
w
+
T
r
P_l=R_l∙P_w+T_l \\ P_r=R_r∙P_w+T_r
Pl=Rl∙Pw+TlPr=Rr∙Pw+Tr
消去
P
w
P_w
Pw,有
(
R
l
)
−
1
∙
(
P
l
−
T
l
)
−
(
R
r
)
−
1
∙
(
P
r
−
T
r
)
=
0
(R_l)^{-1}∙(P_l-T_l )-(R_r )^{-1}∙(P_r-T_r )=0
(Rl)−1∙(Pl−Tl)−(Rr)−1∙(Pr−Tr)=0
同乘
R
r
R_r
Rr并移项可得
P
r
=
R
r
(
R
l
)
−
1
P
l
+
T
r
−
R
r
(
R
l
)
−
1
T
l
P_r=R_r (R_l)^{-1} P_l+T_r-R_r (R_l)^{-1} T_l
Pr=Rr(Rl)−1Pl+Tr−Rr(Rl)−1Tl
另外有
P
r
=
R
P
l
+
T
P_r=RP_l+T
Pr=RPl+T
因此可知
R
=
R
r
(
R
l
)
−
1
,
T
=
T
r
−
R
r
(
R
l
)
−
1
T
l
R=R_r (R_l)^{-1},T=T_r-R_r (R_l)^{-1} T_l
R=Rr(Rl)−1,T=Tr−Rr(Rl)−1Tl。而
R
l
,
T
l
,
R
r
,
T
r
R_l,T_l,R_r,T_r
Rl,Tl,Rr,Tr,均为已知量,据此可以计算得出双目相机的变换矩阵,之后再进行多次优化求解出更准确的参数。
手眼标定
一般在双目相机标定完成后,进行手眼标定。
定义四个坐标系:基础坐标系(用
b
a
s
e
base
base表示)、机械手坐标系(用
t
o
o
l
tool
tool表示)、相机坐标系(用
c
a
m
cam
cam表示)、标定物坐标系(用
c
a
l
cal
cal表示)。对坐标系之间的转换关系进行如下说明:
b
a
s
e
H
t
o
o
l
baseHtool
baseHtool表示机械手坐标系到基础坐标系的转换关系,可以由机器人系统中得出;
t
o
o
l
H
c
a
m
toolHcam
toolHcam表示相机坐标系到机械手坐标系的转换关系;这个转化关系在机械手移动过程中是不变的;
c
a
l
H
c
a
m
calHcam
calHcam表示相机坐标系到标定板坐标系的转换关系(相机外参);
b
a
s
e
H
c
a
l
baseHcal
baseHcal表示标定板坐标系到基础坐标系的变换,只要机械手和标定板的相对位置不变,这个变换矩阵不发生变化。
假设机械臂处于
X
X
X以及
Y
Y
Y位置,可以计算:
P
b
a
s
e
=
b
a
s
e
H
t
o
o
l
(
X
)
∗
t
o
o
l
H
c
a
m
∗
c
a
l
H
c
a
m
(
X
)
−
1
∗
P
c
a
l
P
b
a
s
e
=
b
a
s
e
H
t
o
o
l
(
Y
)
∗
t
o
o
l
H
c
a
m
∗
c
a
l
H
c
a
m
(
Y
)
−
1
∗
P
c
a
l
P_{base}=baseHtool(X)*toolHcam*calHcam(X)^{-1}*P_{cal} \\ P_{base}=baseHtool(Y)*toolHcam*calHcam(Y)^{-1}*P_{cal}
Pbase=baseHtool(X)∗toolHcam∗calHcam(X)−1∗PcalPbase=baseHtool(Y)∗toolHcam∗calHcam(Y)−1∗Pcal
这两个公式代表从标定物体的位姿转到相机系,在转到机械手系,再转到机器人基坐标系的过程,
因为
b
a
s
e
base
base和
c
a
l
cal
cal坐标系是固定的,所以
b
a
s
e
H
c
a
l
baseHcal
baseHcal不改变,所以
b
a
s
e
H
c
a
l
=
b
a
s
e
H
t
o
o
l
(
X
)
∗
t
o
o
l
H
c
a
m
∗
c
a
l
H
c
a
m
(
X
)
−
1
∗
P
c
a
l
=
b
a
s
e
H
t
o
o
l
(
Y
)
∗
t
o
o
l
H
c
a
m
∗
c
a
l
H
c
a
m
(
Y
)
(
−
1
)
∗
P
c
a
l
baseHcal=baseHtool(X)*toolHcam*calHcam(X)^{-1}*P_{cal} \\ = baseHtool(Y)*toolHcam*{calHcam(Y)}^(-1)*P_{cal}
baseHcal=baseHtool(X)∗toolHcam∗calHcam(X)−1∗Pcal=baseHtool(Y)∗toolHcam∗calHcam(Y)(−1)∗Pcal
记
b
a
s
e
H
t
o
o
l
(
∗
)
baseHtool(*)
baseHtool(∗)为
A
(
∗
)
A(*)
A(∗),
c
a
l
H
c
a
m
(
∗
)
calHcam(*)
calHcam(∗)为
B
(
∗
)
B(*)
B(∗),
t
o
o
l
H
c
a
m
为
X
toolHcam为X
toolHcam为X,所以有
A
X
=
X
B
AX=XB
AX=XB
A
A
A和
B
B
B均为已知量,故可以求解
X
X
X得到手眼变换矩阵
末端TCP标定
工业机器人末端工具中心点 (TCP) 是机器人实际的运动轨迹,在完成双目和手眼标定后,还需要对末端机构进行标定,即求得TCP到机械臂手的偏移向量
P
e
P_e
Pe。设末端工具中心点
P
P
P,根据手眼标定结果
t
o
o
l
H
c
a
m
toolHcam
toolHcam为已知量,
P
P
P在双目视觉传感器下的坐标为
P
c
P_c
Pc,由空间转换关系可知
[
P
c
1
]
T
=
t
o
o
l
H
c
a
m
∙
[
P
e
1
]
T
[P_c \quad 1]^T=toolHcam ∙[P_e \quad 1]^T
[Pc1]T=toolHcam∙[Pe1]T
根据此公式即可求解
手眼和末端标定过程了解不多,这里仅是个人理解