刚体转动的姿态动力学与姿态运动学
以下是常用公式及其简单描述,这些内容在航天器控制、导航等方面是通用的。从教材上摘录整理下来的,仅供大家参考,如果要学习详细内容建议翻教材。如有错误,欢迎指出。
1. 姿态动力学
- 描述角速度变化率与所受到的力矩之间的关系,由这些式子无法求出姿态角,只能推出角速度变化
- 所有变量代表本体系 b b b相对惯性系 i i i在惯性系 b b b下的表达[3] page.23,如角速度 w ≡ w i b b w\equiv w_{ib}^b w≡wibb
角动量定义为
h
=
J
ω
\mathbf h=J\mathbf \omega
h=Jω,角动量定理为
d
h
d
t
=
∂
h
∂
t
+
ω
×
h
=
J
˙
ω
+
J
ω
˙
+
ω
×
(
J
ω
)
=
M
\frac{\mathrm d\mathbf h}{\mathrm dt}=\frac{\mathrm\partial\mathbf h}{\mathrm\partial t}+\mathbf\omega\times \mathbf h =\dot J\omega+J\dot\omega+\omega\times(J\omega)=\mathbf M
dtdh=∂t∂h+ω×h=J˙ω+Jω˙+ω×(Jω)=M
如果不考虑对象转动惯量的变化,然后利用叉乘的法则也可以写作
J
ω
˙
−
h
×
ω
=
M
J\dot\omega-\mathbf h\times\omega=\mathbf M
Jω˙−h×ω=M
力矩表示的是刚体到的力矩在本体系下的表达,即
M
b
b
M_b^b
Mbb。将角速度代入
ω
=
[
ω
x
,
ω
y
,
ω
z
]
T
\omega=[\omega_x,\omega_y,\omega_z]^{\mathrm T}
ω=[ωx,ωy,ωz]T
{
h
˙
x
+
h
z
w
y
−
h
y
w
z
=
M
x
h
˙
y
+
h
x
w
z
−
h
z
w
x
=
M
y
h
˙
z
+
h
y
w
x
−
h
x
w
y
=
M
z
\left\{\begin{matrix} \dot h_x+h_zw_y-h_yw_z=M_x\\ \dot h_y+h_xw_z-h_zw_x=M_y\\ \dot h_z+h_yw_x-h_xw_y=M_z \end{matrix}\right.
⎩⎨⎧h˙x+hzwy−hywz=Mxh˙y+hxwz−hzwx=Myh˙z+hywx−hxwy=Mz
当三轴为惯量主轴时,转动惯量为对角阵
J
=
d
i
a
g
[
J
x
,
J
y
,
J
z
]
J=diag[J_x,J_y,J_z]
J=diag[Jx,Jy,Jz],则
{
J
x
w
˙
x
+
(
J
z
−
J
y
)
w
z
w
y
=
M
x
J
y
w
˙
y
+
(
J
x
−
J
z
)
w
x
w
z
=
M
y
J
z
w
˙
z
+
(
J
y
−
J
x
)
w
x
w
y
=
M
z
\left\{\begin{matrix} J_x\dot w_x+ (J_z-J_y)w_zw_y=M_x\\ J_y\dot w_y+ (J_x-J_z)w_xw_z=M_y\\ J_z\dot w_z+ (J_y-J_x)w_xw_y=M_z \end{matrix}\right.
⎩⎨⎧Jxw˙x+(Jz−Jy)wzwy=MxJyw˙y+(Jx−Jz)wxwz=MyJzw˙z+(Jy−Jx)wxwy=Mz
2. 姿态运动学
- 体现姿态与角速度之间的关系
- 按照四元数形式描述,四元数描述的是本体系 b b b相对于惯性系 i i i的姿态,也就是从惯性系 i i i旋转到本体系 b b b所需要的姿态 q i b q_{ib} qib
- 由于描述姿态的是四元数,所以微分方程左边是 q ˙ i b \dot q_{ib} q˙ib
若四元数定义为[4]
q
=
q
0
+
i
q
1
+
j
q
2
+
k
q
3
=
[
q
1
,
q
r
]
q
0
2
+
q
1
2
+
q
2
2
+
q
3
2
=
1
\begin{array}{l} {\boldsymbol{q}}=q_{0}+\bold i q_{1}+\bold j q_{2}+\bold k q_{3}=[q_1,q_\mathbf r] \\ q_{0}^{2}+q_{1}^{2}+q_{2}^{2}+q_{3}^{2}=1 \end{array}
q=q0+iq1+jq2+kq3=[q1,qr]q02+q12+q22+q32=1
姿态运动学方程为
q
˙
=
1
2
Ω
(
ω
i
b
b
)
⋅
q
\dot{{q}}=\frac{1}{2} \Omega\left(\omega_{ib}^{b}\right) \cdot {q}
q˙=21Ω(ωibb)⋅q
其中4阶反对称矩阵
Ω
(
ω
)
=
[
0
−
ω
x
−
ω
y
−
ω
z
ω
x
0
ω
z
−
ω
y
ω
y
−
ω
z
0
ω
x
ω
z
ω
y
−
ω
x
0
]
\Omega\left(\omega\right)= \left[\begin{array}{cccc} 0 & -\omega_{x} & -\omega_{y} & -\omega_{z} \\ \omega_{x} & 0 & \omega_{z} & -\omega_{y} \\ \omega_{y} & -\omega_{z} & 0 & \omega_{x} \\ \omega_{z} & \omega_{y} & -\omega_{x} & 0 \end{array}\right]
Ω(ω)=⎣⎢⎢⎡0ωxωyωz−ωx0−ωzωy−ωyωz0−ωx−ωz−ωyωx0⎦⎥⎥⎤
它代表的是体系相对于惯性系的角速度在体系下的表达,也就是陀螺仪能敏感到的数据。姿态运动学也可以写作四元数的4阶反对称矩阵乘以角速度的形式,即:
q
˙
=
1
2
q
⊗
ω
r
\dot{\boldsymbol{q}}=\frac{1}{2} \boldsymbol{q} \otimes \boldsymbol{\omega}_{\mathrm{r}}
q˙=21q⊗ωr
其中
ω
r
=
[
0
,
w
r
T
]
\boldsymbol{\omega}_{\mathrm{r}}=[0,w_r^{\mathrm T}]
ωr=[0,wrT]展开为
[
q
˙
0
q
˙
1
q
˙
2
q
˙
3
]
=
1
2
[
q
0
−
q
1
−
q
2
−
q
3
q
1
q
0
−
q
3
q
2
q
2
q
3
q
0
−
q
1
q
3
−
q
2
q
1
q
0
]
[
0
ω
x
ω
y
ω
z
]
\left[\begin{array}{l} \dot{q}_{0} \\ \dot{q}_{1} \\ \dot{q}_{2} \\ \dot{q}_{3} \end{array}\right]=\frac{1}{2}\left[\begin{array}{cccc} q_{0} & -q_{1} & -q_{2} & -q_{3} \\ q_{1} & q_{0} & -q_{3} & q_{2} \\ q_{2} & q_{3} & q_{0} & -q_{1} \\ q_{3} & -q_{2} & q_{1} & q_{0} \end{array}\right]\left[\begin{array}{c} 0 \\ \omega_{x} \\ \omega_{y} \\ \omega_{z} \end{array}\right]
⎣⎢⎢⎡q˙0q˙1q˙2q˙3⎦⎥⎥⎤=21⎣⎢⎢⎡q0q1q2q3−q1q0q3−q2−q2−q3q0q1−q3q2−q1q0⎦⎥⎥⎤⎣⎢⎢⎡0ωxωyωz⎦⎥⎥⎤
3. 姿态旋转矩阵
3.1姿态四元数转到姿态旋转矩阵
公式如下
R
i
b
(
q
i
b
)
=
(
q
0
2
−
q
r
⋅
q
r
)
I
2
+
2
q
r
q
r
T
−
2
q
0
[
q
r
×
]
=
[
q
0
2
+
q
1
2
−
q
2
2
−
q
3
2
−
2
q
0
q
3
+
2
q
1
q
2
2
q
0
q
2
+
2
q
1
q
3
2
q
0
q
3
+
2
q
1
q
2
q
0
2
−
q
1
2
+
q
2
2
−
q
3
2
−
2
q
0
q
1
+
2
q
2
q
3
−
2
q
0
q
2
+
2
q
1
q
3
2
q
0
q
1
+
2
q
2
q
3
q
0
2
−
q
1
2
−
q
2
2
+
q
3
2
]
=
[
2
(
q
0
2
+
q
1
2
)
−
1
2
(
q
1
q
2
+
q
0
q
3
)
2
(
q
1
q
3
−
q
0
q
2
)
2
(
q
1
q
2
−
q
0
q
3
)
2
(
q
0
2
+
q
2
2
)
−
1
2
(
q
2
q
3
+
q
0
q
1
)
2
(
q
1
q
3
+
q
0
q
2
)
2
(
q
2
q
3
−
q
0
q
1
)
2
(
q
0
2
+
q
3
2
)
−
1
]
\begin{aligned} \mathbf {R}_{i}^{b}(q_{ib})&\\ =&(q_0^2-q_\mathbf r\cdot q_\mathbf r ) I_2+2q_r q_r^T-2q_0 [q_r^× ]\\ =&\left[\begin{array}{ccc} q_{0}^{2}+q_{1}^{2}-q_{2}^{2}-q_{3}^{2} & -2 q_{0} q_{3}+2 q_{1} q_{2} & 2 q_{0} q_{2}+2 q_{1} q_{3} \\ 2 q_{0} q_{3}+2 q_{1} q_{2} & q_{0}^{2}-q_{1}^{2}+q_{2}^{2}-q_{3}^{2} & -2 q_{0} q_{1}+2 q_{2} q_{3} \\ -2 q_{0} q_{2}+2 q_{1} q_{3} & 2 q_{0} q_{1}+2 q_{2} q_{3} & q_{0}^{2}-q_{1}^{2}-q_{2}^{2}+q_{3}^{2} \end{array}\right] \\=& \left[\begin{array}{lll} 2\left(q_{0}^{2}+q_{1}^{2}\right)-1 & 2\left(q_{1} q_{2}+q_{0} q_{3}\right) & 2\left(q_{1} q_{3}-q_{0} q_{2}\right) \\ 2\left(q_{1} q_{2}-q_{0} q_{3}\right) & 2\left(q_{0}^{2}+q_{2}^{2}\right)-1 & 2\left(q_{2} q_{3}+q_{0} q_{1}\right) \\ 2\left(q_{1} q_{3}+q_{0} q_{2}\right) & 2\left(q_{2} q_{3}-q_{0} q_{1}\right) & 2\left(q_{0}^{2}+q_{3}^{2}\right)-1 \end{array}\right] \end{aligned}
Rib(qib)===(q02−qr⋅qr)I2+2qrqrT−2q0[qr×]⎣⎡q02+q12−q22−q322q0q3+2q1q2−2q0q2+2q1q3−2q0q3+2q1q2q02−q12+q22−q322q0q1+2q2q32q0q2+2q1q3−2q0q1+2q2q3q02−q12−q22+q32⎦⎤⎣⎡2(q02+q12)−12(q1q2−q0q3)2(q1q3+q0q2)2(q1q2+q0q3)2(q02+q22)−12(q2q3−q0q1)2(q1q3−q0q2)2(q2q3+q0q1)2(q02+q32)−1⎦⎤
其中3阶反对称矩阵
[
r
×
]
=
[
0
−
r
3
r
2
r
3
0
−
r
1
−
r
2
r
1
0
]
[r\times]=\left[\begin{array}{ccc}0&-r_3&r_2\\ r_3&0&-r_1\\ -r_2&r_1&0\end{array}\right]
[r×]=⎣⎡0r3−r2−r30r1r2−r10⎦⎤
3.2 姿态四元数转到三轴姿态角
姿态四元数转到三轴姿态角,可以先转换到姿态旋转矩阵,再转到姿态角。参考[1]第91页并作出订正,航天器3-1-2旋转的过程,从惯性系转到本体系的姿态旋转矩阵应该这样构建:
- O x i y i z i → 绕 O z i ( " 3 " ) 旋 转 ψ 角 → O x 1 y 1 z 1 Ox_iy_iz_i\rightarrow绕Oz_i("3")旋转\psi角\rightarrow Ox_1y_1z_1 Oxiyizi→绕Ozi("3")旋转ψ角→Ox1y1z1
- O x 1 y 1 z 1 → 绕 O x 1 ( " 1 " ) 旋 转 θ 角 → O x 2 y 2 z 2 Ox_1y_1z_1\rightarrow绕Ox_1("1")旋转\theta角\rightarrow Ox_2y_2z_2 Ox1y1z1→绕Ox1("1")旋转θ角→Ox2y2z2
- O x 2 y 2 z 2 → 绕 O y 2 ( " 2 " ) 旋 转 γ 角 → O x b y b z b Ox_2y_2z_2\rightarrow绕Oy_2("2")旋转\gamma角\rightarrow Ox_by_bz_b Ox2y2z2→绕Oy2("2")旋转γ角→Oxbybzb
而姿态角xyz方向俯仰
θ
\theta
θ-滚转
γ
\gamma
γ-偏航
ψ
\psi
ψ,即x方向为俯仰角,y方向为滚转角,z方向为偏航角,这个和文献[2]的本体系相对应。
按照的312(zxy)旋转的姿态旋转矩阵为
R
i
b
=
R
2
b
R
1
2
R
i
1
=
R
y
(
γ
)
R
x
(
θ
)
R
z
(
ψ
)
=
[
cos
γ
0
−
sin
γ
0
1
0
sin
γ
0
cos
γ
]
[
1
0
0
0
cos
θ
sin
θ
0
−
sin
θ
cos
θ
]
[
cos
ψ
−
sin
ψ
0
sin
ψ
sin
ψ
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
γ
]
\begin{array}{l} \mathbf R_{i}^{b}=R_2^bR_1^2R_i^1=R_y(\gamma)R_x(\theta)R_z(\psi)\\ =\left[\begin{array}{ccc} \cos \gamma & 0 & -\sin \gamma \\ 0 & 1 & 0 \\ \sin \gamma & 0 & \cos \gamma \end{array}\right]\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos \theta & \sin \theta \\ 0 & -\sin \theta & \cos \theta \end{array}\right]\left[\begin{array}{ccc} \cos \psi & -\sin \psi & 0 \\ \sin \psi & \sin \psi & 0 \\ 0 & 0 & 1 \end{array}\right] \\= {\left[\begin{array}{ccc} \cos \psi \cos \gamma+\sin \psi \sin \theta \sin \gamma & -\sin \psi \cos \gamma+\cos \psi \sin \theta \sin \gamma & -\cos \theta \sin \gamma \\ \sin \psi \cos \theta & \cos \psi \cos \theta & \sin \theta \\ \cos \psi \sin \gamma-\sin \psi \sin \theta \cos \gamma & -\sin \psi \sin \gamma-\cos \psi \sin \theta \cos \gamma & \cos \theta \cos \gamma \end{array}\right]} \end{array}
Rib=R2bR12Ri1=Ry(γ)Rx(θ)Rz(ψ)=⎣⎡cosγ0sinγ010−sinγ0cosγ⎦⎤⎣⎡1000cosθ−sinθ0sinθcosθ⎦⎤⎣⎡cosψsinψ0−sinψsinψ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γ⎦⎤
如果已知四元数,就可以得到姿态转移矩阵,相当于已知方程左边,由这个对应关系可以反解三轴姿态角
θ
=
sin
−
1
(
R
23
)
γ
=
tan
−
1
(
−
R
13
R
33
)
ψ
=
tan
−
1
(
R
21
R
22
)
\begin{array}{l} \theta=\sin ^{-1}\left(R_{23}\right) \\ \gamma=\tan^{-1}\left(-\frac{R_{13}}{R_{33}}\right) \\ \psi=\tan^{-1}\left(\frac{R_{21}}{R_{22}}\right) \end{array}
θ=sin−1(R23)γ=tan−1(−R33R13)ψ=tan−1(R22R21)
3.3 3-1-2旋转的姿态运动学
推导过程需要考虑姿态旋转矩阵的先后转动顺序,不是简单相加,如
w
=
θ
˙
i
+
γ
˙
j
+
ψ
˙
k
w=\dot\theta\mathbf i+\dot\gamma\mathbf j+\dot\psi\mathbf k
w=θ˙i+γ˙j+ψ˙k,这样是错的。正确过程是
w
i
b
≡
[
w
x
w
y
w
z
]
=
γ
˙
j
+
R
y
(
γ
)
θ
˙
i
+
R
y
(
γ
)
R
x
(
θ
)
ψ
˙
k
ω
x
=
θ
˙
cos
γ
−
ψ
˙
cos
θ
sin
γ
ω
y
=
γ
˙
+
ψ
˙
sin
θ
ω
z
=
θ
˙
sin
γ
+
ψ
˙
cos
γ
cos
θ
w_{ib}\equiv\begin{bmatrix}w_x\\w_y\\w_z\end{bmatrix}= \dot\gamma\mathbf j+R_y(\gamma)\dot\theta\mathbf i+R_y(\gamma)R_x(\theta)\dot\psi\mathbf k\\ \begin{array}{l} \omega_{x}=\dot{\theta} \cos \gamma-\dot{\psi} \cos \theta \sin \gamma \\ \omega_{y}=\dot{\gamma}+\dot{\psi} \sin \theta \\ \omega_{z}=\dot{\theta} \sin \gamma + \dot{\psi} \cos \gamma \cos \theta \end{array}
wib≡⎣⎡wxwywz⎦⎤=γ˙j+Ry(γ)θ˙i+Ry(γ)Rx(θ)ψ˙kωx=θ˙cosγ−ψ˙cosθsinγωy=γ˙+ψ˙sinθωz=θ˙sinγ+ψ˙cosγcosθ
4. 姿态旋转矩阵的姿态运动学方程
姿态旋转矩阵
R
i
b
R_i^b
Rib代表由惯性系转换到本体系。如果用姿态旋转矩阵来描述姿态,在导航算法中也是常用的,这样虽然内存占用大,但是足够精确也方便使用。这样,矩阵形式的姿态运动学方程为
d
R
i
b
d
t
=
R
i
b
[
w
i
b
b
×
]
(1)
\frac{\mathrm d R_i^b}{\mathrm d t}=R_i^b[w_{ib}^b\times] \tag 1
dtdRib=Rib[wibb×](1)
注意到角速度矢量仍然遵循坐标系变换法则,即
w
i
b
p
=
R
b
p
w
i
b
b
w_{ib}^p=R_b^pw_{ib}^b
wibp=Rbpwibb
其中p为任意坐标系。向量的叉乘矩阵遵循类似的法则[3] page.25
[
w
i
b
p
×
]
=
R
b
p
[
w
i
b
b
×
]
R
p
b
e.g
,
[
w
i
b
i
×
]
=
R
b
i
[
w
i
b
b
×
]
R
i
b
[w_{ib}^p\times]=R_b^p[w_{ib}^b\times]R_p^b\quad \text{e.g},[w_{ib}^i\times]=R_b^i[w_{ib}^b\times]R_i^b
[wibp×]=Rbp[wibb×]Rpbe.g,[wibi×]=Rbi[wibb×]Rib
文献[3]page 44(2-97)式指出,另一种矩阵形式的姿态运动学方程为
d
R
i
b
d
t
=
−
[
w
i
b
b
×
]
R
i
b
(2)
\frac{\mathrm d R_i^b}{\mathrm d t}=-[w_{ib}^b\times]R_i^b\tag 2
dtdRib=−[wibb×]Rib(2)
考虑
[
w
i
b
i
×
]
=
R
b
i
[
w
i
b
b
×
]
R
i
b
⇒
[
w
i
b
b
×
]
=
R
i
b
[
w
i
b
i
×
]
R
b
i
[w_{ib}^i\times]=R_b^i[w_{ib}^b\times]R_i^b⇒[w_{ib}^b\times]=R_i^b[w_{ib}^i\times]R_b^i
[wibi×]=Rbi[wibb×]Rib⇒[wibb×]=Rib[wibi×]Rbi
代入上式并化简可得
d
R
i
b
d
t
=
−
[
w
i
b
b
×
]
R
i
b
=
−
R
i
b
[
w
i
b
i
×
]
R
b
i
⋅
R
i
b
=
R
i
b
[
w
b
i
i
×
]
(3)
\frac{\mathrm d R_i^b}{\mathrm d t}=-[w_{ib}^b\times]R_i^b=-R_i^b[w_{ib}^i\times]R_b^i\cdot R_i^b=R_i^b[w_{bi}^i\times]\tag 3
dtdRib=−[wibb×]Rib=−Rib[wibi×]Rbi⋅Rib=Rib[wbii×](3)
于是一共有3中形式的表达,其中第一种是最常用的。
5. ref
[1]. 周军, 刘莹莹. 航天器姿态与轨道控制原理[M]. 西安: 西北工业大学出版社, 2016.
[2]. 李新国, 方群. 有翼导弹飞行动力学[M]. 西北工业大学出版社, 2005.
[3]. Noureldin A, Karamat T B, Georgy J. Fundamentals of inertial navigation, satellite-based positioning and their integration[M]. 2013: 1-313.
[4]. 方群,李新国,朱战霞等[M]. 西北工业大学出版社,2015. 章节:6.5.4