3、姿态表示方法(上):欧拉角的定义、万向锁问题、欧拉角在工程中的使用限制
3.1 欧拉角的定义
欧拉角是描述刚体在三维空间中姿态最直观的方法之一。其核心思想是:任何旋转都可以分解为绕三个不同坐标轴的、依次进行的有限角度旋转。
在飞行器控制中,最常用的欧拉角定义是 Z-Y-X 顺序(又称 Tait-Bryan 角),对应我们熟悉的三个姿态角:
- 偏航角 (Yaw, ψ):绕机体 Zb 轴旋转,范围通常为 [-π, π] 或 [0, 2π)。
- 俯仰角 (Pitch, θ):绕机体 Yb 轴旋转,范围通常为 [-π/2, π/2]。
- 滚转角 (Roll, φ):绕机体 Xb 轴旋转,范围通常为 [-π, π]。
旋转顺序为:从导航坐标系(NED,北东地)到机体坐标系,先绕 Z 轴转 ψ,再绕新的 Y 轴转 θ,最后绕新的 X 轴转 φ。对应的旋转矩阵(从机体到导航)为:
Rnb = Rz(ψ) · Ry(θ) · Rx(φ)
展开后得到:
| 方向余弦矩阵元素 | 表达式 |
|---|---|
| R11 | cosθ cosψ |
| R12 | sinφ sinθ cosψ - cosφ sinψ |
| R13 | cosφ sinθ cosψ + sinφ sinψ |
| R21 | cosθ sinψ |
| R22 | sinφ sinθ sinψ + cosφ cosψ |
| R23 | cosφ sinθ sinψ - sinφ cosψ |
| R31 | -sinθ |
| R32 | sinφ cosθ |
| R33 | cosφ cosθ |
3.2 万向锁问题(Gimbal Lock)
万向锁是欧拉角最著名的缺陷。它发生在当第二个旋转角(俯仰角 θ)达到 ±90° 时。
现象描述:
当 θ = 90° 时,第一个旋转轴(Z 轴)和第三个旋转轴(X 轴)在空间上重合。此时,系统丢失了一个自由度——原本需要三个角度描述的旋转,退化为两个角度。具体表现为:
- 偏航角 ψ 和滚转角 φ 的旋转轴共线,无法独立控制。
- 任何绕水平轴的旋转,都只能通过 ψ 和 φ 的耦合来实现,导致控制指令奇异。
数学推导:
当 θ = π/2 时,cosθ = 0,sinθ = 1。代入旋转矩阵:
Rnb(θ=π/2) =
[0, sin(φ-ψ), cos(φ-ψ);
0, cos(φ-ψ), -sin(φ-ψ);
1, 0, 0]
可见,矩阵中只依赖于 (φ - ψ) 的组合,而不是 φ 和 ψ 的独立值。这意味着无穷多组 (φ, ψ) 对应同一个姿态,姿态解算出现歧义。
物理直观理解:
想象一架飞机垂直向上爬升(θ = 90°)。此时,飞机的机头指向天顶。无论你如何调整偏航(绕垂直轴旋转)或滚转(绕机头轴线旋转),飞机的机头方向都不会改变——它始终指向天顶。你无法通过偏航或滚转来让机头指向其他方向,这就是自由度的丢失。
3.3 欧拉角在工程中的使用限制
由于万向锁的存在,欧拉角在飞控工程中受到严格限制,主要体现在以下方面:
- 无法全姿态描述:当飞行器俯仰角接近 ±90° 时(例如筋斗、垂直爬升、倒飞),欧拉角解算会出现奇点,导致姿态估计发散。
- 微分方程奇异:欧拉角运动学方程(角速度到欧拉角速率的转换)在 θ = ±90° 时分母为零:
[φ̇; θ̇; ψ̇] =
[1, sinφ tanθ, cosφ tanθ;
0, cosφ, -sinφ;
0, sinφ/cosθ, cosφ/cosθ] · [p; q; r]
当 θ → ±90° 时,tanθ → ∞,1/cosθ → ∞,导致数值计算溢出。
- 插值与平滑困难:在姿态插值或轨迹规划中,欧拉角存在角度跳变(如从 179° 到 -179°),直接线性插值会导致姿态突变。
- 不适用于高速旋转:对于旋翼机或特技飞行,角速度较大时,欧拉角速率与真实角速度之间的非线性关系会引入较大误差。
工程中的妥协使用:
- 仅用于小角度场景:在固定翼平飞、悬停等俯仰角 < 30° 的场景下,欧拉角是直观且有效的。
- 作为人机交互接口:地面站显示、遥控器指令通常使用欧拉角,因为人类更容易理解“滚转 30 度”而非四元数。
- 必须配合限幅:在姿态解算中,对俯仰角进行限幅(如 ±85°),避免进入奇点区域。
- 内部计算使用四元数:飞控核心的姿态解算和控制律计算,几乎全部采用四元数或旋转矩阵,仅在输出给用户或日志记录时转换为欧拉角。
总结:欧拉角是理解姿态的入门钥匙,但绝非工程实现的最终工具。在飞控系统中,它更多扮演“显示层”的角色,而“计算层”必须依赖无奇点的表示方法(如四元数)。下一节我们将深入探讨四元数的定义与优势。