机械手是机器人系统的机械运动部分,它的执行机构是用来保证复杂空间运动的综合刚体,而它也往往作为统一体进行运动.因此,需要用一种简便的数学方法来描述单一刚体的位移、速度、加速度和运动学的问题.这种数学描述不是唯一的,不同的人可能采用不同的方法.这里采用矩阵法来描述机器人机械手的运动学问题.这种数学方法是以四阶方阵变换三维空间的齐次坐标为基础的,能够将运动、变换和映射与矩阵运算联系起来.接下来让我们看看是如何做到的.
1 位姿和坐标系描述
1.1 位置描述
对于直角坐标系{
A
{A}
A},空间任一点
p
p
p的位置可用
3
×
1
3 \times 1
3×1的列矢量
A
p
{^{A}\boldsymbol p}
Ap表示,上标
A
A
A代表参考坐标系{
A
A
A},称
A
p
{^{A}\boldsymbol p}
Ap为位置矢量.
A
p
=
[
p
x
p
y
p
z
]
^{A}\boldsymbol{p}=\left[\begin{aligned}{ }{p}_x \\ {p}_y \\ p_z\end{aligned}\right]
Ap=
pxpypz
1.2 方位描述
物体的方位(orientation)可由某个固接于此物体的坐标系描述.为了规定空间某刚体
B
B
B的方位,设置一直角坐标系{
B
B
B}与此刚体固接.用坐标系{
B
B
B}的三个单位主矢量
x
B
,
y
B
,
z
B
\boldsymbol{x}_B,\boldsymbol{y}_B,\boldsymbol{z}_B
xB,yB,zB相对于参考坐标系{
A
A
A}的方向余弦组成的
3
×
3
3\times3
3×3旋转矩阵
B
A
R
_B^A\boldsymbol{R}
BAR来表示刚体
B
B
B相对于坐标系{
A
A
A}的方位.式中,上标
A
A
A代表参考坐标系{
A
A
A},下标
B
B
B代表被描述的坐标系{
B
B
B}.
B
A
R
=
[
A
x
B
A
y
B
A
z
B
]
=
[
r
11
r
12
r
13
r
23
r
22
r
23
r
31
r
32
r
33
]
_{B}^{A} \boldsymbol{R}=\left[\begin{array}{c} ^A \boldsymbol{x}_B & ^A\boldsymbol{y}_B & ^A\boldsymbol{z}_B \end{array}\right]=\left[\begin{array}{c}r_{11} & r_{12} & r_{13} \\ r_{23} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33}\end{array}\right]
BAR=[AxBAyBAzB]=
r11r23r31r12r22r32r13r23r33
B
A
R
_B^A \boldsymbol{R}
BAR共有9个元素,但只有3个是独立的,由于
B
A
R
_B^A\boldsymbol{R}
BAR的三个列矢量
A
x
B
,
A
y
B
和
A
z
B
^A \boldsymbol{x}_B,^A\boldsymbol{y}_B和^A\boldsymbol{z}_B
AxB,AyB和AzB都是单位矢量,且两两正交,因而它的9个元素满足6个约束条件:
A
x
B
⋅
A
x
B
=
A
y
B
⋅
A
y
B
=
A
z
B
⋅
A
z
B
=
1
^A \boldsymbol{x}_B\ \cdot\ ^A \boldsymbol{x}_B\ =\ ^A\boldsymbol{y}_B\ \cdot\ ^A \boldsymbol{y}_B\ =\ ^A\boldsymbol{z}_B\ \cdot\ ^A \boldsymbol{z}_B\ =\ 1
AxB ⋅ AxB = AyB ⋅ AyB = AzB ⋅ AzB = 1
A x B ⋅ A y B = A y B ⋅ A z B = A z B ⋅ A x B = 0 ^A \boldsymbol{x}_B\ \cdot\ ^A \boldsymbol{y}_B\ =\ ^A\boldsymbol{y}_B\ \cdot\ ^A \boldsymbol{z}_B\ =\ ^A\boldsymbol{z}_B\ \cdot\ ^A \boldsymbol{x}_B\ =\ 0 AxB ⋅ AyB = AyB ⋅ AzB = AzB ⋅ AxB = 0
可见,旋转矩阵
B
A
R
_B^A\boldsymbol{R}
BAR是正交的,并且满足条件:
B
A
R
−
1
=
B
A
R
T
∣
B
A
R
∣
=
1
_B^A\boldsymbol{R}^{-1}\ =\ _B^A\boldsymbol{R}^{\rm{T}} \\ \left|\ \begin{matrix}^A_B\boldsymbol{R}\end{matrix}\ \right|=1
BAR−1 = BART
BAR
=1
对应于轴
x
,
y
或
z
x,y或z
x,y或z做转角
θ
\theta
θ的旋转变换,其旋转矩阵分别如下,其中,
s
s
s表示
s
i
n
\ \rm{sin}
sin,
c
c
c表示
c
o
s
\ \rm{cos}
cos.
R
(
x
,
θ
)
=
[
1
0
0
0
c
θ
−
s
θ
0
s
θ
c
θ
]
R
(
y
,
θ
)
=
[
c
θ
0
s
θ
0
1
0
−
s
θ
0
c
θ
]
R
(
z
,
θ
)
=
[
c
θ
−
s
θ
0
s
θ
c
θ
0
0
0
1
]
\boldsymbol{R}(x,\theta)=\left[\begin{array}{c }1 & 0 & 0 \\ {0} & c\theta & -s\theta \\ 0 & s\theta & c\theta\end{array}\right] \ \\\ \boldsymbol{R}(y,\theta)=\left[\begin{array}{c }c\theta & 0 & s\theta\\ {0} & 1 & 0 \\ -s\theta & 0 & c\theta\end{array}\right]\ \\\ \boldsymbol{R}(z,\theta)=\left[\begin{array}{ c}c\theta & -s\theta & 0 \\ s\theta & c\theta & 0 \\ 0 & 0 & 1 \end{array}\right]
R(x,θ)=
1000cθsθ0−sθcθ
R(y,θ)=
cθ0−sθ010sθ0cθ
R(z,θ)=
cθsθ0−sθcθ0001
1.3 位姿描述
要完全描述刚体
B
B
B在空间的位姿(位置和姿态),通常将物体
B
B
B与某一坐标系{
B
B
B}固接。{
B
B
B}的坐标原点一般选在物体
B
B
B的的特征点,如质心等.相对参考系{
A
A
A},坐标系{
B
B
B}的原点位置和坐标轴的方位分别由位置矢量
A
p
B
o
^A\boldsymbol{p}_{B_{o}}
ApBo和旋转矩阵
B
A
R
^A_B\boldsymbol{R}
BAR描述.这样,刚体
B
B
B的位姿可由坐标系{
B
B
B}来描述,即有:
{
B
}
=
{
B
A
R
A
p
B
o
}
\left\{\begin{aligned} {B}\end{aligned}\right\}\ =\ \left\{\begin{aligned} ^A_B\boldsymbol{R}\ \ \ & \ \ ^A\boldsymbol{p}_{B_{o}}\end{aligned}\right\}
{B} = {BAR ApBo}
当表示位置时,旋转矩阵
B
A
R
=
I
^A_B\boldsymbol{R}=\boldsymbol{I}
BAR=I(单位矩阵);当表示方位时,位置矢量
A
p
B
o
=
0
^A\boldsymbol{p}_{B_o}=\bf{0}
ApBo=0.
2 平移和旋转直角坐标系变换
2.1 平移坐标变换
坐标系{
B
B
B}与{
A
A
A}有相同的方位,但二者坐标原点不同.用位置矢量
A
p
B
o
^A\boldsymbol{p}_{B_o}
ApBo描述{
B
B
B}相对于{
A
A
A}的位置(平移矢量).如果点
p
p
p在坐标系{
B
B
B}中位置
B
p
^B\boldsymbol{p}
Bp,那么点
p
p
p相对于坐标系{
A
A
A}的位置矢量
A
p
^A\boldsymbol{p}
Ap可由{
B
B
B}坐标系的原点在{
A
A
A}坐标系下的位置矢量
A
p
B
o
^A\boldsymbol{p}_{B_o}
ApBo 和 点
p
p
p在坐标系{
B
B
B}的位置矢量
B
p
^B\boldsymbol{p}
Bp相加得出,即有:
A
p
=
B
p
+
A
p
B
o
^A\boldsymbol{p}\ =\ ^B\boldsymbol{p}\ +\ ^A\boldsymbol{p}_{B_o}
Ap = Bp + ApBo
称上式为坐标平移方程.
2.2 旋转坐标变换
坐标系{ B B B}与{ A A A}有共同的坐标原点,但二者方位不同.用旋转矩阵 B A R ^A_B\boldsymbol{R} BAR描述{ B B B}相对于{ A A A}的方位.如果点 p p p在坐标系{ B B B}中位置 B p ^B\boldsymbol{p} Bp,那么点 p p p相对于坐标系{ A A A}的位置矢量 A p ^A\boldsymbol{p} Ap可由{ B B B}坐标系相对于{ A A A}坐标系的旋转矩阵 B A R ^A_B\boldsymbol{R} BAR 左乘 点 p p p在坐标系{ B B B}的位置矢量 B p ^B\boldsymbol{p} Bp得出,即有:
A
p
=
B
A
R
B
p
^A\boldsymbol{p}\ =\ ^A_B\boldsymbol{R}\ ^B\boldsymbol{p}
Ap = BAR Bp
称上式为坐标旋转方程.
类似地用
A
B
R
^B_A\boldsymbol{R}
ABR描述坐标系{
A
A
A}相对于{
B
B
B}的方位.
B
A
R
^A_B\boldsymbol{R}
BAR和
A
B
R
^B_A\boldsymbol{R}
ABR都是正交矩阵,两者互逆.根据正交矩阵的性质可得:
A
B
R
=
B
A
R
−
1
=
B
A
R
T
^B_A\boldsymbol{R}\ =\ ^A_B\boldsymbol{R}^{-1}\ =\ ^A_B\boldsymbol{R}^{\rm{T}}
ABR = BAR−1 = BART
2.3 复合变换
对于最一般的情形,坐标系{
B
B
B}的原点与坐标系{
A
A
A}的原点并不重合,且{
B
B
B}系的方位与{
A
A
A}系的方位也不相同.用位置矢量
A
p
B
o
^A\boldsymbol{p}_{B_o}
ApBo描述{
B
B
B}相对于{
A
A
A}的位置;用旋转矩阵
B
A
R
^A_B\boldsymbol{R}
BAR描述{
B
B
B}相对于{
A
A
A}的方位.对于任一点
P
P
P,在两坐标系{
A
A
A}和{
B
B
B}中的描述
A
p
和
B
p
^A\boldsymbol{p}和 ^B\boldsymbol{p}
Ap和Bp具有以下变换关系:
A
p
=
B
A
R
B
p
+
A
p
B
o
^A\boldsymbol{p}\ =\ ^A_B\boldsymbol{R}\ ^B\boldsymbol{p}\ +\ ^A\boldsymbol{p}_{B_o}
Ap = BAR Bp + ApBo
把上式看成坐标旋转和坐标平移的复合变换.实际上规定一个过渡坐标系{
C
C
C},使{
C
C
C}的坐标原点与{
B
B
B}的坐标原点重合,而{
C
C
C}的方位与{
A
A
A}的方位相同.据式(9)可得向过渡坐标系{
C
C
C}的变换:
C
p
=
B
C
R
B
p
=
B
A
R
B
p
^C\boldsymbol{p}\ =\ ^C_B\boldsymbol{R}\ ^B\boldsymbol{p}\ =\ ^A_B\boldsymbol{R}\ ^B\boldsymbol{p}
Cp = BCR Bp = BAR Bp
再由式(8),可得复合变换:
A
p
=
C
p
+
A
p
C
o
=
B
A
R
B
p
+
A
p
B
o
^A\boldsymbol{p}\ =\ ^C\boldsymbol{p}\ +\ ^A\boldsymbol{p}_{C_o}\ =\ ^A_B\boldsymbol{R}\ ^B\boldsymbol{p}\ +\ ^A\boldsymbol{p}_{B_o}
Ap = Cp + ApCo = BAR Bp + ApBo
2.4 案例
假设两坐标系{ A A A}和{ B B B}初始重合,首先{ B B B}相对于{ A A A}的 z A z_A zA轴转 30 ° 30\degree 30°,再沿着 x A x_A xA轴平移12单位,再沿着 y A y_A yA轴移动6单位。求位置矢量 A p B o ^A\boldsymbol{p}_{B_o} ApBo和旋转矩阵 B A R ^A_B\boldsymbol{R} BAR.假设点 p p p在{ B B B}中的描述为 B p = [ 3 , 7 , 0 ] T ^B\boldsymbol{p}=[3,7,0]^{\rm T} Bp=[3,7,0]T,求它在{ A A A}中的描述 A p ^A\boldsymbol{p} Ap.
clear all;clc;
format short
% 旋转矩阵,绕{A}的z轴转30度
R_z30=[cos(pi/6) -sin(pi/6) 0;
sin(pi/6) cos(pi/6) 0;
0 0 1]
% {B}的原点在{A}的描述
pA_Bo=[12;6;0]
% 点p在{B}的描述
pB=[3;7;0];
% 点p在{A}的描述
pA=R_z30*pB+pA_Bo
结果:
R_z30 =
0.8660 -0.5000 0
0.5000 0.8660 0
0 0 1.0000
pA_Bo =
12
6
0
pA =
11.0981
13.5622
0
下篇:机器人数学基础2