通过相机可以得到抓取目标(如标定板)在相机坐标系下的坐标 ⮕ 如果知道相机坐标系和机械臂基坐标系之间的转换关系 ⮕ 就可以将抓取目标在相机坐标系下的坐标转换为机械臂基坐标系下的坐标,由此机械臂就知道抓取目标的位置。
问题的关键:找到相机坐标系和机械臂基坐标系之间的转换关系
解决方法:手眼标定是通过测量 机械臂末端执行器 与 相机 变换关系,进而确定机械臂坐标系 和 相机坐标系 之间的转换矩阵。
#################################################################
base:机械臂基坐标系
end:机械臂末端(机械臂末端执行器)坐标系
board:标定板坐标系
cam:相机坐标系
假设空中固定点P在 机械臂基坐标系 和 相机坐标系 的坐标分别是
P
b
a
s
e
P^{base}
Pbase,
P
c
a
m
P^{cam}
Pcam,相机坐标系到机械臂基坐标系的转换关系为
T
c
a
m
b
a
s
e
T_{cam}^{base}
Tcambase,则
P
b
a
s
e
P^{base}
Pbase=
T
c
a
m
b
a
s
e
T_{cam}^{base}
Tcambase
P
c
a
m
P^{cam}
Pcam。
其中,
P
b
a
s
e
P^{base}
Pbase,
P
c
a
m
P^{cam}
Pcam是补1后的齐次坐标
[
x
,
y
,
z
,
1
]
′
[x,y,z,1]^{'}
[x,y,z,1]′,这样转换关系
T
c
a
m
b
a
s
e
T_{cam}^{base}
Tcambase便可以同时包含旋转和平移。
只要点P的个数大于我们求解的转换矩阵维度,同时这些点线性不相关,我们便可以通过伪逆矩阵计算
T
c
a
m
b
a
s
e
T_{cam}^{base}
Tcambase。
################################################################
T
c
a
m
b
a
s
e
T _{cam}^{base}
Tcambase :相机坐标系⮕机械臂基坐标系 的转换矩阵。令
T
c
a
m
b
a
s
e
T _{cam}^{base}
Tcambase=X,即为需要求解的手眼标定矩阵。
∥
\parallel
∥
T
c
a
m
b
o
a
r
d
T _{cam}^{board}
Tcamboard :相机坐标系⮕标定板坐标系 的转换矩阵
↓
\downarrow
↓
T
b
o
a
r
d
e
n
d
T _{board}^{end}
Tboardend :标定板坐标系⮕机械臂末端坐标系 的转换矩阵
↓
\downarrow
↓
T
e
n
d
b
a
s
e
T _{end}^{base}
Tendbase :机械臂末端坐标系⮕机械臂基坐标系 的转换矩阵
对于上述的转换关系,标定板固定在机器臂末端,在某一位姿下,标定板上的点在标定板坐标系下的坐标为
P
b
o
a
r
d
P^{board}
Pboard,经过
T
c
a
m
b
o
a
r
d
T _{cam}^{board}
Tcamboard(
T
b
o
a
r
d
c
a
m
T _{board}^{cam}
Tboardcam),
T
c
a
m
b
a
s
e
T _{cam}^{base}
Tcambase(X),
T
b
a
s
e
e
n
d
T _{base}^{end}
Tbaseend,标定板上的点在机械臂末端坐标系下的坐标为
P
e
n
d
P^{end}
Pend。
即
P
e
n
d
P^{end}
Pend=
T
b
o
a
r
d
c
a
m
T _{board}^{cam}
Tboardcam
T
c
a
m
b
a
s
e
T _{cam}^{base}
Tcambase
T
b
a
s
e
e
n
d
T _{base}^{end}
Tbaseend
P
b
o
a
r
d
P^{board}
Pboard
即
P
e
n
d
P^{end}
Pend=
T
b
o
a
r
d
c
a
m
T _{board}^{cam}
TboardcamX
T
b
a
s
e
e
n
d
T _{base}^{end}
Tbaseend
P
b
o
a
r
d
P^{board}
Pboard
变换一下位姿,得到
P
e
n
d
′
P^{end'}
Pend′=
T
b
o
a
r
d
c
a
m
′
T _{board}^{cam'}
Tboardcam′X
T
b
a
s
e
e
n
d
′
T _{base}^{end'}
Tbaseend′
P
b
o
a
r
d
′
P^{board'}
Pboard′
T b o a r d c a m T _{board}^{cam} TboardcamX T b a s e e n d T _{base}^{end} Tbaseend是个定值,所以 T b o a r d c a m T _{board}^{cam} TboardcamX T b a s e e n d T _{base}^{end} Tbaseend= T b o a r d c a m ′ T _{board}^{cam'} Tboardcam′X T b a s e e n d ′ T _{base}^{end'} Tbaseend′。
进一步转换为
T
b
o
a
r
d
c
a
m
′
−
1
T _{board}^{cam'-1}
Tboardcam′−1
T
b
o
a
r
d
c
a
m
T _{board}^{cam}
TboardcamX=X
T
b
a
s
e
e
n
d
′
T _{base}^{end'}
Tbaseend′
T
b
a
s
e
e
n
d
−
1
T _{base}^{end-1}
Tbaseend−1 ,
即AX=BX,由此可求手眼转换矩阵X即
T
c
a
m
b
a
s
e
T _{cam}^{base}
Tcambase。
在解决方法中说了,手眼标定求的是转换矩阵X,但它是通过测量 机械臂末端执行器 与 相机 变换关系所求得的。如何测呢?
T
b
a
s
e
e
n
d
T _{base}^{end}
Tbaseend由机械臂的位姿输出得到,
T
b
o
a
r
d
c
a
m
T _{board}^{cam}
Tboardcam由相机标定的外参得到。