1. 前言
本文主要介绍eye-in-hand的手眼标定,引用OpenCV的文档原话和原图1:“The following picture describes the Hand-Eye calibration problem where the transformation between a camera (“eye”) mounted on a robot gripper (“hand”) has to be estimated.”
2. 手眼标定方程推导
step 0. 符号描述与目标介绍
如上图所示,
b
b
b表示
b
a
s
e
base
base,机械臂基座坐标系;
g
g
g表示
g
r
i
p
p
e
r
gripper
gripper,机械臂末端执行器坐标系(以gripper为代表);
c
c
c表示
c
a
m
e
r
a
camera
camera,相机坐标系;
t
t
t表示
t
a
r
g
e
t
target
target,标定目标坐标系(以棋盘格为代表);
i
i
i和
j
j
j表示机械臂的两个位置。
则矩阵的意义如下,
b
T
g
(
i
)
^{b} T^{(i)}_{g}
bTg(i),末端执行器坐标系到机械臂基座坐标系的转换矩阵,包含旋转矩阵
b
R
g
{^{b}} R_{g}
bRg和平移向量
b
t
g
{^{b}} t_{g}
btg;
c
T
t
(
i
)
^{c} T^{(i)}_{t}
cTt(i),标定目标坐标系到相机坐标系的转换矩阵,包含旋转矩阵
c
R
t
{^{c}} R_{t}
cRt和平移向量
c
t
t
{^{c}} t_{t}
ctt;
b
T
t
^{b} T_{t}
bTt,标定目标坐标系到机械臂基座坐标系的转换矩阵;
g
T
c
^{g} T_{c}
gTc,相机坐标系到末端执行器坐标系的转换矩阵,包含旋转矩阵
g
R
c
{^{g}} R_{c}
gRc和平移向量
g
t
c
{^{g}} t_{c}
gtc。
手眼标定的目标,即求解
g
T
c
\bf{^{g} T_{c}}
gTc。
在求解过程中,有两个不变量,(1)相机与末端执行器之间无相对运动,即
g
T
c
\bf{^{g} T_{c}}
gTc不变;(2)标定目标与机械臂基座之间无相对运动,即
b
T
t
\bf{^{b} T_{t}}
bTt不变。
step 1. 机械臂从初始位置移动到位置 i i i或者位置 j j j
P
b
=
b
T
g
(
i
o
r
j
)
∗
P
g
(1)
P_{b} = {^{b}} T^{(i \ or \ j)}_{g}*P_g \tag{1}
Pb=bTg(i or j)∗Pg(1)
其中,
P
b
P_{b}
Pb表示机械臂基座坐标系下的坐标点,
P
g
P_{g}
Pg表示末端执行器坐标系下的坐标点。任意位置,使用齐次变换的写法如下,
[
X
b
Y
b
Z
b
1
]
=
[
b
R
g
b
t
g
0
1
×
3
1
]
[
X
g
Y
g
Z
g
1
]
\left[ \begin{array}{c} X_b \\ Y_b \\ Z_b \\ 1 \end{array} \right ]= \left[ \begin{array}{cc} {^{b}} R_{g} & {^{b}} t_{g} \\ 0_{1 \times 3} & 1 \\ \end{array} \right ] \left[ \begin{array}{c} X_g \\ Y_g \\ Z_g \\ 1 \end{array} \right ]
⎣⎢⎢⎡XbYbZb1⎦⎥⎥⎤=[bRg01×3btg1]⎣⎢⎢⎡XgYgZg1⎦⎥⎥⎤
P
c
=
c
T
t
(
i
o
r
j
)
∗
P
t
(2)
P_{c} = {^{c}} T^{(i \ or \ j)}_{t}*P_{t} \tag{2}
Pc=cTt(i or j)∗Pt(2)
其中,
P
c
P_{c}
Pc表示相机坐标系下的坐标点,
P
t
P_{t}
Pt表示标定目标坐标系下的坐标点。任意位置,使用齐次变换的写法如下,
[
X
c
Y
c
Z
c
1
]
=
[
c
R
t
c
t
t
0
1
×
3
1
]
[
X
t
Y
t
Z
t
1
]
\left[ \begin{array}{c} X_c \\ Y_c \\ Z_c \\ 1 \end{array} \right ]= \left[ \begin{array}{cc} {^{c}} R_{t} & {^{c}} t_{t} \\ 0_{1 \times 3} & 1 \\ \end{array} \right ] \left[ \begin{array}{c} X_t \\ Y_t \\ Z_t \\ 1 \end{array} \right ]
⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤=[cRt01×3ctt1]⎣⎢⎢⎡XtYtZt1⎦⎥⎥⎤
P
g
=
g
T
c
∗
P
c
(3)
P_{g} = {^{g}} T_{c}*P_{c} \tag{3}
Pg=gTc∗Pc(3)
其中,
P
g
P_{g}
Pg表示末端执行器坐标系下的坐标点,
P
c
P_{c}
Pc表示相机坐标系下的坐标点。任意位置,使用齐次变换的写法如下,
[
X
g
Y
g
Z
g
1
]
=
[
g
R
c
g
t
c
0
1
×
3
1
]
[
X
c
Y
c
Z
c
1
]
\left[ \begin{array}{c} X_g \\ Y_g \\ Z_g \\ 1 \end{array} \right ]= \left[ \begin{array}{cc} {^{g}} R_{c} & {^{g}} t_{c} \\ 0_{1 \times 3} & 1 \\ \end{array} \right ] \left[ \begin{array}{c} X_c \\ Y_c \\ Z_c \\ 1 \end{array} \right ]
⎣⎢⎢⎡XgYgZg1⎦⎥⎥⎤=[gRc01×3gtc1]⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤
step 2. 标定目标到机械臂基座坐标系的转换
根据公式
(
1
)
(
2
)
(
3
)
(1)(2)(3)
(1)(2)(3),可得
P
t
P_t
Pt与
P
b
P_b
Pb的关系,
{
P
b
=
b
T
g
(
i
)
g
T
c
c
T
t
(
i
)
P
t
P
b
=
b
T
g
(
j
)
g
T
c
c
T
t
(
j
)
P
t
\left\{ \begin{aligned} P_b &= {^{b}} T^{(i)}_{g} {^{g}} T_{c} {^{c}} T^{(i)}_{t} P_{t} \\ P_b &= {^{b}} T^{(j)}_{g} {^{g}} T_{c} {^{c}} T^{(j)}_{t} P_{t} \end{aligned} \right.
⎩⎨⎧PbPb=bTg(i)gTccTt(i)Pt=bTg(j)gTccTt(j)Pt
因为
P
t
P_t
Pt与
P
b
P_b
Pb的关系固定,则
b
T
g
(
i
)
g
T
c
c
T
t
(
i
)
=
b
T
g
(
j
)
g
T
c
c
T
t
(
j
)
{^{b}} T^{(i)}_{g} {^{g}} T_{c} {^{c}} T^{(i)}_{t}= {^{b}} T^{(j)}_{g} {^{g}} T_{c} {^{c}} T^{(j)}_{t}
bTg(i)gTccTt(i)=bTg(j)gTccTt(j)
即,
(
b
T
g
(
j
)
)
−
1
b
T
g
(
i
)
g
T
c
=
g
T
c
c
T
t
(
j
)
(
c
T
t
(
i
)
)
−
1
(4)
({^{b}} T^{(j)}_{g})^{-1} {^{b}} T^{(i)}_{g} {^{g}} T_{c} = {^{g}} T_{c} {^{c}} T^{(j)}_{t}({^{c}}T^{(i)}_{t})^{-1} \tag{4}
(bTg(j))−1bTg(i)gTc=gTccTt(j)(cTt(i))−1(4)
公式
(
4
)
(4)
(4)就是手眼标定需要求解的方程,手眼标定问题转换为
A
X
=
X
B
AX = XB
AX=XB方程求解问题——
g
T
c
\bf{^{g} T_{c}}
gTc就是
X
X
X,
c
T
t
\bf{^{c} T_{t}}
cTt是相机外参
B
k
B_k
Bk,可由相机标定获得,
B
=
B
j
B
i
−
1
B = B_j {B_i}^{-1}
B=BjBi−1;
b
T
g
\bf{^{b} T_{g}}
bTg是末端执行器到基座坐标系的转换关系
A
k
A_k
Ak,可由机械臂运动学获得,
A
=
A
j
−
1
A
i
A={A_j}^{-1} {A_i}
A=Aj−1Ai。
3. 如何求解 A X = X B AX = XB AX=XB
OpenCV中,calibrateHandEye()函数,使用了多种方式求解,主要有两大类。
一种是先估计旋转矩阵,然后求解平移向量,文献如下,
- R. Tsai, R. Lenz A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/EyeCalibration
- F. Park, B. Martin Robot Sensor Calibration: Solving AX = XB on the Euclidean Group
- R. Horaud, F. Dornaika Hand-Eye Calibration
另一种同时求解旋转矩阵和平移向量,文献如下,
- N. Andreff, R. Horaud, B. Espiau On-line Hand-Eye Calibration
- K. Daniilidis Hand-Eye Calibration Using Dual Quaternions
后续的手眼标定eye-in-hand(二)中,主要介绍Tsai的求解方法,文献在这里。
可以试试sci-hub来下载。