目录
阅读提示:
本文是基于《机器人学导论》第三版的学习笔记,除去书中内容,有一些自己的心得和理解。所以会对一些方面进行概括,长话短说。若需要专业解释强烈建议找到原书翻看定义,收获会很大!
位置、姿态和坐标系
要描述一个机械臂的姿态,我们应当明白,假设我们要描述手的姿态,容易想知对于指端来说,操作目标物体的轨迹应当在一个坐标系内被描述。然而,对于多元件的机械臂系统来说,仅仅靠这一个坐标系是不够的,甚至很混乱。所以我们应当设立一个参考系,然后建立操作手的坐标系,这样就能完全确定操作手的位置。
因此,点的位置可用矢量描述,物体的姿态可用坐标系描述。描述连体坐标系可用固定在物体上的坐标系来描述。
我们用参考系A的三个主轴单位矢量来描述连体坐标系B。设其为
X
A
X_A
XA,
Y
A
Y_A
YA,
Z
A
Z_A
ZA,将这三个单位矢量排列成一个
3
×
3
3\times3
3×3的矩阵,称其为旋转矩阵。它是一个相对表达,是坐标系B相对于坐标系A的表达,所以用符号
A
P
^AP
AP来表示。
由两个单位矢量的点积可得到二者之间夹角的余弦,所以,旋转矩阵的各分量也常被称为方向余弦。
进一步观察式子,
因此,可得: A B R = B A R T ^B_AR=^A_BR^T ABR=BART。(重要结论)
进一步可得,旋转矩阵的逆矩阵等于它的转置:
A B R B A R T = [ A X ^ B T A Y ^ B T A Z ^ B T ] ( A X ^ B T A Y ^ B T A Z ^ B T ) = I 3 ^B_AR^A_BR^T=\left[\begin{matrix}^A\hat{X}^T_B\\^A\hat{Y}^T_B\\^A\hat{Z}^T_B\end{matrix}\right]\begin{pmatrix}^A\hat{X}^T_B&^A\hat{Y}^T_B&^A\hat{Z}^T_B\end{pmatrix}=I_3 ABRBART=⎣⎡AX^BTAY^BTAZ^BT⎦⎤(AX^BTAY^BTAZ^BT)=I3
实际上,一个正交阵的逆等于它的转置,这个结论也能很快证明上述结论。
B A R = A B R − 1 = A B R T ^A_BR=^B_AR^{-1}=^B_AR^T BAR=ABR−1=ABRT
得到了位置和姿态,描述坐标系,需要一个原点。我们为方便起见,将物体上任选的一点作为连体坐标系的原点。于是我们将一个位置矢量和一个旋转矩阵组合在一起,描述一个坐标系:
{ B } = { B A R , A P B O R G } \{B\}=\{^A_BR,^AP_{BORG}\} {B}={BAR,APBORG}
其中 A P B O R G ^AP_{BORG} APBORG是确定坐标系原点的位置矢量。
特别地,如果参考系中的位置矢量是零矢量,那么它表示的就是姿态。
映射
映射描述从坐标系到坐标系的变换。
我们将讨论三种映射,并引入齐次变换矩阵这一重要工具。
平移坐标系的映射
这是最简单的一种映射,用矢量相加的方法表示:
A P = B P + A P B O R G ^AP=^BP+^AP_{BORG} AP=BP+APBORG
旋转坐标系的映射
我们有之前所得的旋转矩阵的转置和逆的结论:
B A R = A B R − 1 = A B R T ^A_BR=^B_AR^{-1}=^B_AR^T BAR=ABR−1=ABRT
一个旋转矩阵即为三个一组的列向量或者三个一组的行向量:
B
A
R
=
(
A
X
^
B
A
Y
^
B
A
Z
^
B
)
=
[
B
X
^
A
T
B
Y
^
A
T
B
Z
^
A
T
]
^A_BR=\begin{pmatrix}^A\hat{X}_B&^A\hat{Y}_B&^A\hat{Z}_B\end{pmatrix}=\left[\begin{matrix}^B\hat{X}^T_A\\^B\hat{Y}^T_A\\^B\hat{Z}^T_A\end{matrix}\right]
BAR=(AX^BAY^BAZ^B)=⎣⎡BX^ATBY^ATBZ^AT⎦⎤
因此,可知
A
P
^AP
AP的分量计算如下:
A
p
x
=
B
X
^
A
⋅
B
P
^Ap_x=^B\hat{X}_A\cdot^BP
Apx=BX^A⋅BP
A
p
y
=
B
Y
^
A
⋅
B
P
^Ap_y=^B\hat{Y}_A\cdot^BP
Apy=BY^A⋅BP
A
p
z
=
B
Z
^
A
⋅
B
P
^Ap_z=^B\hat{Z}_A\cdot^BP
Apz=BZ^A⋅BP
写成简化形式:
A P = B A R B P ^AP=^A_BR^BP AP=BARBP
问题:如何表示坐标系{B}相对于坐标系{A}绕Z轴旋转30度?Z轴指向纸面向外。
先作图:
1.在A中写出B的单位矢量,排成旋转矩阵。
得:
稍微解释一下,我们知道第一列表示的是 A X ^ B ^A\hat{X}_B AX^B,取单位矢量 e b e_b eb表示B的X轴在A中的位置,可由30°角得(0.866,0.5,0),其中0表示相对于Z轴无移动。以此类推。
2.已知:
3.求出:
一般坐标系的映射
一般坐标系的映射可以概括为两步。
首先将
B
P
^BP
BP变换到一个中间坐标系,这个坐标系与{A}的姿态相同、原点与{B}的原点重合。这可以用左乘矩阵
B
A
R
^A_BR
BAR得到。
然后用简单的矢量加法平移原点:
A P = B A R B P + A P B O R G ^AP=^A_BR^BP+^AP_{BORG} AP=BARBP+APBORG
更进一步地,我们可以将这组操作变换为使用一个矩阵算子表示从一个坐标系到另一个坐标系的映射。这个矩阵算子是
4
×
4
4\times4
4×4的矩阵,将最后一行作为[0 0 0 1],在4x1矩阵中添加最后一个分量为1。亦即:
将这个4x4的矩阵称为齐次变换矩阵。由于它可以表示坐标系间的变换,所以这是一个非常重要的概念!同时可以说,将来的运算将紧紧围绕齐次变换展开,请务必巩固相关知识。
算子:平移,旋转和变换
算子:用于坐标系间点的映射的通用数学表达式。
本章主要介绍平移算子,旋转算子和平移加旋转算子。
平移算子
实际上我们之前已经介绍了平移的矢量计算式。本节介绍将这种运算浓缩为一个算子,对算子的表示进行进一步探讨。
我们知道平移计算方法:
A P 2 = A P 1 + A Q ^AP_2=^AP_1+^AQ AP2=AP1+AQ
用算子写出平移变换:
A P 2 = D Q ( q ) A P 1 ^AP_2=D_Q(q)^AP_1 AP2=DQ(q)AP1
算子
D
Q
(
q
)
D_Q(q)
DQ(q)可被看做一个特殊的齐次变换阵:
由齐次变换矩阵分块可知,旋转矩阵是一个单位阵,原点阵的分量是平移矢量Q的分量。其中, q = q x 2 + q y 2 + q z 2 q=\sqrt{q_x^2+q^2_y+q^2_z} q=qx2+qy2+qz2。
现在我们初步认识了符号 D Q ( q ) D_Q(q) DQ(q),这个符号今后将用来表示坐标系和映射。
旋转算子
可以用旋转变换算子来定义旋转矩阵。
旋转矩阵不涉及两个具体的坐标系。所以,写的时候不需要写下标或上标。引入旋转矩阵 R R R,这个已经比较熟悉的公式:
A P 2 = R A P 1 ^AP_2=R^AP_1 AP2=RAP1
用另一个符号定义旋转算子,以明确是绕哪个轴旋转:
A P 2 = R K ( θ ) A P 1 ^AP_2=R_K(\theta)^AP_1 AP2=RK(θ)AP1
符号 R K ( θ ) R_K(\theta) RK(θ)是一个旋转算子,表示绕K轴旋转θ角度。这个算子可写成齐次变换矩阵。
代入到式子:
B A R = ( A X ^ B A Y ^ B A Z ^ B ) = [ B X ^ A T B Y ^ A T B Z ^ A T ] ^A_BR=\begin{pmatrix}^A\hat{X}_B&^A\hat{Y}_B&^A\hat{Z}_B\end{pmatrix}=\left[\begin{matrix}^B\hat{X}^T_A\\^B\hat{Y}^T_A\\^B\hat{Z}^T_A\end{matrix}\right] BAR=(AX^BAY^BAZ^B)=⎣⎡BX^ATBY^ATBZ^AT⎦⎤
可得:
R K ( θ ) = [ c o s θ − s i n θ 0 0 s i n θ c o s θ 0 0 0 0 1 0 0 0 0 1 ] R_K(\theta)=\left[\begin{matrix}cos\theta&-sin\theta&0&0\\sin\theta&cos\theta&0&0\\0&0&1&0\\0&0&0&1\end{matrix}\right] RK(θ)=⎣⎢⎢⎡cosθsinθ00−sinθcosθ0000100001⎦⎥⎥⎤
再回到刚刚那个例子,也就是绕Z轴旋转30度。此时,旋转算子可写成:
变换算子
即平移加旋转的算子。一个变换通常被认为是由一个广义旋转矩阵和位置矢量分量组成的齐次变换的形式。
如下例:
A P 2 = T A P 1 ^AP_2=T^AP_1 AP2=TAP1
小结
这几节的核心就在于这个齐次变换矩阵。它有3个定义:
1.它是坐标系的描述。
2.它是变换映射。
3.它是变换算子。
变换算法
本节介绍变换的乘法和变换的逆运算。
混合变换
我们有这样一个目标:即已知 C P ^CP CP,求 A P ^AP AP。
已知坐标系{C}相对于坐标系{B},并且已知坐标系{B}相对于坐标系{A}。所以,我们可将 C P ^CP CP变换成 B P ^BP BP:
B P = C B T C P ^BP=^B_CT^CP BP=CBTCP
然后将 B P ^BP BP变换成 A P ^AP AP:
A P = B A T B P ^AP=^A_BT^BP AP=BATBP
联立上两式可以得到确定解。换言之,我们实际运算中,需要寻找ab和bc的这两个变换式,实现变换的传递。
由此定义:
C A T = B A T C B T ^A_CT=^A_BT^B_CT CAT=BATCBT
逆变换
由公式
B A T = A B T − 1 ^A_BT=^B_AT^{-1} BAT=ABT−1
得若需要得到A相对于B的描述,需要求这个矩阵的逆。
利用变换的性质求逆:
为了求 A B T ^B_AT ABT,必须由 B A R ^A_BR BAR和 A P B O R G ^AP_{BORG} APBORG求出 B A T ^A_BT BAT和 B P A O R G ^BP_{AORG} BPAORG。首先,回顾关于旋转矩阵的讨论:
A B R = B A R T ^B_AR=^A_BR^T ABR=BART
其次利用
A P = B A R B P + A P B O R G ^AP=^A_BR^BP+^AP_{BORG} AP=BARBP+APBORG
将 A P B O R G ^AP_{BORG} APBORG转变成在{B}中的描述:
B ( A P B O R G ) = A B R A P B O R G + B P A O R G ^B(^AP_{BORG})=^B_AR^AP_{BORG}+^BP_{AORG} B(APBORG)=ABRAPBORG+BPAORG
左边应为0,因为在A原点处离B原点的距离变换为在B原点处离B原点的距离就是0。所以变换后可得:
B P A O R G = − A B R A P B O R G = − B A R T A P B O R G ^BP_{AORG}=-^B_AR^AP_{BORG}=-^A_BR{^T}^AP_{BORG} BPAORG=−ABRAPBORG=−BARTAPBORG
从而写出:
变换方程
回顾之前所学我们发现简单变换方程的构造依赖于三个坐标系所确定的两个变换式,那么多个坐标系也以此类推,使用的总是变换相乘的方法:
从而:
由这个变换方程我们可以解出:
从这个变换方程中我们可以得出C的两个可能的描述为:
和
例:假定已知上图中变换
T
B
T
^B_TT
TBT描述了操作臂指端的坐标系{T},它是相对于操作臂基座的坐标系B的,又已知工作台相对于操作臂基座的空间位置(因为已知与工作台相连的坐标系{S}是
S
B
T
^B_ST
SBT),并且已知工作台上螺栓的坐标系相对于工作台坐标系的位置,即
G
S
T
^S_GT
GST。计算螺栓相对操作手的位姿,
G
T
T
^T_GT
GTT。
由公式推导得到相对于操作手坐标系的螺栓坐标系为:
姿态的其他描述方法
旋转矩阵又被称为标准正交矩阵。由正交矩阵的凯莱公式可得,对于任何正交阵 R R R,存在一个反对称矩阵 S S S,满足:
R = ( I 3 − S ) − 1 ( I 3 + S ) R=(I_3-S)^{-1}(I_3+S) R=(I3−S)−1(I3+S)
式中是一个 3 × 3 3\times3 3×3单位阵。一个3维反对称阵(即 S = − S T S=-S^T S=−ST)可由三个参数 ( s x , s y , s z ) (s_x,s_y,s_z) (sx,sy,sz)表示为
S = [ 0 − s z s y s z 0 − s x − s y s x 0 ] S=\left[\begin{matrix}0&-s_z&s_y\\s_z&0&-s_x\\-s_y&s_x&0\end{matrix}\right] S=⎣⎡0sz−sy−sz0sxsy−sx0⎦⎤
因此,任何3x3旋转矩阵都可以用三个参量确定。
显然,旋转矩阵的九个分量线性相关。实际上,对于一个旋转矩阵R很容易写出六个线性无关的分量。如上所述,假定R为三列:
由单位轴知识可知,三个矢量是参考坐标系中某坐标系的单位轴。每个矢量都是单位矢量,且相互垂直,所以9个矩阵元素有6个约束:
这些约束看起来非常臃肿,是否能够找到一种表达方法,用三个参量即可简便地表达?几个姿态表达法能够帮助我们做到这一点。
平移运动直观,但旋转变换往往并不直观,主要困难是旋转一般不互逆。即, B A R C B R ^A_BR^B_CR BARCBR与 C B R B A R ^B_CR^A_BR CBRBAR不同。频繁地输入九个元素的正交阵不是一件容易的工作,而我们引入这些姿态表达法则能简化运算。
X-Y-Z固定角
这种方法是,首先将坐标系{B}与一个已知参考坐标系{A}重合。先将{B}绕 X ^ A \hat{X}^A X^A旋转 γ \gamma γ角,再绕绕 Y ^ A \hat{Y}^A Y^A旋转 β \beta β角,最后绕 Z ^ A \hat{Z}^A Z^A旋转 α \alpha α角。
每个旋转都是绕着参考坐标系{A}的某个轴完成的。我们称这种方法为X-Y-Z固定角。有时,我们会称这些角为回转角、俯仰角和偏转角。但是使用中约定可能不同。
此时可直接推导等价旋转矩阵 B A R X Y Z ( γ , β , α ) ^A_BR_{XYZ}(\gamma,\beta,\alpha) BARXYZ(γ,β,α):
其中
c
α
c\alpha
cα是
c
o
s
α
cos\alpha
cosα的简写,
s
α
s\alpha
sα是
s
i
n
α
sin\alpha
sinα的简写。
最重要的是搞清楚上式中的旋转顺序,将旋转看作算子,先X再Y后Z。
上式乘积后可得:
仅当旋转是按照上述顺序进行时,(2.64)才是正确的。这一点要万万记牢!
接着,不妨来看一组逆问题:
从一个旋转矩阵等价推出X-Y-Z固定角坐标系,这样的逆解取决于求解一组超越方程:如果方程相当于一个旋转矩阵,那么就有九个方程和三个未知量。在这九个方程中有六个方程是相关的,因此实际上只有三个方程和三个未知量。(超越方程:方程中有无法用自变数的多项式或开方表示的函数,常用近似解法去解,是目前计算数学中一个重要的问题)
令
由(2.64)式通过计算
r
11
r_{11}
r11和
r
21
r_{21}
r21的平方和的平方根,可求得
c
o
s
β
cos\beta
cosβ。然后用
−
r
31
-r_{31}
−r31除以
c
o
s
β
cos\beta
cosβ再求其反正切可求得
β
\beta
β。那么,只要
c
β
≠
0
c\beta≠0
cβ=0,就可以用
r
21
/
c
β
r_{21}/c\beta
r21/cβ除以
r
11
/
c
β
r_{11}/c\beta
r11/cβ,得到
α
\alpha
α角,用
r
32
/
c
β
r_{32}/c\beta
r32/cβ除以
r
33
/
c
β
r_{33}/c\beta
r33/cβ,得到
γ
\gamma
γ角,
即
式中
A
t
a
n
2
(
y
,
x
)
Atan2(y,x)
Atan2(y,x)是一个双参变量的反正切函数。
虽然存在第二个解,但在上式中取 β \beta β的正根以得到单解,满足 − 90 ° ≤ β ≤ 90 ° -90°≤\beta≤90° −90°≤β≤90°。这样就可以在各种姿态表示法之间定义一一对应的映射函数。但是在某些情况下有必要求出所有的解,这在操作臂逆运动学那一章会讨论。如果 β = ± 90 ° \beta=±90° β=±90°(即 c β = 0 c\beta=0 cβ=0),下式的解会退化。如此,只能求出 α \alpha α和 β \beta β的和或者差。这种情况下,一般取 α = 0.0 \alpha=0.0 α=0.0,结果如下:
如
β
=
90.0
°
\beta=90.0°
β=90.0°,解得:
如
β
=
−
90.0
°
\beta=-90.0°
β=−90.0°,解得:
Z-Y-X欧拉角
有另外一种坐标系的表示法:首先将坐标系{B}与一个已知参考坐标系{A}重合。先将{B}绕
Z
^
B
\hat{Z}^B
Z^B旋转
α
\alpha
α角,再绕
Y
^
B
\hat{Y}^B
Y^B旋转
β
\beta
β角,最后绕
X
^
B
\hat{X}^B
X^B旋转
γ
\gamma
γ角。
同样都是重合后绕三个轴旋转,但是顺序有所不同。具体可以看图,所以运算上也出现比较大的不同,必须加以区分。这种方法叫做Z-Y-X欧拉角。
绕 Z ^ \hat{Z} Z^轴旋转 α \alpha α角使 X ^ \hat{X} X^旋转到 X ^ ′ \hat{X}^{'} X^′, Y ^ \hat{Y} Y^旋转到 Y ^ ′ \hat{Y}^{'} Y^′,加撇号表明这是由欧拉角描述的旋转。
用中间坐标系 { B ′ } \{B^{'}\} {B′}和 { B ′ ′ } \{B^{''}\} {B′′}来表示 B A R Z ′ Y ′ X ′ ( α , β , γ ) ^A_BR_{Z^{'}Y^{'}X^{'}}(\alpha,\beta,\gamma) BARZ′Y′X′(α,β,γ)。如果,把这些旋转看成是坐标系的描述,就可以立即写出:
B A R = B ′ A R B ′ ′ B ′ R B B ′ ′ R ^A_BR=^A_{B^{'}}R^{B^{'}}_{B^{''}}R^{B^{''}}_{B^{}}R BAR=B′ARB′′B′RBB′′R
上式右边的每个旋转描述都是按照Z-Y-X欧拉角的定义给出的,即B相对于A的最终姿态为:
结果不太直观,但是与X-Y-Z固定角所得的结果相同。
Z-Y-Z欧拉角
先将{B}绕 Z ^ B \hat{Z}^B Z^B旋转 α \alpha α角,再绕 Y ^ B \hat{Y}^B Y^B旋转 β \beta β角,最后绕 Z ^ B \hat{Z}^B Z^B旋转 γ \gamma γ角。
按照上一节的推导,可得到等效矩阵
从旋转矩阵得出Z-Y-Z欧拉角介绍如下:
已知
B A R Z ′ Y ′ Z ′ ( α , β , γ ) = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] ^A_BR_{Z^{'}Y^{'}Z^{'}}(\alpha,\beta,\gamma)=\left[\begin{matrix}r_{11}&r_{12}&r_{13}\\r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\end{matrix}\right] BARZ′Y′Z′(α,β,γ)=⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤
如 s i n β ≠ 0 sin\beta≠0 sinβ=0,可得到
β
=
A
t
a
n
2
(
r
31
2
+
r
32
2
,
r
33
)
\beta=Atan2(\sqrt{r^2_{31}+r^2_{32}},r_{33})
β=Atan2(r312+r322,r33)
α
=
A
t
a
n
2
(
r
23
/
s
β
,
r
13
/
s
β
)
\alpha=Atan2(r_{23}/s\beta,r_{13}/s\beta)
α=Atan2(r23/sβ,r13/sβ)
γ
=
A
t
a
n
2
(
r
32
/
s
β
,
−
r
31
/
s
β
)
\gamma=Atan2(r_{32}/s\beta,-r_{31}/s\beta)
γ=Atan2(r32/sβ,−r31/sβ)
虽然存在第二个解(在式中取 β \beta β的正平方根),但我们总是求满足 0.0 ≤ β ≤ 180.0 ° 0.0≤\beta≤180.0° 0.0≤β≤180.0°的单解。如果 β = 0.0 \beta=0.0 β=0.0或 180.0 ° 180.0° 180.0°,上式的结果就会退化。在这种情况下,仅能求出 α \alpha α和 γ \gamma γ的和或差。这种情况下一般取 α = 0.0 \alpha=0.0 α=0.0,结果如下:
其他角坐标系的表示法
总共有24种表示法,这三种是典型方法,都被称作角坐标系表示法。24种表示法中,12种为固定角表示法,另外12种为欧拉角坐标系法。二者有对偶性。
等效轴角坐标系表示法
这种方法是,首先将坐标系{B}和一个已知参考坐标系{A}重合,然后将{B}绕矢量 A K ^ ^A\hat{K} AK^按右手定则旋转 θ \theta θ角。
矢量
K
^
\hat{K}
K^有时被称为有限旋转的等效轴。{B}相对于{A}的一般姿态可用
B
A
R
(
K
^
,
θ
)
^A_BR(\hat{K},\theta)
BAR(K^,θ)或
R
K
(
θ
)
R_K(\theta)
RK(θ)来表示,称作等效轴角坐标系表示法。确定矢量
A
K
^
^A\hat{K}
AK^只需要两个参数,因为它的长度恒等于1。角度确定了第三个参数。经常用旋转量
θ
\theta
θ乘以单位方向矢量
K
^
\hat{K}
K^形成一个简单的
3
×
1
3\times1
3×1的矢量来描述姿态,用
K
K
K表示(没有“帽号”),如上图所示。
当选择{A}的主轴中的一个轴作为旋转轴时,则等效旋转矩阵成为我们熟悉的平面旋转矩阵:
若旋转轴为一般轴,则等效旋转阵为:
对于任何旋转轴和任何角度,都能很容易地构造出等效旋转阵。
如此也产生了一个逆问题,也就是从一个给定的等效旋转阵求出 K ^ \hat{K} K^和 θ \theta θ。此处先给出一部分结果。
如果
然后
并且
由上式总可以计算出一个在0度到180度之间的
θ
\theta
θ值。对于任意一对轴-角
(
A
K
^
,
θ
)
(^A\hat{K},\theta)
(AK^,θ),存在另一对轴-角,即
(
−
A
K
^
,
−
θ
)
(-^A\hat{K},-\theta)
(−AK^,−θ),它们在空间中的姿态相同,可用同样的旋转矩阵描述。因此,在将旋转矩阵转化为等效轴角坐标系表示法时,我们需要对解进行选择。一个更加重要的问题是,对于小角度的旋转,此时的轴将变得不确定。如果转动量
θ
\theta
θ为0,那么旋转轴将完全无法确定,如果
θ
=
0
\theta=0
θ=0或
180
°
时
180°时
180°时,上式将无解。
例:坐标系{B}最初与坐标系{A}重合。我们使坐标系{B}绕矢量 K ^ = [ 0.707 0.70 70.0 ] \hat{K}=\left[\begin{matrix}0.707&0.70&70.0\end{matrix}\right] K^=[0.7070.7070.0]( A K ^ ^A\hat{K} AK^经过原点)旋转,转角 θ = 30 ° \theta=30° θ=30°,求坐标系{B}的描述。
代入式(2.80)可得坐标系描述的旋转矩阵分量。因为原点没有改变,所以位置矢量是
[
0
0
0
]
T
\left[\begin{matrix}0&0&0\end{matrix}\right]^T
[000]T。因此有
我们需要尽量讨论绕经过参考系原点的轴的旋转。若遇到的问题不属于这种情况时,我们可以定义另一个坐标系,该坐标系的原点在轴上,为此将这类问题简化为“经过原点的轴”的情况来解决,然后求解这个变换方程。
例:坐标系{B}最初与坐标系{A}重合。我们使坐标系{B}绕矢量
K
^
=
[
0.707
0.70
70.0
]
\hat{K}=\left[\begin{matrix}0.707&0.70&70.0\end{matrix}\right]
K^=[0.7070.7070.0](此矢量经过点
A
P
=
[
1.0
2.0
3.0
]
^AP=\left[\begin{matrix}1.0&2.0&3.0\end{matrix}\right]
AP=[1.02.03.0])旋转,转角
θ
=
30
°
\theta=30°
θ=30°,求坐标系{B}的描述。
在旋转之前,坐标系{A}和坐标系{B}是重合的。如上图所示,定义了两个新的坐标系{ A ′ A^{'} A′}和{ B ′ B^{'} B′}具有相同的方向,但它们的原点在旋转轴上,并且相对于坐标系{A}的原点有一定的偏移量。我们选择
同样,坐标系{B}相对于坐标系{ B ′ B^{'} B′}的描述是
现在,保持其他关系不变,使坐标系{
B
′
B^{'}
B′}绕坐标系{
A
′
A^{'}
A′}旋转。因为旋转轴经过原点,所以用式(2.80)来计算坐标系{
B
′
B^{'}
B′}相对于{
A
′
A^{'}
A′}的旋转量。代入式(2.80)得到描述的旋转矩阵分量。又因为原点没有平移,所以位置矢量是
(
0
,
0
,
0
)
T
(0,0,0)^T
(0,0,0)T。因此,我们得到
我们可以用一个变换方程来计算要求的坐标系
B A T = A ′ A T B ′ A ′ T B B ′ T ^A_BT=^A_{A^{'}}T^{A^{'}}_{B^{'}}T^{B^{'}}_{B}T BAT=A′ATB′A′TBB′T
从而得到
绕一个不经过原点的轴旋转会引起位置变化,另外加上姿态变化。该姿态变化跟旋转线轴通过原点引起的姿态变化一样。注意,我们可以使用任意定义的坐标系{
A
′
A^{'}
A′}和{
B
′
B^{'}
B′},只要它们的原点选在旋转轴线上,旋转轴线方向的选择是任意的,而坐标系原点可以选择旋转轴线的任意位置。
欧拉参数
一种通过四个数值来表示的姿态表示法叫做欧拉参数。
定义:根据等效旋转轴 K ^ = [ k x k y k z ] T \hat{K}=\left[\begin{matrix}k_x& k_y&k_z\end{matrix}\right]^T K^=[kxkykz]T和等效旋转角 θ \theta θ得到欧拉参数如下:
ϵ
1
=
k
x
s
i
n
θ
/
2
\epsilon_1=k_xsin\theta/2
ϵ1=kxsinθ/2
ϵ
2
=
k
y
s
i
n
θ
/
2
\epsilon_2=k_ysin\theta/2
ϵ2=kysinθ/2
ϵ
3
=
k
z
s
i
n
θ
/
2
\epsilon_3=k_zsin\theta/2
ϵ3=kzsinθ/2
ϵ
4
=
c
o
s
θ
/
2
\epsilon_4=cos\theta/2
ϵ4=cosθ/2
显然这四个参数不独立,并有关系式:
ϵ 1 2 + ϵ 2 2 + ϵ 3 2 + ϵ 4 2 = 1 \epsilon_1^2+\epsilon_2^2+\epsilon_3^2+\epsilon_4^2=1 ϵ12+ϵ22+ϵ32+ϵ42=1
这个关系总是不变。
因此,一个姿态可描述为四维空间中单位超球面上的一点。
有时,可以将欧拉参数看做是一个 3 × 1 3\times1 3×1的矢量加上一个标量。但是,虽然欧拉参数是一个 4 × 1 4\times1 4×1的矢量,我们还是将欧拉参数看作是一个单位四元数。
用欧拉参数组表示的旋转矩阵 R ϵ R_{\epsilon} Rϵ是
已知一个旋转矩阵得到对应的欧拉参数是
注意,从计算的意义上来讲,如果旋转矩阵表示的是绕某一轴
180
°
180°
180°的旋转,上式将失去意义,因为
ϵ
4
=
0
\epsilon_4=0
ϵ4=0。但可以看出,当取极限时,式(2.92)中的所有表达式都趋向于无穷大,对于上述情况也是如此。实际上从上式的定义中可以看出,对于所有的
ϵ
i
\epsilon_i
ϵi,其值在[-1,1]间。
自由矢量的变换
这一章我们重点介绍了位置矢量,后面的章节主要对速度和力矢量进行讨论。
下面介绍两种很有用的矢量:
线矢量:指与作用线有关的矢量,其作用效果取决于矢量的大小和方向。通常情况下,力矢量的作用效果取决于力的作用线(或者是力的作用点),所以力矢量可看作线矢量。
自由矢量:指可能出现在空间任意位置的矢量,但它的性质没有改变。例如假定它的大小和方向保持不变。对于它的计算都是关于大小和方向的。
计算分析
在工业操作臂系统中常用的变换软件并不直接应用齐次变换方法,因为大量的时间会耗费在0和1的乘法运算上。
通常,我们左乘矩阵或进行矩阵计算来进行矢量变换,在不同的情况下需要选用不同的计算方法。