合角速度(角速度可叠加性)的讨论
问题描述
Fig. 1 关于角速度的例子
如Fig. 1所示,当我们在地球旁边放一个固定的参考坐标系{Ref},然后,地球以相对于参考坐标系{Ref}的角速度 w ⃗ 1 \vec{w}_{1} w1自转,地球上面站着一个人,这个人以相对于地球坐标系(地球坐标系固连在地球上)的角速度 w ⃗ 2 \vec{w}_{2} w2转动。请问这个人在参考坐标系{Ref}下的角速度是多少?可能大家都知道1. 矢量具有叠加性,2. 线速度的叠加性(非常直观且容易证明)。但是涉及到角速度,好像这个叠加性并不是那么直观,甚至让人怀疑到底角速度有没有叠加性?所以本博客想要从代数的角度来讨论这个问题,并且会从代数角度给出严格的证明。
Fig. 2 多坐标系下的角速度
如图Fig. 2所示,我们把Fig. 1中的固连在地球上的坐标系记作Frame {A},然后我们把固连在人身上的坐标系记作Frame {B}, 这里只考虑转动,没有平移(即Frame {A}在Reference Frame {Ref}中以角速度 w ⃗ A R e f \vec{w}^{Ref}_{A} wARef转动,Frame{A}的坐标原点O在Refence Frame {Ref}中的坐标始终不变;同样地,Frame {B}在Frame {A}中以角速度 w ⃗ B A \vec{w}^{A}_{B} wBA转动,Frame {B}的坐标原点O在Frame {A}中的坐标始终不变)。为了严格推导Frame {B}在Reference Frame {Ref}中的角速度,我们先讨论下文所述的旋转矩阵与角速度的关系。
旋转矩阵与角速度的关系
Fig .3 角速度与旋转矩阵的关系
如Fig. 3所示,我们知道,一个物体的姿态可以由 3 × 3 3 \times 3 3×3的旋转矩阵来表达。记时刻 t t t,Frame {A}在Reference Frame {Ref}中的旋转矩阵表达式为 R A R e f ( t ) R^{Ref}_{A}(t) RARef(t),Frame {A}在Reference Frame {Ref}中的旋转的角速度为 w ⃗ A R e f ( t ) \vec{w}^{Ref}_{A}(t) wARef(t),那么 R A R e f ( t ) R^{Ref}_{A}(t) RARef(t)与 w ⃗ A R e f ( t ) \vec{w}^{Ref}_{A}(t) wARef(t)的关系是什么?
我们先介绍等式
w
⃗
×
r
⃗
=
[
w
⃗
]
×
r
⃗
(1)
\vec{w}\times\vec{r}=[\vec{w}]_{\times}\vec{r} \tag{1}
w×r=[w]×r(1)
其中
w
⃗
=
[
w
x
,
w
y
,
w
z
]
T
\vec{w}=[w_{x}, w_{y}, w_{z}]^{T}
w=[wx,wy,wz]T,
r
⃗
=
[
r
x
,
r
y
,
r
z
]
T
\vec{r}=[r_{x},r_{y},r_{z}]^{T}
r=[rx,ry,rz]T,
[
w
⃗
]
×
=
[
0
−
w
z
w
y
w
z
0
−
w
x
−
w
y
w
x
0
]
[\vec{w}]_{\times}=\left[ \begin{array}{ccc} \ 0 & -w_{z} & w_{y} \\ \ w_{z} & 0 & -w_{x}\\ \ -w_{y} & w_{x} & 0 \end{array} \right]
[w]×=
0 wz −wy−wz0wxwy−wx0
,这个等式根据叉乘的定义是自然而然得到的(这个等式的意义是,把叉乘这样的代数运算变成了矩阵乘法这样的代数运算,这样我们就可以使用矩阵的性质来处理后续的代数运算了)。
Fig. 4 角速度与线速度
如Fig. 4所示,Frame {A}中有一个固定点
P
P
P(即点
P
P
P在Frame {A}中的坐标不变),点P与Frame {A}的坐标原点O的连线所形成向量记作
O
P
→
\overrightarrow{OP}
OP, 记
O
P
→
\overrightarrow{OP}
OP在Frame {A}中的表达为
O
P
→
A
\overrightarrow{OP}^{A}
OPA,在Reference Frame {Ref}中的表达为
O
P
→
R
e
f
\overrightarrow{OP}^{Ref}
OPRef。那么点
P
P
P在Reference Frame中的线速度
v
⃗
R
e
f
=
w
⃗
A
R
e
f
×
O
P
→
R
e
f
=
w
⃗
A
R
e
f
×
(
R
A
R
e
f
O
P
→
A
)
(2)
\vec{v}^{Ref}=\vec{w}^{Ref}_{A}\times\overrightarrow{OP}^{Ref}=\vec{w}^{Ref}_{A}\times (R^{Ref}_{A}\overrightarrow{OP}^{A}) \tag{2}
vRef=wARef×OPRef=wARef×(RARefOPA)(2)
将(1)式代入(2)式中,得到
v
⃗
R
e
f
=
w
⃗
A
R
e
f
×
(
R
A
R
e
f
O
P
→
A
)
=
[
w
⃗
A
R
e
f
]
×
(
R
A
R
e
f
O
P
→
A
)
(3)
\vec{v}^{Ref}=\vec{w}^{Ref}_{A}\times (R^{Ref}_{A}\overrightarrow{OP}^{A})=[\vec{w}^{Ref}_{A}]_{\times}(R^{Ref}_{A}\overrightarrow{OP}^{A}) \tag{3}
vRef=wARef×(RARefOPA)=[wARef]×(RARefOPA)(3)
这样,得到(3)式中矩阵相乘的结果,利用矩阵运算具有结合律的性质(插播一句,个人感觉是矩阵中最重要也是最奇妙的性质之一),得到
v
⃗
R
e
f
=
(
[
w
⃗
A
R
e
f
]
×
R
A
R
e
f
)
O
P
→
A
(4)
\vec{v}^{Ref}=([\vec{w}^{Ref}_{A}]_{\times}R^{Ref}_{A})\overrightarrow{OP}^{A} \tag{4}
vRef=([wARef]×RARef)OPA(4)
同时,我们可以发现,Frame {A}中的固定点
P
P
P与Frame {A}的坐标原点O连接而成的向量
O
P
→
\overrightarrow{OP}
OP在Reference Frame {Ref}中的坐标可以写作
O
P
→
R
e
f
=
R
A
R
e
f
O
P
→
A
\overrightarrow{OP}^{Ref}=R^{Ref}_{A}\overrightarrow{OP}^{A}
OPRef=RARefOPA,那么我们对
O
P
→
R
e
f
\overrightarrow{OP}^{Ref}
OPRef求导(注意,Frame {A}的原点O在Reference Frame {Ref}中是固定不动的,因为不考虑平移,只考虑转动),可以得到点
P
P
P的线速度
v
⃗
R
e
f
=
d
O
P
→
R
e
f
d
t
=
d
(
R
A
R
e
f
O
P
→
A
)
d
t
=
R
˙
A
R
e
f
O
P
→
A
+
R
A
R
e
f
O
P
→
A
˙
(5)
\vec{v}^{Ref}=\frac{d \overrightarrow{OP}^{Ref}}{dt}=\frac{d (R^{Ref}_{A}\overrightarrow{OP}^{A})}{dt}=\dot{R}^{Ref}_{A}\overrightarrow{OP}^{A}+R^{Ref}_{A}\dot{\overrightarrow{OP}^{A}} \tag{5}
vRef=dtdOPRef=dtd(RARefOPA)=R˙ARefOPA+RARefOPA˙(5)
在(5)式中,因为
O
P
→
A
˙
\dot{\overrightarrow{OP}^{A}}
OPA˙是零向量(因为
O
P
→
A
\overrightarrow{OP}^{A}
OPA是常向量),所以(5)式可以重写为
v
⃗
R
e
f
=
R
˙
A
R
e
f
O
P
→
A
(6)
\vec{v}^{Ref}=\dot{R}^{Ref}_{A}\overrightarrow{OP}^{A} \tag{6}
vRef=R˙ARefOPA(6)
到现在,我们得到了(4)式和(6)式,我们发现(4)式和(6)式都是表示Frame {A}中的固定点
P
P
P的线速度,有
(
[
w
⃗
A
R
e
f
]
×
R
A
R
e
f
)
O
P
→
A
=
R
˙
A
R
e
f
O
P
→
A
(7)
([\vec{w}^{Ref}_{A}]_{\times}R^{Ref}_{A})\overrightarrow{OP}^{A}=\dot{R}^{Ref}_{A}\overrightarrow{OP}^{A} \tag{7}
([wARef]×RARef)OPA=R˙ARefOPA(7)
在(7)式中,由于
P
P
P点的选取具有任意性,(7)式都成立(即
∀
O
P
→
A
∈
R
3
\forall \overrightarrow{OP}^{A}\in\mathbb{R}^3
∀OPA∈R3,(7)式都成立)
所以可以得到
[
w
⃗
A
R
e
f
]
×
R
A
R
e
f
=
R
˙
A
R
e
f
(8)
[\vec{w}^{Ref}_{A}]_{\times}R^{Ref}_{A}=\dot{R}^{Ref}_{A} \tag{8}
[wARef]×RARef=R˙ARef(8)
由(8)式知(因为
R
A
R
e
f
R^{Ref}_{A}
RARef是正交阵,所以
(
R
A
R
e
f
)
−
1
=
(
R
A
R
e
f
)
T
(R^{Ref}_{A})^{-1}=(R^{Ref}_{A})^{T}
(RARef)−1=(RARef)T),
[
w
⃗
A
R
e
f
]
×
=
R
˙
A
R
e
f
(
R
A
R
e
f
)
−
1
=
R
˙
A
R
e
f
(
R
A
R
e
f
)
T
(9)
[\vec{w}^{Ref}_{A}]_{\times}=\dot{R}^{Ref}_{A}(R^{Ref}_{A})^{-1}= \dot{R}^{Ref}_{A}(R^{Ref}_{A})^{T}\tag{9}
[wARef]×=R˙ARef(RARef)−1=R˙ARef(RARef)T(9)
到这里,得到下图Fig. 5所示的结论
Fig. 5 角速度向量与旋转矩阵的关系
图Fig. 5所示的结论,不仅揭示了旋转矩阵和角速度之间的关系,而且还给出了一种从旋转矩阵及其导数出发,来计算出角速度的方法。
角速度的叠加性的讨论
Fig. 6 多坐标系下的角速度
如Fig. 6所示,有下式成立
R
B
R
e
f
=
R
A
R
e
f
R
B
A
(10)
R^{Ref}_{B}=R^{Ref}_{A}R^{A}_{B} \tag{10}
RBRef=RARefRBA(10)
对(10)式两边求导,有
R
˙
B
R
e
f
=
R
˙
A
R
e
f
R
B
A
+
R
A
R
e
f
R
˙
B
A
(11)
\dot{R}^{Ref}_{B}=\dot{R}^{Ref}_{A}R^{A}_{B}+{R}^{Ref}_{A}\dot{R}^{A}_{B} \tag{11}
R˙BRef=R˙ARefRBA+RARefR˙BA(11)
从上一部分,我们已经知道角速度可以通过旋转矩阵及其导数来求得(具体关系如(9)式所示)。
则Frame {B}在Reference Frame {Ref}中的角速度矩阵
[
w
⃗
B
R
e
f
]
×
=
R
˙
B
R
e
f
(
R
B
R
e
f
)
T
=
(
R
˙
A
R
e
f
R
B
A
+
R
A
R
e
f
R
˙
B
A
)
(
R
B
R
e
f
)
T
=
R
˙
A
R
e
f
R
B
A
(
R
B
A
)
T
(
R
A
R
e
f
)
T
+
R
A
R
e
f
R
˙
B
A
(
R
B
R
e
f
)
T
=
R
˙
A
R
e
f
(
R
A
R
e
f
)
T
+
R
A
R
e
f
R
˙
B
A
(
R
B
R
e
f
)
T
=
[
w
⃗
A
R
e
f
]
×
+
R
A
R
e
f
R
˙
B
A
(
R
B
R
e
f
)
T
=
[
w
⃗
A
R
e
f
]
×
+
R
A
R
e
f
R
˙
B
A
(
R
A
R
e
f
R
B
A
)
T
=
[
w
⃗
A
R
e
f
]
×
+
R
A
R
e
f
R
˙
B
A
(
R
B
A
)
T
(
R
A
R
e
f
)
T
=
[
w
⃗
A
R
e
f
]
×
+
R
A
R
e
f
[
w
⃗
B
A
]
×
(
R
A
R
e
f
)
T
\begin{align} [\vec{w}^{Ref}_{B}]_{\times} \notag \\ &=\dot{R}^{Ref}_{B}(R^{Ref}_{B})^{T} \notag \\ &=(\dot{R}^{Ref}_{A}R^{A}_{B}+{R}^{Ref}_{A}\dot{R}^{A}_{B})(R^{Ref}_{B})^{T} \notag \\ &=\dot{R}^{Ref}_{A}R^{A}_{B}(R^{A}_{B})^{T}(R^{Ref}_{A})^{T}+{R}^{Ref}_{A}\dot{R}^{A}_{B}(R^{Ref}_{B})^{T} \notag \\ &=\dot{R}^{Ref}_{A}(R^{Ref}_{A})^{T}+{R}^{Ref}_{A}\dot{R}^{A}_{B}(R^{Ref}_{B})^{T} \notag \\ &=[\vec{w}^{Ref}_{A}]_{\times}+{R}^{Ref}_{A}\dot{R}^{A}_{B}(R^{Ref}_{B})^{T} \notag \\ &=[\vec{w}^{Ref}_{A}]_{\times}+ {R}^{Ref}_{A}\dot{R}^{A}_{B}(R^{Ref}_{A}R^{A}_{B})^{T} \notag \\ &=[\vec{w}^{Ref}_{A}]_{\times}+ {R}^{Ref}_{A}\dot{R}^{A}_{B}(R^{A}_{B})^{T}(R^{Ref}_{A})^{T} \notag \\ &=[\vec{w}^{Ref}_{A}]_{\times}+ {R}^{Ref}_{A}[\vec{w}^{A}_{B}]_{\times}(R^{Ref}_{A})^{T} \tag{12} \end{align}
[wBRef]×=R˙BRef(RBRef)T=(R˙ARefRBA+RARefR˙BA)(RBRef)T=R˙ARefRBA(RBA)T(RARef)T+RARefR˙BA(RBRef)T=R˙ARef(RARef)T+RARefR˙BA(RBRef)T=[wARef]×+RARefR˙BA(RBRef)T=[wARef]×+RARefR˙BA(RARefRBA)T=[wARef]×+RARefR˙BA(RBA)T(RARef)T=[wARef]×+RARef[wBA]×(RARef)T(12)
下面我们证明,式(12)中的
R
A
R
e
f
[
w
⃗
B
A
]
×
(
R
A
R
e
f
)
T
{R}^{Ref}_{A}[\vec{w}^{A}_{B}]_{\times}(R^{Ref}_{A})^{T}
RARef[wBA]×(RARef)T是角速度向量
R
A
R
e
f
w
⃗
B
A
R^{Ref}_{A}\vec{w}^{A}_{B}
RARefwBA(即Frame {B}在Frame {A}中角速度
w
⃗
B
A
\vec{w}^{A}_{B}
wBA,在Reference Frame {Ref}中的坐标表示)对应的矩阵形式(即对于
∀
r
⃗
∈
R
3
\forall\vec{r}\in\mathbb{R}^3
∀r∈R3,有
(
R
A
R
e
f
w
⃗
B
A
)
×
r
⃗
=
[
R
A
R
e
f
[
w
⃗
B
A
]
×
(
R
A
R
e
f
)
T
]
r
⃗
(R^{Ref}_{A}\vec{w}^{A}_{B})\times\vec{r}=[{R}^{Ref}_{A}[\vec{w}^{A}_{B}]_{\times}(R^{Ref}_{A})^{T}]\vec{r}
(RARefwBA)×r=[RARef[wBA]×(RARef)T]r)。下面我们来证明(下面的证明过程中,我们记
r
⃗
′
=
(
R
A
R
e
f
)
T
r
⃗
\vec{r}^{'}=(R^{Ref}_{A})^{T}\vec{r}
r′=(RARef)Tr)。
(
R
A
R
e
f
w
⃗
B
A
)
×
r
⃗
=
(
R
A
R
e
f
w
⃗
B
A
)
×
(
R
A
R
e
f
(
R
A
R
e
f
)
T
r
⃗
)
=
(
R
A
R
e
f
w
⃗
B
A
)
×
(
R
A
R
e
f
r
⃗
′
)
=
R
A
R
e
f
(
w
⃗
B
A
×
r
⃗
′
)
=
R
A
R
e
f
[
[
w
⃗
B
A
]
×
r
⃗
′
]
\begin{align} (R^{Ref}_{A}\vec{w}^{A}_{B})\times\vec{r} \notag \\ &= (R^{Ref}_{A}\vec{w}^{A}_{B})\times(R^{Ref}_{A}(R^{Ref}_{A})^{T}\vec{r}) \notag \\ &= (R^{Ref}_{A}\vec{w}^{A}_{B})\times(R^{Ref}_{A}\vec{r}^{'}) \notag \\ &= R^{Ref}_{A}(\vec{w}^{A}_{B}\times\vec{r}^{'}) \notag \\ &= {R}^{Ref}_{A}[[\vec{w}^{A}_{B}]_{\times}\vec{r}^{'}] \tag{13} \end{align}
(RARefwBA)×r=(RARefwBA)×(RARef(RARef)Tr)=(RARefwBA)×(RARefr′)=RARef(wBA×r′)=RARef[[wBA]×r′](13)
在式(13)中的倒数第三步到倒数第二步可以从正交变换的角度获得直观的理解,这里不证明这一步了。
[
R
A
R
e
f
[
w
⃗
B
A
]
×
(
R
A
R
e
f
)
T
]
r
⃗
=
[
R
A
R
e
f
[
w
⃗
B
A
]
×
]
[
(
R
A
R
e
f
)
T
r
⃗
]
=
[
R
A
R
e
f
[
w
⃗
B
A
]
×
]
r
⃗
′
\begin{align} [{R}^{Ref}_{A}[\vec{w}^{A}_{B}]_{\times}(R^{Ref}_{A})^{T}]\vec{r} \notag \\ &= [{R}^{Ref}_{A}[\vec{w}^{A}_{B}]_{\times}][(R^{Ref}_{A})^{T}\vec{r}] \notag \\ &= [{R}^{Ref}_{A}[\vec{w}^{A}_{B}]_{\times}]\vec{r}^{'} \tag{14} \end{align}
[RARef[wBA]×(RARef)T]r=[RARef[wBA]×][(RARef)Tr]=[RARef[wBA]×]r′(14)
上述(13)式和(14)式相等(因为矩阵的结合律)。
记
R
A
R
e
f
w
⃗
B
A
=
[
w
x
′
,
w
y
′
,
w
z
′
]
T
R^{Ref}_{A}\vec{w}^{A}_{B}=[w^{'}_{x}, w^{'}_{y}, w^{'}_{z}]^{T}
RARefwBA=[wx′,wy′,wz′]T,则可以得到(15)式
[
w
⃗
B
R
e
f
]
×
=
[
w
⃗
A
R
e
f
]
×
+
[
R
A
R
e
f
w
⃗
B
A
]
×
=
[
0
−
w
z
w
y
w
z
0
−
w
x
−
w
y
w
x
0
]
+
[
0
−
w
z
′
w
y
′
w
z
′
0
−
w
x
′
−
w
y
′
w
x
′
0
]
=
[
0
−
(
w
z
+
w
z
′
)
w
y
+
w
y
′
w
z
+
w
z
′
0
−
(
w
x
+
w
x
′
)
−
(
w
y
+
w
y
′
)
w
x
+
w
x
′
0
]
\begin{align} [\vec{w}^{Ref}_{B}]_{\times} \notag \\ &= [\vec{w}^{Ref}_{A}]_{\times}+[R^{Ref}_{A}\vec{w}^{A}_{B}]_{\times} \notag \\ &=\left[ \begin{array}{ccc} \ 0 & -w_{z} & w_{y} \\ \ w_{z} & 0 & -w_{x}\\ \ -w_{y} & w_{x} & 0 \end{array} \right] + \left[ \begin{array}{ccc} \ 0 & -w^{'}_{z} & w^{'}_{y} \\ \ w^{'}_{z} & 0 & -w^{'}_{x}\\ \ -w^{'}_{y} & w^{'}_{x} & 0 \end{array} \right] \notag \\ &= \left[ \begin{array}{ccc} \ 0 & -(w_{z}+w^{'}_{z}) & w_{y}+w^{'}_{y} \\ \ w_{z}+w^{'}_{z} & 0 & -(w_{x}+w^{'}_{x})\\ \ -(w_{y}+w^{'}_{y}) & w_{x}+w^{'}_{x} & 0 \end{array} \right] \tag{15} \end{align}
[wBRef]×=[wARef]×+[RARefwBA]×=
0 wz −wy−wz0wxwy−wx0
+
0 wz′ −wy′−wz′0wx′wy′−wx′0
=
0 wz+wz′ −(wy+wy′)−(wz+wz′)0wx+wx′wy+wy′−(wx+wx′)0
(15)
对于(15)式,是角速度向量的矩阵形式,我们可以把它重新写成向量形式(因为式(16)的左右两端的向量的矩阵形式相等,这在(15)式中已经得到,所以这两端的向量相等)
w
⃗
B
R
e
f
=
w
⃗
A
R
e
f
+
R
A
R
e
f
w
⃗
B
A
(16)
\vec{w}^{Ref}_{B}=\vec{w}^{Ref}_{A}+R^{Ref}_{A}\vec{w}^{A}_{B} \tag{16}
wBRef=wARef+RARefwBA(16)
角速度叠加性的总结
Fig. 7 角速度的可叠加性
如Fig. 7所示,Frame {B}相对于Frame {A}以角速度
w
⃗
B
A
\vec{w}^{A}_{B}
wBA旋转,Frame {A}相对于Reference Frame {Ref}以角速度
w
⃗
A
R
e
f
\vec{w}^{Ref}_{A}
wARef旋转,则Frame {B}相对于Reference Frame {Ref}的角速度为
w
⃗
B
R
e
f
=
w
⃗
A
R
e
f
+
R
A
R
e
f
w
⃗
B
A
\vec{w}^{Ref}_{B}=\vec{w}^{Ref}_{A}+R^{Ref}_{A}\vec{w}^{A}_{B}
wBRef=wARef+RARefwBA。
这不仅揭示了角速度的可叠加性。而且还告诉我们,坐标系的旋转矩阵和坐标系的角速度之间的内在联系,也就是说,我们可以通过旋转矩阵来求角速度,或者根据角速度和当前旋转矩阵,来求解旋转矩阵的导数。
写在最后
最近在读论文,重新对这个角速度的问题进行了思考,通过代数的角度来看,对角速度看的更加清晰了(个人感受:笛卡尔空间的几何总是直观的,从代数的角度去论证,严谨性得到保证,代数不会骗人)。另外,由于上述的证明和推导都是自己一步步思考和计算出来的,难免有疏漏甚至逻辑错误,如果读者发现漏洞,恳请指正,非常感谢。同时,也希望大家对这块有其它方面的见解,欢迎交流。
PS:工科中的机器人,或者导航制导等等领域都需要我们对坐标系,线速度,角速度等等有全面且深刻的认识,就自己到目前的经验来看,《理论力学》或者《机器人学》中会对这一部分进行介绍,但是由于这方面的书籍多是工科用书,所以很多东西不加严格证明,就给出来结论了,如果读者没有自己深度思考的习惯,可能就只能停留在公式表面。这里,推荐有兴趣的或者有需要的工科同学去学习解析几何及其相关课程或者教材(丘维声老师的解析几何教材写的个人感觉很不错),或许可以从中获得一个更系统清晰的知识架构。