下 图 中 : 半 径 a 和 高 度 h 固 定 \color{red}{下图中:半径a和高度h固定} 下图中:半径a和高度h固定
从结果可以看到,矩阵形式的导数表示可以写成矩阵形式 ω × r \omega \times r ω×r,左侧为反对称矩阵w
考虑两个坐标系,一个静止的坐标系,惯性坐标系i系,另外一个是旋转的坐标系即载体坐标系b系.
其中,关于旋转矩阵 R I B R_{IB} RIB的导数 R I B ˙ \dot{R_{IB}} RIB˙可看第一讲的内容.
结果:一个有趣的现象是,物体在惯性系下的速度 r ˙ \dot{r} r˙并不是直接等于物体在b系下的速度乘以旋转矩阵 R I B ∗ v B R_{IB}*v_{B} RIB∗vB,后面还多了一项 − ω × r I -\omega \times r_I −ω×rI,这就是哥氏加速度带来的影响.
补充:
R ˙ I B r B = ω × r I \dot{R}_{IB}r_B=\omega \times r_I R˙IBrB=ω×rI的详细证明
(1)用到了性质 R [ a ] × = [ R a ] × R R[a]_\times=[Ra]_\times R R[a]×=[Ra]×R
(2)用到了性质 R ˙ = R ω \dot{R}=R\omega R˙=Rω
R ˙ I B r B = lim Δ t → 0 R I B exp ( [ ω B B ′ Δ t ] ^ ) r B − R I B r B Δ t = lim Δ t → 0 R I B ( I + [ ω B B ′ Δ t ] ^ ) r B − R I B r B Δ t = lim Δ t → 0 R I B [ ω B B ′ Δ t ] ^ r B Δ t = lim Δ t → 0 − R I B r B ^ ( ω B B ′ Δ t ) Δ t = − R I B r B ^ ( ω B B ′ ) = R I B ( ω B B ′ ) ^ r B = [ R I B ω B B ′ ] × R I B r B = ω × r I \begin{aligned} \dot{R}_{IB}r_B &= \lim_{\Delta t \to 0} \frac{R_{IB} \exp([\omega_{BB'} \Delta t]\hat{~})r_B-R_{IB}r_B}{\Delta t} \\ &= \lim_{\Delta t \to 0} \frac{R_{IB} (I+[\omega_{BB'}\Delta t]\hat{~}) r_B-R_{IB}r_B}{\Delta t} \\ &= \lim_{\Delta t \to 0} \frac{R_{IB} [\omega_{BB'}\Delta t]\hat{~} r_B}{\Delta t} \\ &= \lim_{\Delta t \to 0} \frac{-R_{IB} r_B\hat{~} (\omega_{BB'}\Delta t)}{\Delta t} \\ &= {-R_{IB} r_B\hat{~} (\omega_{BB'})} \\ &= R_{IB}(\omega_{BB'})\hat{~}r_B \\ &=[R_{IB}\omega_{BB'}]_\times R_{IB}r_B \\ &=\omega \times r_I \end{aligned} R˙IBrB=Δt→0limΔtRIBexp([ωBB′Δt] ^)rB−RIBrB=Δt→0limΔtRIB(I+[ωBB′Δt] ^)rB−RIBrB=Δt→0limΔtRIB[ωBB′Δt] ^rB=Δt→0limΔt−RIBrB ^(ωBB′Δt)=−RIBrB ^(ωBB′)=RIB(ωBB′) ^rB=[RIBωBB′]×RIBrB=ω×rI
关于速度的求导部分的补充
因为有 R I B ˙ = R I B [ ω b ] × = [ R I B ω b ] × R I B \dot{R_{IB}}=R_{IB}[\omega_b]_\times =[R_{IB}\omega_b]_\times R_{IB} RIB˙=RIB[ωb]×=[RIBωb]×RIB(根据性质-第一讲)
所以 R I B ˙ v b = R I B [ ω b ] × v b = [ R I B ω b ] × R I B v b = ω × v \dot{R_{IB}}v_b=R_{IB}[\omega_b]_\times v_b=[R_{IB}\omega_b]_\times R_{IB} v_{b}=\omega \times v RIB˙vb=RIB[ωb]×vb=[RIBωb]×RIBvb=ω×v
R I B ˙ ω b = R I B [ ω b ] × ω b = R I B ω b ^ ω b = 0 \dot{R_{IB}}\omega_b=R_{IB}[\omega_b]_\times \omega_b=R_{IB} \omega_b \hat{~}\omega_b=0 RIB˙ωb=RIB[ωb]×ωb=RIBωb ^ωb=0
结果:结果表明,物体在惯性系的加速度a_i并不直接等于b系下的加速度乘以对应的旋转矩阵,而是要加上后面几项,其中,哥氏力是成对出现的,另外:由于w_{ie}为常量,所以 ω \omega ω求导后的 ω ˙ \dot{\omega} ω˙为0,所以一般欧拉力为0?.
主要利用科氏力来计算角速度
关于姿态q的离散积分:
∵ q ˙ w b k = q w b k ⊗ [ 0 , 1 2 ω ] T \begin{aligned} \because \dot{q}_{wb_k}=q_{wb_k} \otimes [0,\frac{1}{2}\omega]^T \end{aligned} ∵q˙wbk=qwbk⊗[0,21ω]T
∴ q w b k + 1 = q w b k + q ˙ w b k δ t = q w b k + q w b k ⊗ [ 0 , 1 2 ω ] T = q w b k ⊗ [ 1 , 1 2 ω ] T \begin{aligned} \therefore q_{wb_{k+1}}&=q_{wb_k}+\dot{q}_{wb_k} \delta t \\ &= q_{wb_k}+q_{wb_k} \otimes [0,\frac{1}{2}\omega]^T \\ &=q_{wb_k} \otimes [1,\frac{1}{2}\omega]^T \end{aligned} ∴qwbk+1=qwbk+q˙wbkδt=qwbk+qwbk⊗[0,21ω]T=qwbk⊗[1,21ω]T
注 意 欧 拉 角 ( 3 维 向 量 ) 形 式 的 旋 转 积 分 : 需 要 先 使 用 旋 转 矩 阵 将 b 系 下 的 角 速 度 转 换 为 世 界 坐 标 系 的 欧 拉 角 速 度 \color{red}{注意欧拉角(3维向量)形式的旋转积分:需要先使用旋转矩阵将b系下的角速度转换为世界坐标系的欧拉角速度} 注意欧拉角(3维向量)形式的旋转积分:需要先使用旋转矩阵将b系下的角速度转换为世界坐标系的欧拉角速度
上面的关于欧拉角旋转的描述是基于ZYX321顺序的,其对应的坐标系是前右下,对应的导航坐标系是北东地,常用于无人机.下面用另外一种欧拉角顺序推导一遍,该顺序更常用于地面无人车.
一个向量的方向(姿态)我们可以用他在参考坐标系(地理坐标系)各个轴向的夹角的余弦来表示(及在各个轴的投影)。
类似的 一个坐标系 可以看成是3个向量组成,所以三个向量分别在坐标轴上的投影可以用来表示一个坐标系与参考坐标系的关系。这总共9个方向余弦组成了一个三阶矩阵,其对应方式如下图。
C b n = [ c 11 c 12 c 13 c 21 c 22 c 23 c 11 c 12 c 13 ] \quad C_b^n= \begin{bmatrix} c_{11} & c_{12} &c_{13} \\ c_{21} & c_{22} &c_{23} \\ c_{11} & c_{12} &c_{13} \end{bmatrix} \quad Cbn=⎣⎡c11c21c11c12c22c12c13c23c13⎦⎤
其中,第 i 行、 j 列的元素表示参考坐标系 i 轴和姿态坐标系 j 轴夹角的余弦。事实上方向余弦和欧拉角没有本质区别,因为方向余弦实际上就是用欧拉角表示的。
一个二维的坐标变换如下:
点F为固定点,在坐标系1下的表示为 F ( r x 1 , r y 1 ) F(r_{x1},r_{y1}) F(rx1,ry1),在坐标系2下为 F 2 ( r x 2 , r y 2 ) F_{2}(r_{x2},r_{y2}) F2(rx2,ry2)
由图可知,注意观察使用图中两个红色的三角形
r x 2 = r x 1 ∗ cos α + r y 1 ∗ sin α r y 2 = r x 1 ∗ ( − sin α ) + r y 1 ∗ cos α \begin{aligned} r_{x2}&=r_{x1}*\cos \alpha+ r_{y1}*\sin \alpha \\ r_{y2}&=r_{x1}*(-\sin \alpha)+r_{y1}*\cos \alpha \end{aligned} rx2ry2=rx1∗cosα+ry1∗sinα=rx1∗(−sinα)+ry1∗cosα
推广到三维的情况下,可看作是绕Z轴逆时针旋转,并写成矩阵形式:
[ r x 2 r y 2 r z 2 ] = [ cos α sin α 0 − sin α cos α 0 0 0 1 ] [ r x 1 r y 1 r z 1 ] \quad \begin{bmatrix} r_{x2} \\ r_{y2} \\ r_{z2} \end{bmatrix}= \begin{bmatrix} \cos \alpha & \sin \alpha &0 \\ -\sin \alpha & \cos \alpha &0 \\ 0 & 0 &1 \end{bmatrix} \begin{bmatrix} r_{x1} \\ r_{y1} \\ r_{z1} \end{bmatrix} \quad ⎣⎡rx2ry2rz2⎦⎤=⎣⎡cosα−sinα0sinαcosα0001⎦⎤⎣⎡rx1ry1rz1⎦⎤
由上面的例子,可推理余弦矩阵各个元素的意义
假设我们现在有一个东北天坐标系和一个载体坐标系,现需要将东北天坐标系经过3次旋转,使得最终得到的坐标系与载体坐标系重合。
在此之前,需要做出一些规定
- 旋转的正方向为:从旋转轴看的逆时针方向
- 旋转的顺序为:Z-X-Y
- 对应的欧拉角:Yaw-Pitch-Roll
得到旋转矩阵 C n 1 C_{n}^{1} Cn1
C n 1 = [ cos ψ sin ψ 0 − sin ψ cos ψ 0 0 0 1 ] \quad C_{n}^{1}= \begin{bmatrix} \cos \psi & \sin \psi &0 \\ -\sin \psi & \cos \psi &0 \\ 0 & 0 &1 \end{bmatrix} \quad Cn1=⎣⎡cosψ−sinψ0sinψcosψ0001⎦⎤
得到旋转矩阵 C 1 2 C_{1}^{2} C12
C 1 2 = [ 1 0 0 0 cos θ sin θ 0 − sin θ cos θ ] \quad C_{1}^{2}= \begin{bmatrix} 1 & 0 &0 \\ 0 &\cos \theta & \sin \theta \\ 0 &-\sin \theta & \cos \theta \end{bmatrix} \quad C12=⎣⎡1000cosθ−sinθ0sinθcosθ⎦⎤
得到旋转矩阵 C 2 3 C_{2}^{3} C23
C 2 3 = [ cos ϕ 0 − sin ϕ 0 1 0 sin ϕ 0 cos ϕ ] \quad C_{2}^{3}= \begin{bmatrix} \cos \phi & 0 &-\sin \phi \\ 0 & 1& 0 \\ \sin \phi & 0& \cos \phi \end{bmatrix} \quad C23=⎣⎡cosϕ0sinϕ010−sinϕ0cosϕ⎦⎤
C n b = C 2 3 C 1 2 C n 1 = [ cos ϕ 0 − sin ϕ 0 1 0 sin ϕ 0 cos ϕ ] [ 1 0 0 0 cos θ sin θ 0 − sin θ cos θ ] [ cos ψ sin ψ 0 − sin ψ cos ψ 0 0 0 1 ] = [ cos ψ cos ϕ − sin ψ sin θ sin ϕ sin ψ cos ϕ + cos ψ sin θ sin ϕ − cos θ sin ϕ − sin ψ cos θ cos ψ cos θ sin θ cos ψ sin ϕ + sin ψ sin θ cos ϕ sin ψ sin ϕ − cos ψ sin θ cos ϕ cos θ cos ϕ ] = [ c 11 c 12 c 13 c 21 c 22 c 23 c 11 c 12 c 13 ] \begin{aligned} C_{n}^{b}=&C_{2}^{3}C_{1}^{2}C_{n}^{1} \\ =& \begin{bmatrix} \cos \phi & 0 &-\sin \phi \\ 0 & 1& 0 \\ \sin \phi & 0& \cos \phi \end{bmatrix} \begin{bmatrix} 1 & 0 &0 \\ 0 &\cos \theta & \sin \theta \\ 0 &-\sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} \cos \psi & \sin \psi &0 \\ -\sin \psi & \cos \psi &0 \\ 0 & 0 &1 \end{bmatrix} \\ =& \begin{bmatrix} \cos \psi \cos \phi -\sin \psi \sin \theta \sin \phi & \sin \psi \cos \phi+\cos \psi \sin \theta \sin \phi & -\cos \theta \sin \phi \\ -\sin \psi \cos \theta & \cos \psi \cos \theta & \sin \theta \\ \cos \psi \sin \phi+ \sin \psi \sin \theta \cos \phi & \sin \psi \sin \phi- \cos \psi \sin \theta \cos \phi & \cos \theta \cos \phi \end{bmatrix} \\ = & \begin{bmatrix} c_{11} & c_{12} &c_{13} \\ c_{21} & c_{22} &c_{23} \\ c_{11} & c_{12} &c_{13} \end{bmatrix} \end{aligned} Cnb====C23C12Cn1⎣⎡cosϕ0sinϕ010−sinϕ0cosϕ⎦⎤⎣⎡1000cosθ−sinθ0sinθcosθ⎦⎤⎣⎡cosψ−sinψ0sinψcosψ0001⎦⎤⎣⎡cosψcosϕ−sinψsinθsinϕ−sinψcosθcosψsinϕ+sinψsinθcosϕsinψcosϕ+cosψsinθsinϕcosψcosθsinψsinϕ−cosψsinθcosϕ−cosθsinϕsinθcosθcosϕ⎦⎤⎣⎡c11c21c11c12c22c12c13c23c13⎦⎤
上面的方向余弦矩阵 C n b C_n^b Cnb描述了将一个点\向量从一个坐标系转换到另一个坐标系的变换.
∵ \because ∵欧拉角形式积分: ϑ w b ′ = ϑ w b ′ + d ϑ d t Δ t \vartheta_{wb'}=\vartheta_{wb'}+ \frac{d \vartheta}{dt} \Delta t ϑwb′=ϑwb′+dtdϑΔt.用到了欧拉角的微分形式
∴ \therefore ∴需要求 d ϑ d t \frac{d \vartheta}{dt} dtdϑ
其中:
(1) ϑ = [ θ p i t c h , Φ r o l l , ψ y a w ] T \vartheta=[\theta_{pitch},\Phi_{roll},\psi_{yaw}]^T ϑ=[θpitch,Φroll,ψyaw]T表示在导航坐标系下的欧拉角速度
(2) ω \omega ω表示在载体坐标系b系下的三个角速度
求:利用 ω \omega ω表示出导航坐标系下的欧拉角微分 d ϑ d t \frac{d \vartheta}{dt} dtdϑ
求解:
以下部分参考来自:<欧拉角微分方程推导>
- 假设已经完成绕三个轴的旋转,则最后绕Y轴的角速度在载体坐标系和导航坐标系都是一样的,所以有如下公式:
ω b ( r o l l ) = [ 0 d r o l l d t 0 ] \begin{aligned} \omega_b(roll)=\begin{bmatrix} 0\\ \frac{d roll}{dt} \\ 0 \end{bmatrix} \\ \end{aligned} ωb(roll)=⎣⎡0dtdroll0⎦⎤- 假设已经完成了前两组旋转,最后一组旋转没有完成,如果接着完成最后一步旋转,则和第一步一样,绕X轴的角速度在两个坐标系下是一样的,则有如下公式:
ω b ( p i t c h ) = C 2 3 [ d p i t c h d t 0 0 ] \begin{aligned} \omega_b(pitch)=C_2^{3}\begin{bmatrix} \frac{d pitch}{dt}\\ 0 \\ 0 \end{bmatrix} \end{aligned} ωb(pitch)=C23⎣⎡dtdpitch00⎦⎤- 分析和第二步类似。假设已经完成了第一组旋转,最后两组旋转没有完成,如果接着完成最后两组旋转,则绕ZZZ轴的角速度在两个坐标系下是一样的,则有如下公式:
ω b ( y a w ) = C 2 3 C 1 2 [ 0 0 d y a w d t ] \begin{aligned} \omega_b(yaw)=C_2^{3}C_1^{2}\begin{bmatrix} 0\\ 0 \\ \frac{d yaw}{dt} \end{bmatrix} \end{aligned} ωb(yaw)=C23C12⎣⎡00dtdyaw⎦⎤
通过对三次旋转的理解,可以得出,载体坐标系的三轴角速度 ω \omega ω可以如下表示:
ω b = ω b ( y a w ) + ω b ( p i t c h ) + ω b ( r o l l ) = C 2 3 C 1 2 [ 0 0 d y a w d t ] + C 2 3 [ d p i t c h d t 0 0 ] + [ 0 d r o l l d t 0 ] = [ cos ϕ 0 − sin ϕ cos θ 0 1 0 sin ϕ 0 cos θ cos ϕ ] ⋅ [ d p i t c h d t d r o l l d t d y a w d t ] = [ cos ϕ 0 − sin ϕ cos θ 0 1 0 sin ϕ 0 cos θ cos ϕ ] ⋅ d ϑ d t \begin{aligned} \omega_b&=\omega_b(yaw)+\omega_b(pitch)+\omega_b(roll) \\ &=C_2^{3}C_1^{2}\begin{bmatrix} 0\\ 0 \\ \frac{d yaw}{dt} \end{bmatrix}+C_2^{3}\begin{bmatrix} \frac{d pitch}{dt}\\ 0 \\ 0 \end{bmatrix}+\begin{bmatrix} 0\\ \frac{d roll}{dt} \\ 0 \end{bmatrix} \\ &=\begin{bmatrix} \cos \phi & 0 & -\sin \phi \cos \theta \\ 0 & 1 & 0 \\ \sin \phi & 0 & \cos \theta \cos \phi \end{bmatrix} \cdot \begin{bmatrix} \frac{d pitch}{dt} \\ \frac{d roll}{dt} \\ \frac{d yaw}{dt} \end{bmatrix} \\ &=\begin{bmatrix} \cos \phi & 0 & -\sin \phi \cos \theta \\ 0 & 1 & 0 \\ \sin \phi & 0 & \cos \theta \cos \phi \end{bmatrix} \cdot \frac{d \vartheta}{dt} \end{aligned} ωb=ωb(yaw)+ωb(pitch)+ωb(roll)=C23C12⎣⎡00dtdyaw⎦⎤+C23⎣⎡dtdpitch00⎦⎤+⎣⎡0dtdroll0⎦⎤=⎣⎡cosϕ0sinϕ010−sinϕcosθ0cosθcosϕ⎦⎤⋅⎣⎡dtdpitchdtdrolldtdyaw⎦⎤=⎣⎡cosϕ0sinϕ010−sinϕcosθ0cosθcosϕ⎦⎤⋅dtdϑ
于是,通过对矩阵求逆,可求出 d ϑ d t \frac{d \vartheta}{dt} dtdϑ
d ϑ d t = [ d p i t c h d t d r o l l d t d y a w d t ] = [ cos ϕ 0 sin ϕ sin θ sin ϕ / cos θ 1 − sin θ cos ϕ / cos θ − sin ϕ / cos θ 0 cos ϕ / cos θ ] ⋅ ω b \begin{aligned} \frac{d \vartheta}{dt}= \begin{bmatrix} \frac{d pitch}{dt} \\ \frac{d roll}{dt} \\ \frac{d yaw}{dt} \end{bmatrix} = \begin{bmatrix} \cos \phi & 0 & \sin \phi \\ \sin \theta \sin \phi / \cos \theta & 1 & -\sin \theta \cos \phi / \cos \theta \\ -\sin \phi/ \cos \theta & 0 & \cos \phi /\cos \theta \end{bmatrix} \cdot \omega_b \end{aligned} dtdϑ=⎣⎡dtdpitchdtdrolldtdyaw⎦⎤=⎣⎡cosϕsinθsinϕ/cosθ−sinϕ/cosθ010sinϕ−sinθcosϕ/cosθcosϕ/cosθ⎦⎤⋅ωb
另外的,还可以参照第一讲的旋转矩阵R的导数 R ˙ = R w × \dot{R}=Rw_\times R˙=Rw×,具体参照下面资料<方法二>
这部分参考资料:
(1)<方法一:分步计算偏导:欧拉角微分方程推导>
(2)<方法二:直接对旋转矩阵求偏导:欧拉角微分方程的推导>