《机器人学导论》学习-01空间描述与变换
一、描述:位置、姿态与坐标系
1、位置描述
用一个位置矢量来描述空间中一个点的位置。
位置描述为:
A
P
=
[
p
x
p
y
p
z
]
_{}^{A}\textrm{P}=\begin{bmatrix}p_{x}\\p_{y}\\p_{z}\end{bmatrix}
AP=⎣⎡pxpypz⎦⎤
2、姿态描述
物体的姿态可以用固定在物体上的坐标系{B}来描述。
2.1 姿态描述为:
B
A
R
=
[
A
X
^
B
A
Y
^
B
A
Z
^
B
]
=
[
X
^
B
⋅
X
^
A
Y
^
B
⋅
X
^
A
Z
^
B
⋅
X
^
A
X
^
B
⋅
Y
^
A
Y
^
B
⋅
Y
^
A
Z
^
B
⋅
Y
^
A
X
^
B
⋅
Z
^
A
Y
^
B
⋅
Z
^
A
Z
^
B
⋅
Z
^
A
]
_{B}^{A}\textrm{R}=\begin{bmatrix} &_{}^{A}\hat{\textrm{X}}_{B}\,\,\,\, _{}^{A}\hat{\textrm{Y}}_{B}\,\,\,\, _{}^{A}\hat{\textrm{Z}} _{B} & \end{bmatrix}=\begin{bmatrix} &\hat{\textrm{X}}_{B}\cdot\hat{\textrm{X}}_{A} \,\,\,\,\hat{\textrm{Y}}_{B}\cdot\hat{\textrm{X}}_{A}\,\,\,\, \hat{\textrm{Z}}_{B}\cdot\hat{\textrm{X}}_{A} & \\ &\hat{\textrm{X}}_{B}\cdot\hat{\textrm{Y}}_{A}\,\,\,\, \hat{\textrm{Y}}_{B}\cdot\hat{\textrm{Y}}_{A}\,\,\,\, \hat{\textrm{Z}}_{B}\cdot\hat{\textrm{Y}}_{A} & \\ &\hat{\textrm{X}}_{B}\cdot\hat{\textrm{Z}}_{A}\,\,\,\, \hat{\textrm{Y}}_{B}\cdot\hat{\textrm{Z}}_{A}\,\,\,\, \hat{\textrm{Z}}_{B}\cdot\hat{\textrm{Z}}_{A} & \end{bmatrix}
BAR=[AX^BAY^BAZ^B]=⎣⎡X^B⋅X^AY^B⋅X^AZ^B⋅X^AX^B⋅Y^AY^B⋅Y^AZ^B⋅Y^AX^B⋅Z^AY^B⋅Z^AZ^B⋅Z^A⎦⎤
2.2 注意:
(1)
A
X
^
_{}^{A}\hat{\textrm{X}}
AX^表示{B}上X轴的单位向量在用{A}表达;
(2)
X
^
B
⋅
X
^
A
\hat{\textrm{X}}_{B}\cdot\hat{\textrm{X}}_{A}
X^B⋅X^A表示{B}上X轴的单位向量在{A}上X轴单位向量上的投影。
2.3 特性:
B
A
R
_{B}^{A}\textrm{R}
BAR被称为旋转矩阵,它表示坐标系{B}相对于坐标系{A}的表达。(注意:左上标A表示参考的坐标系;左下标B表示被描述的坐标系)
(1)
B
A
R
=
A
B
R
T
=
A
B
R
−
1
‘
_{B}^{A}\textrm{R}=_{A}^{B}\textrm{R}_{}^{T}=_{A}^{B}\textrm{R}_{}^{-1`}
BAR=ABRT=ABR−1‘(旋转矩阵是正交矩阵)
(2)
∣
B
A
R
∣
=
1
\left | _{B}^{A}\textrm{R} \right |=1
∣∣BAR∣∣=1
3、坐标系的描述
(1)一个坐标系可以等价于用一个位置矢量和一个旋转矩阵来描述;
(2)用
B
A
R
_{B}^{A}\textrm{R}
BAR和
A
P
B
O
R
G
_{}^{A}\textrm{P}_{BORG}
APBORG来描述坐标系{B},其中的
A
P
B
O
R
G
_{}^{A}\textrm{P}_{BORG}
APBORG是确定坐标系{B}原点的位置,则:{B}={
B
A
R
_{B}^{A}\textrm{R}
BAR,
A
P
B
O
R
G
_{}^{A}\textrm{P}_{BORG}
APBORG}。
二、映射:坐标系到坐标系的变换
1、关于平移坐标系的映射
{A}和{B}坐标系具有相同的姿态(没有旋转。只有平移),可以用矢量相加的方法求点P在坐标系{A}中的表达:
A
P
=
B
P
+
A
P
B
O
R
G
_{}^{A}\textrm{P}=_{}^{B}\textrm{P}+_{}^{A}\textrm{P}_{BORG}
AP=BP+APBORG
注意:不同坐标系的矢量,只有在坐标系姿态相同的情况下才能进行相加
2、关于旋转坐标系的映射
将空间中某点P相对于坐标系{B}的描述
B
P
_{}^{B}\textrm{P}
BP,转换成该点相对于坐标系[A}的描述
A
P
_{}^{A}\textrm{P}
AP:
A
P
=
B
A
R
⋅
B
P
_{}^{A}\textrm{P}=_{B}^{A}\textrm{R}\cdot_{}^{B}\textrm{P}
AP=BAR⋅BP
注意:从映射的角度来看,原矢量P在空间中的位置没有发生改变,只是换了一种描述方式对其进行表达。
3、关于一般坐标系的映射
先将
B
P
_{}^{B}\textrm{P}
BP变换到一个中间的坐标系{C}(此时变为
C
P
_{}^{C}\textrm{P}
CP),这个中间坐标系和{A}坐标系的姿态相同、原点和{B}的原点重合,然后用简单的矢量加法,将原点进行平移,得到
A
P
_{}^{A}\textrm{P}
AP:
B
A
R
=
B
C
R
_{B}^{A}\textrm{R}=_{B}^{C}\textrm{R}
BAR=BCR
A
P
B
O
R
G
=
A
P
C
O
R
G
_{}^{A}\textrm{P}_{BORG}=_{}^{A}\textrm{P}_{CORG}
APBORG=APCORG
C
P
=
B
C
R
⋅
B
P
_{}^{C}\textrm{P}=_{B}^{C}\textrm{R}\cdot_{}^{B}\textrm{P}
CP=BCR⋅BP
A
P
=
C
P
+
A
P
C
O
R
G
_{}^{A}\textrm{P}=_{}^{C}\textrm{P}+_{}^{A}\textrm{P}_{CORG}
AP=CP+APCORG
综上:
A
P
=
B
A
R
⋅
B
P
+
A
P
B
O
R
G
_{}^{A}\textrm{P}=_{B}^{A}\textrm{R}\cdot_{}^{B}\textrm{P}+_{}^{A}\textrm{P}_{BORG}
AP=BAR⋅BP+APBORG
将上式改写成新的形式:
A
P
=
B
A
T
⋅
B
P
_{}^{A}\textrm{P}=_{B}^{A}\textrm{T}\cdot_{}^{B}\textrm{P}
AP=BAT⋅BP
对于一般坐标系的映射:坐标系{B}相对于坐标系{A}的变换描述为
B
A
T
_{B}^{A}\textrm{T}
BAT。
[
A
P
1
]
=
[
B
A
R
A
P
B
O
R
G
0
0
0
1
]
⋅
[
B
P
1
]
⇒
{
A
P
=
B
A
R
⋅
B
P
+
A
P
B
O
R
G
1
=
1
\begin{bmatrix} _{}^{A}\textrm{P}\\ 1 \end{bmatrix}=\begin{bmatrix} _{B}^{A}\textrm{R} &_{}^{A}\textrm{P}_{BORG} \\ 0\,\,0\,\,0&1 \end{bmatrix}\cdot\begin{bmatrix} _{}^{B}\textrm{P}\\ 1 \end{bmatrix}\Rightarrow \left\{\begin{matrix} _{}^{A}\textrm{P}=_{B}^{A}\textrm{R}\cdot_{}^{B}\textrm{P}+_{}^{A}\textrm{P}_{BORG}\\ 1=1 \end{matrix}\right.
[AP1]=[BAR000APBORG1]⋅[BP1]⇒{AP=BAR⋅BP+APBORG1=1
式中:
B
A
T
=
[
B
A
R
A
P
B
O
R
G
0
0
0
1
]
_{B}^{A}\textrm{T}=\begin{bmatrix} _{B}^{A}\textrm{R} &_{}^{A}\textrm{P}_{BORG} \\ 0\,\,0\,\,0&1 \end{bmatrix}
BAT=[BAR000APBORG1],被称为齐次变换矩阵。
齐次变换矩阵左上角表示旋转,右上角表示平移。
三、算子:平移、旋转和变换
用于坐标系间点的映射的通用数学表达式称为算子,包括点的平移算子、矢量旋转算子和平移加旋转的算子。
1、平移算子
矢量
A
P
1
_{}^{A}\textrm{P}_{1}
AP1通过矢量
A
Q
_{}^{A}\textrm{Q}
AQ进行了平移,得到新的矢量
A
P
2
_{}^{A}\textrm{P}_{2}
AP2,表示为:
A
P
1
=
A
Q
+
A
P
2
_{}^{A}\textrm{P}_{1}=_{}^{A}\textrm{Q}+_{}^{A}\textrm{P}_{2}
AP1=AQ+AP2
用平移算子表示:
A
P
2
=
D
Q
(
q
)
⋅
A
P
1
_{}^{A}\textrm{P}_{2}=\textrm{D}_{Q(q)}\cdot_{}^{A}\textrm{P}_{1}
AP2=DQ(q)⋅AP1
式中:q是沿矢量
Q
^
\hat{\textrm{Q}}
Q^方向平移的距离,其是有符号的;平移算子
D
Q
(
q
)
\textrm{D}_{Q(q)}
DQ(q)可以被看成是一种特殊的齐次变换矩阵,其中的旋转矩阵为单位矩阵。
D
Q
(
q
)
=
[
1
0
0
q
x
0
1
0
q
y
0
0
1
q
z
0
0
0
1
]
\textrm{D}_{Q(q)}=\begin{bmatrix} 1 & 0 &0 &\textrm{q}_{x} \\ 0 & 1 & 0 &\textrm{q}_{y} \\ 0& 0& 1 & \textrm{q}_{z}\\ 0&0 &0 &1 \end{bmatrix}
DQ(q)=⎣⎢⎢⎡100001000010qxqyqz1⎦⎥⎥⎤
式中,
q
x
、
q
y
和
q
z
\textrm{q}_{x}、\textrm{q}_{y}和\textrm{q}_{z}
qx、qy和qz是平移矢量
Q
^
\hat{\textrm{Q}}
Q^的分量,并且有:
q
=
q
x
2
+
q
y
2
+
q
z
2
q=\sqrt{\textrm{q}_{x}^{2}+\textrm{q}_{y}^{2}+\textrm{q}_{z}^{2}}
q=qx2+qy2+qz2
2、旋转算子
矢量
A
P
1
_{}^{A}\textrm{P}_{1}
AP1通过旋转矩阵R变成了一个新的矢量
A
P
2
_{}^{A}\textrm{P}_{2}
AP2,表示为:
A
P
2
=
R
⋅
A
P
1
_{}^{A}\textrm{P}_{2}=R\cdot_{}^{A}\textrm{P}_{1}
AP2=R⋅AP1
针对这种情况,一般用下面的形式表达:
A
P
2
=
R
K
(
θ
)
⋅
A
P
1
_{}^{A}\textrm{P}_{2}=\textrm{R}_{K}\left ( \theta \right )\cdot_{}^{A}\textrm{P}_{1}
AP2=RK(θ)⋅AP1
式中的
R
K
(
θ
)
\textrm{R}_{K}\left ( \theta \right )
RK(θ)是一个旋转算子,表示绕
K
^
\hat{K}
K^轴旋转了
θ
\theta
θ角。旋转算子也可以写成齐次变换矩阵其中位置矢量为零。
例如,沿着
Z
^
\hat{Z}
Z^轴旋转了
θ
\theta
θ角度的旋转算子:
R
Z
(
θ
)
=
[
c
o
s
(
θ
)
−
s
i
n
(
θ
)
0
0
s
i
n
(
θ
)
c
o
s
(
θ
)
0
0
0
0
1
0
0
0
0
1
]
\textrm{R}_{Z}\left ( \theta \right )=\begin{bmatrix} cos(\theta) &-sin(\theta)& 0 &0 \\ sin(\theta)&cos(\theta) &0 &0 \\ 0 & 0 & 1 &0 \\ 0& 0 &0 &1 \end{bmatrix}
RZ(θ)=⎣⎢⎢⎡cos(θ)sin(θ)00−sin(θ)cos(θ)0000100001⎦⎥⎥⎤
注意:矢量经过某一旋转R得到的旋转矩阵与一个坐标系相对于参考坐标系经过某一旋转R得到的选转矩阵是相同的。
3、变换算子
算子
T
T
T将矢量
A
P
1
_{}^{A}\textrm{ P}_{1}
A P1平移并旋转得到一个新的矢量
A
P
2
_{}^{A}\textrm{ P}_{2}
A P2:
A
P
2
=
T
⋅
A
P
1
_{}^{A}\textrm{P}_{2}=T\cdot_{}^{A}\textrm{P}_{1}
AP2=T⋅AP1
四、总结和说明
齐次坐标变换矩阵的三种用法(定义):
1、描述一个坐标系(相对于另一个坐标系)的位姿。
B A T _{B}^{A}\textrm{T} BAT表示相对于坐标系{A}的坐标系{B}。
2、将点由一个坐标系的表达,转换到另一个坐标系下的表达(变换映射)。
A P = B A T ⋅ B P _{}^{A}\textrm{P}=_{B}^{A}\textrm{T}\cdot_{}^{B}\textrm{P} AP=BAT⋅BP
3、将点(向量)在同一坐标系中进行转动(变换算子)。
A P 2 = T ⋅ A P 1 _{}^{A}\textrm{P}_{2}=T\cdot_{}^{A}\textrm{P}_{1} AP2=T⋅AP1