攻角、侧滑角、倾侧角与欧拉角的关系

攻角、侧滑角、倾侧角与欧拉角的关系

摘要 攻角与俯仰角对应,侧滑角与偏航角对应,倾侧角与横滚角对应,但它们并不完全一样。攻角、侧滑角、倾侧角好像没有统一的名字,本文为了方便起见称它们为气动角。欧拉角定义在世界坐标系上,气动角定义在速度坐标系上。除了坐标系定义的区别以外还有细节上的不同,假如世界系与速度系重合,两者也并不完全一样。

欧拉角和气动角定义

关于3个坐标轴的方向,本文使用传统的坐标系定义,也就是xyz轴分别朝后右上,但航空航天相关的专业书中在讲气动角时,为了让x轴与速度向量重合,用的坐标系是xyz轴分别朝前上右,甚至还有用前右下的,但好在都是右手系。书上在讲原理时为了能解释更清楚方便采用了x轴朝前的定义,但在写程序时,常见的旋转矩阵转欧拉角的代码又是用的传统坐标系定义x轴朝后,我因为要写程序所以本文统一采用传统定义。 先说欧拉角的定义。欧拉角有12种,也就是说同样是描述同一个姿态,四元数和旋转矩阵都是唯一的(四元数默认取旋转角<180°那个),但它的横滚角可能既是10°也是11°又是12°。本文使用ZYX转序的欧拉角。

!以下内容待核对↓

横滚角

ϕ

\phi

ϕ 定义为本体系x轴所在铅垂面和本体系纵向对称面之间的夹角,沿x轴看去逆时针为正,也就是左倾为正。俯仰角

θ

\theta

θ 定义为本体系x轴与世界系水平面(XOY平面)之间的夹角,沿y轴看去逆时针为正,也就是抬头为正。偏航角

ψ

\psi

ψ 定义为本体系x轴在世界系水平面上的投影与世界系x轴之间夹角,沿z轴看去逆时针为正,也就是左偏为正。

再说气动角的定义,这里要引入跟速度相关的两个坐标系。半速度系和速度系的x轴都与飞行器速度方向相反,两个系的z轴分别位于世界系的铅垂面内朝上和本体系的纵向对称面内朝上,y轴都朝右。当飞行器速度方向始终朝前保持不变时,半速度系与世界系重合(只看方向不看原点坐标)。

攻角

α

\alpha

α 定义为速度方向在本体系纵向对称面(XOZ平面)上的投影与速度方向之间的夹角;侧滑角

β

\beta

β 定义为速度方向与本体系纵向对称面之间的夹角;倾侧角

σ

\sigma

σ 定义为半速度系和速度系的z轴之间的夹角,又称为速度滚转角。有些场景还有总攻角的概念,总攻角定义为本体系和速度系的两个x轴之间的夹角,两个x轴所在的平面称作总攻角平面。

!以上内容待核对↑

只从定义上难以看出欧拉角和气动角的区别,举个例子,当横滚角左偏90°的时候,此时飞机再抬头

α

\alpha

α,则此时的攻角就是

α

\alpha

α, 但因为机头仍然在水平面上,所以俯仰角仍然是0°。另一方面,侧滑角和和俯仰角都是向量和平面的夹角,而攻角和偏航角都有向量到平面的投影,只是向量和平面各不同。

欧拉角/气动角和旋转矩阵的转换

下面列出的公式都是主流的通用公式,要遵循两个条件:xyz轴分别朝后右上,以及欧拉角为ZYX转序。 欧拉角转旋转矩阵公式如下

R

=

R

z

R

y

R

x

=

[

cos

y

sin

y

0

sin

y

cos

y

0

0

0

1

]

[

cos

p

0

sin

p

0

1

0

sin

p

0

cos

p

]

[

1

0

0

0

cos

r

sin

r

0

sin

r

cos

r

]

=

[

cos

α

cos

β

sin

α

sin

σ

cos

β

sin

β

cos

σ

sin

α

cos

β

cos

σ

+

sin

β

sin

σ

sin

β

cos

α

sin

α

sin

β

sin

σ

+

cos

β

cos

σ

sin

α

sin

β

cos

σ

sin

σ

cos

β

sin

α

sin

σ

cos

α

cos

α

cos

σ

]

R=R_zR_yR_x=\begin{bmatrix} \cos y & -\sin y & 0 \\ \sin y & \cos y & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} \cos p & 0 & \sin p \\ 0 & 1 & 0 \\ -\sin p & 0 & \cos p \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos r & -\sin r \\ 0 & \sin r & \cos r \\ \end{bmatrix} \\ =\begin{bmatrix} \cos\alpha\cos\beta&\sin\alpha\sin\sigma\cos\beta-\sin\beta\cos\sigma&\sin\alpha\cos\beta\cos\sigma+\sin\beta\sin\sigma\\ \sin\beta\cos\alpha&\sin\alpha\sin\beta\sin\sigma+\cos\beta\cos\sigma&\sin\alpha\sin\beta\cos\sigma-\sin\sigma\cos\beta\\ -\sin\alpha&\sin\sigma\cos\alpha&\cos\alpha\cos\sigma\end{bmatrix}

R=Rz​Ry​Rx​=

​cosysiny0​−sinycosy0​001​

​cosp0−sinp​010​sinp0cosp​

​100​0cosrsinr​0−sinrcosr​

