《Modern Robotics》阅读笔记3——刚体的运动(三)
这篇文章主要讨论了角速度和旋转矩阵的表示方法。
1. 角速度定义
这幅图的左图中,坐标系
{
x
^
,
y
^
,
z
^
}
\{\hat{x},\hat{y},\hat{z}\}
{x^,y^,z^}绕着
ω
^
\hat{\omega}
ω^旋转,经过
Δ
t
\Delta{t}
Δt的时间,旋转了
Δ
θ
\Delta{\theta}
Δθ的角度。
假设
Δ
t
\Delta{t}
Δt无限逼近于0,我们定义
θ
˙
=
Δ
θ
Δ
t
\dot{\theta}=\frac{\Delta{\theta}}{\Delta{t}}
θ˙=ΔtΔθ为旋转的速率,结合旋转的方向
ω
^
\hat{\omega}
ω^,我们就可以定义角速度为:
ω
=
ω
^
θ
˙
\omega = \hat{\omega}\dot{\theta}
ω=ω^θ˙
这幅图的右图,我们可以得到
x
^
,
y
^
,
z
^
\hat{x},\hat{y},\hat{z}
x^,y^,z^轴方向上的角速度:
x
^
˙
=
ω
×
x
^
y
^
˙
=
ω
×
y
^
z
^
˙
=
ω
×
z
^
\begin{matrix} \dot{\hat{x}} = \omega \times \hat{x} \\ \\ \dot{\hat{y}} = \omega \times \hat{y} \\ \\ \dot{\hat{z}} = \omega \times \hat{z} \end{matrix}
x^˙=ω×x^y^˙=ω×y^z^˙=ω×z^
2. 角速度与旋转矩阵的关系
到目前为止,我们并没有指定 ω ^ \hat{\omega} ω^向量是在哪个坐标系下表示的,接下来我们要在具体的坐标系表示下讨论这件事了。
假设我们有一个固定坐标系{s}和一个体坐标系{b},旋转矩阵
R
(
t
)
R(t)
R(t)表示{b}系在{s}系下的姿态(这里主要是强调旋转矩阵是变化的),旋转方向
ω
^
\hat{\omega}
ω^在{s}系下的表示为
ω
^
s
\hat{\omega}_s
ω^s。
其中,
R
(
t
)
=
R
s
b
(
t
)
=
[
r
1
(
t
)
,
r
2
(
t
)
,
r
3
(
t
)
]
R(t)=R_{sb}(t)=[r_1(t),r_2(t),r_3(t)]
R(t)=Rsb(t)=[r1(t),r2(t),r3(t)],
r
1
(
t
)
r_1(t)
r1(t)代表{b}系的x轴在{s}系下的表示,
r
2
(
t
)
,
r
3
(
t
)
r_2(t),r_3(t)
r2(t),r3(t)分别代表y和z轴。
因为
ω
s
\omega_s
ωs和
r
1
,
r
2
,
r
3
r_1,r_2,r_3
r1,r2,r3都是{s}系下表示的向量,于是根据上面的公式:
r
1
˙
=
ω
s
×
r
1
r
2
˙
=
ω
s
×
r
2
r
3
˙
=
ω
s
×
r
3
\begin{matrix} \dot{r_1} = \omega_s \times r_1 \\ \\ \dot{r_2} = \omega_s \times r_2 \\ \\ \dot{r_3} = \omega_s \times r_3 \end{matrix}
r1˙=ωs×r1r2˙=ωs×r2r3˙=ωs×r3
所以,旋转矩阵的微分形式就可以表达为:
R
˙
=
[
ω
s
×
r
1
∣
ω
s
×
r
2
∣
ω
s
×
r
3
]
=
ω
s
×
R
=
[
ω
s
]
R
\dot{R}=[ \omega_s \times r_1 | \omega_s \times r_2 | \omega_s \times r_3 ]=\omega_s \times R=[\omega_s]R
R˙=[ωs×r1∣ωs×r2∣ωs×r3]=ωs×R=[ωs]R
注:
为了消除这里的叉乘运算,我们可以引入一个新的概念。我们定义
[
ω
s
]
[\omega_s]
[ωs]为向量
ω
s
∈
R
3
\omega_s \in \mathbb{R^3}
ωs∈R3的
3
×
3
的
反
对
称
矩
阵
,
则
有
3\times 3的反对称矩阵,则有
3×3的反对称矩阵,则有
ω
×
R
=
[
ω
s
]
R
\omega \times R = [\omega_s]R
ω×R=[ωs]R成立。
当
ω
=
[
ω
1
,
ω
2
,
ω
3
]
\omega=[\omega_1,\omega_2,\omega_3]
ω=[ω1,ω2,ω3]时,
[
ω
]
=
[
0
−
ω
3
ω
2
ω
3
0
−
ω
1
−
ω
2
ω
1
0
]
[\omega]=\left[ \begin{matrix} 0 & -\omega_3 & \omega_2 \\ \omega_3 & 0 & -\omega_1 \\ -\omega_2 & \omega_1 & 0 \end{matrix} \right]
[ω]=⎣⎡0ω3−ω2−ω30ω1ω2−ω10⎦⎤
回到正题
所以,很显然:
[
ω
s
]
=
R
˙
R
−
1
[\omega_s]=\dot{R}R^{-1}
[ωs]=R˙R−1
现在我们得到了,旋转矩阵 R R R和角速度 [ ω s ] [\omega_s] [ωs]的关系。那么,如何求 ω b \omega_b ωb与 R R R的关系呢?
因为
R
∈
S
O
(
3
)
R\in SO(3)
R∈SO(3),有如下关系式成立(读者可以自己证明):
R
[
ω
]
R
T
=
[
R
ω
]
R[\omega]R^T=[R\omega]
R[ω]RT=[Rω]
因为
ω
b
=
R
s
b
T
ω
s
=
R
T
ω
s
\omega_b=R_{sb}^{T}\omega_s=R^T\omega_s
ωb=RsbTωs=RTωs,所以:
[
ω
b
]
=
[
R
T
ω
s
]
=
R
T
[
ω
s
]
R
=
R
T
(
R
˙
R
T
)
R
=
R
T
R
˙
=
R
−
1
R
˙
\begin{aligned}\left[\omega_{b}\right] &=[R^{T} \omega_{s}] \\ &=R^{T}\left[\omega_{s}\right] R \\ &=R^{T}(\dot{R} R^{T}) R \\ &=R^{T} \dot{R}=R^{-1} \dot{R} \end{aligned}
[ωb]=[RTωs]=RT[ωs]R=RT(R˙RT)R=RTR˙=R−1R˙
于是,我们就得到了 ω b \omega_b ωb与 R R R的关系。
3. 对于角速度的理解
上文中提到的 ω b \omega_b ωb,不能理解为当前的运动相对于体坐标系{b}的角速度。而应该理解为,当前运动相对于一个与体坐标系{b}完全对齐的静止坐标系的角速度。
另外,值得注意, ω s \omega_s ωs完全不取决于{b}系如何选择, ω b \omega_b ωb也完全不取决于{s}系如何选择。