《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)=Rsb(t)=[r1(t),r2(t),r3(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)],r1(t)r_1(t)r1(t)代表{b}系的x轴在{s}系下的表示,r2(t),r3(t)r_2(t),r_3(t)r2(t),r3(t)分别代表y和z轴。
因为ωs\omega_sωs和r1,r2,r3r_1,r_2,r_3r1,r2,r3都是{s}系下表示的向量,于是根据上面的公式:
r1˙=ωs×r1r2˙=ωs×r2r3˙=ωs×r3
\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×r1∣ωs×r2∣ωs×r3]=ω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]RR˙=[ωs×r1∣ωs×r2∣ωs×r3]=ωs×R=[ωs]R
注:
为了消除这里的叉乘运算,我们可以引入一个新的概念。我们定义[ωs][\omega_s][ωs]为向量ωs∈R3\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ω30−ω1−ω2ω10][\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
现在我们得到了,旋转矩阵RRR和角速度[ωs][\omega_s][ωs]的关系。那么,如何求ωb\omega_bωb与RRR的关系呢?
因为R∈SO(3)R\in SO(3)R∈SO(3),有如下关系式成立(读者可以自己证明):
R[ω]RT=[Rω]R[\omega]R^T=[R\omega]R[ω]RT=[Rω]
因为ωb=RsbTωs=RTωs\omega_b=R_{sb}^{T}\omega_s=R^T\omega_sωb=RsbTωs=RTωs,所以:
[ωb]=[RTωs]=RT[ωs]R=RT(R˙RT)R=RTR˙=R−1R˙\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与RRR的关系。
3. 对于角速度的理解
上文中提到的ωb\omega_bωb,不能理解为当前的运动相对于体坐标系{b}的角速度。而应该理解为,当前运动相对于一个与体坐标系{b}完全对齐的静止坐标系的角速度。
另外,值得注意,ωs\omega_sωs完全不取决于{b}系如何选择,ωb\omega_bωb也完全不取决于{s}系如何选择。