​=

​cosαcosβsinβcosα−sinα​sinαsinσcosβ−sinβcosσsinαsinβsinσ+cosβcosσsinσcosα​sinαcosβcosσ+sinβsinσsinαsinβcosσ−sinσcosβcosαcosσ​

​ 气动角转旋转矩阵公式如下

R

=

R

x

R

z

R

y

=

[

1

0

0

0

cos

b

sin

b

0

sin

b

cos

b

]

[

cos

s

,

sin

s

0

sin

s

,

cos

s

0

0

0

1

]

[

cos

a

0

sin

a

0

1

0

sin

a

0

cos

a

]

=

[

cos

α

cos

β

sin

β

sin

α

cos

β

sin

α

sin

σ

+

sin

β

cos

α

cos

σ

cos

β

cos

σ

sin

α

sin

β

cos

σ

sin

σ

cos

α

sin

α

cos

(

σ

)

+

sin

β

sin

σ

cos

α

sin

σ

cos

β

sin

α

sin

β

sin

σ

+

cos

α

cos

σ

]

R=R_xR_zR_y=\begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos b & -\sin b \\ 0 & \sin b & \cos b \\ \end{bmatrix} \begin{bmatrix} \cos s, & -\sin s & 0 \\ \sin s, & \cos s & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} \cos a & 0 & \sin a \\ 0 & 1 & 0 \\ -\sin a & 0 & \cos a \\ \end{bmatrix} \\ =\begin{bmatrix} \cos\alpha\cos\beta&-\sin\beta&\sin\alpha\cos\beta\\ \sin\alpha\sin\sigma+\sin\beta\cos\alpha \cos\sigma&\cos\beta\cos\sigma&\sin\alpha\sin\beta\cos\sigma-\sin\sigma\cos\alpha\\ -\sin\alpha\cos{\left(\sigma \right)}+\sin\beta\sin\sigma\cos\alpha&\sin\sigma\cos\beta&\sin\alpha\sin\beta\sin\sigma+\cos\alpha\cos\sigma \end{bmatrix}

R=Rx​Rz​Ry​=

​100​0cosbsinb​0−sinbcosb​

​coss,sins,0​−sinscoss0​001​

​cosa0−sina​010​sina0cosa​

​=

​cosαcosβsinαsinσ+sinβcosαcosσ−sinαcos(σ)+sinβsinσcosα​−sinβcosβcosσsinσcosβ​sinαcosβsinαsinβcosσ−sinσcosαsinαsinβsinσ+cosαcosσ​

​ 已知本体系到世界系的旋转矩阵,求欧拉角的公式为

rol=arctan2(r32, r33); // 横滚角φ

pit=arcsin(-r31); // 俯仰角θ

yaw=arctan2(r21, r11); // 偏航角ψ

已知本体系到半速度系的旋转矩阵,求气动角的公式为

bank = arctan2(r32,r22) // 倾侧角σ

attack = arctan2(r13, r11) // 攻角α

sideslip = -arcsin(r12) // 侧滑角β

气动角的旋转顺序是,先绕本体系z轴旋转侧滑角,再绕本体系y轴旋转攻角,再绕世界系x轴旋转倾侧角,所以

R

=

R

x

R

z

R

y

R=R_xR_zR_y

R=Rx​Rz​Ry​。旋转顺序如图所示,图中3次旋转均为正角度。 3D仿真代码见 https://gitee.com/xd15zhn/areoforce3d,可执行文件在发行版里,编译和使用说明待补充。

补充一个特殊姿态的欧拉角

利用前文中旋转矩阵转欧拉角的公式可以构造出一个特殊的姿态,见下面两个图。第一个是我要描述的姿态,第二个是欧拉角都为0的参考姿态。 构造这个姿态的python代码

import numpy as np

ry = np.array([0, np.cos(0.15), np.sin(0.15)]) # 让旋转矩阵中y轴的z坐标很小

rz = np.array([np.cos(0.15), 0, np.sin(0.15)]) # 让旋转矩阵中z轴的z坐标也很小

e0 = 0.1

R = np.array([ # 另外构造旋转矩阵来旋转z轴

[1, 0, 0],

[0, np.cos(e0), -np.sin(e0)],

[0, np.sin(e0), np.cos(e0)],

])

rz = R @ rz # 旋转z轴使其与y轴垂直

rx = np.cross(ry, rz) # 右手坐标系构造x轴

R = np.array([rx, ry, rz]).T # xyz三轴组合成姿态旋转矩阵

roll = np.arctan2(R[2,1], R[2,2]) # 横滚角

print(roll)

这个姿态的横滚、俯仰、偏航角分别为

[

0.78790233

,

1.35906361

,

0.78037729

]

[0.78790233,\ 1.35906361,\ 0.78037729]

[0.78790233, 1.35906361, 0.78037729],但是直观上的欧拉角应该大致是

[

1

0

,

8

0

,

1

0

]

[10^\circ,\ 80^\circ,\ 10^\circ]

[10∘, 80∘, 10∘]。这也从侧面反映了欧拉角的万向节死锁现象。 再附一个纯坐标图,图中红绿蓝三条线分别代表本体系的XYZ轴。左边是欧拉角为0的参考姿态,右边是这个特殊姿态。

相关推荐

3.33 粗榧
365官网国内怎么进

3.33 粗榧

📅 08-18 💬 122