姿态表示方法(上):欧拉角定义
各位同学,咱们今天聊聊姿态表示里最直观的一种——欧拉角。
说实话,我刚入行那会儿,第一次接触惯导系统,看到一堆四元数、方向余弦矩阵,头都大了。后来带我的老工程师跟我说了一句话,我到现在还记得:「你先别管那些花里胡哨的,把欧拉角搞明白,后面自然就通了。」
嗯,今天咱们就从欧拉角开始。
欧拉角到底是个啥?
欧拉角,说白了就是用三个角度来描述一个物体在三维空间里的朝向。
你想想看,一个刚体在空间里,它有六个自由度——三个位置,三个姿态。位置好说,x、y、z坐标一标就完事。姿态呢?怎么描述它「转了多少」?
欧拉角的思路很简单:把一次复杂的旋转,拆成三次绕坐标轴的简单旋转。
比如一架飞机,它的姿态可以这样描述:
- 偏航角(Yaw,ψ):绕机体Z轴旋转,说白了就是机头朝哪边
- 俯仰角(Pitch,θ):绕机体Y轴旋转,就是抬头还是低头
- 横滚角(Roll,φ):绕机体X轴旋转,就是机身侧倾了多少
这三个角,就是咱们常说的「欧拉角」。
重要概念:欧拉角不是唯一的。不同的旋转顺序,会得到不同的欧拉角组合。航空领域最常用的是Z-Y-X顺序(先偏航、再俯仰、最后横滚),也就是所谓的「321顺序」。
欧拉角的物理意义
我在项目里调试飞控的时候,经常要盯着欧拉角看。为什么?因为它直观啊!
你看到偏航角从0°变到90°,就知道飞机在右转。看到俯仰角变成负值,就知道机头在往下栽。这种直觉,四元数给不了你。
咱们用数学语言再捋一遍:
假设有一个向量 v 在机体坐标系里是 vb,你想知道它在导航坐标系(比如东北天坐标系)里长什么样。那就需要把机体坐标系旋转到导航坐标系。
这个旋转过程,用欧拉角来描述就是:
- 先绕Z轴转ψ(偏航)
- 再绕新的Y轴转θ(俯仰)
- 最后绕新的X轴转φ(横滚)
每次旋转,都可以用一个旋转矩阵来表示。三个矩阵乘在一起,就得到了从机体到导航的变换矩阵:
C_n^b = R_x(φ) · R_y(θ) · R_z(ψ)
展开之后长这样:
C_n^b =
[ cosθ·cosψ, cosθ·sinψ, -sinθ ]
[ sinφ·sinθ·cosψ - cosφ·sinψ, sinφ·sinθ·sinψ + cosφ·cosψ, sinφ·cosθ ]
[ cosφ·sinθ·cosψ + sinφ·sinψ, cosφ·sinθ·sinψ - sinφ·cosψ, cosφ·cosθ ]
看着挺吓人对吧?别怕,你不需要背这个矩阵。你只需要知道:欧拉角到旋转矩阵的转换,是有明确公式的。写代码的时候查一下就行。
我的小习惯:每次写欧拉角相关的代码,我都会在注释里把旋转顺序写清楚。比如 // Z-Y-X order,这样三个月后回来看代码,不至于一脸懵。
万向锁问题——欧拉角的「死穴」
好,现在咱们聊一个绕不开的话题——万向锁(Gimbal Lock)。
我曾经在一个无人机项目里踩过这个坑。当时飞机在做大机动动作,俯仰角接近90°,结果姿态解算突然就炸了,偏航角和横滚角开始乱跳。我盯着数据看了半天,才反应过来——万向锁了。
万向锁是什么?
简单说,就是当俯仰角θ = ±90°时,偏航和横滚的旋转轴会重合,导致丢失一个自由度。
你想想看:
- 当θ = 90°,飞机机头垂直朝天
- 这时候,绕Z轴的偏航和绕X轴的横滚,效果是一样的——都是绕垂直轴旋转
- 于是,两个角度变成了一个角度,系统「锁死」了
用数学表达就是:当cosθ = 0时,旋转矩阵里某些项会变成0/0的形式,导致奇异性。
注意:万向锁不是物理上的锁死,而是数学上的奇异性。飞机本身还能动,但你的姿态表示方式失效了。
为什么会这样?
因为欧拉角本质上是用三个角度来参数化SO(3)旋转群。而SO(3)是一个三维流形,你不可能用三个参数在整个流形上做到全局无奇异——这是拓扑学上的结论。说白了,任何三参数姿态表示法,都逃不过奇异点。
那怎么办?
在实际工程中,我们通常这样处理:
- 限制使用范围:比如在航空领域,俯仰角一般限制在±85°以内,避开奇异点
- 切换表示方法:当俯仰角接近±90°时,切换到四元数或旋转向量
- 用四元数做解算:这是最常用的方法,后面章节会详细讲
避坑指南:我曾经在写捷联惯导解算代码时,直接用欧拉角做姿态更新。结果飞机做大机动时,解算直接发散。后来老老实实换成四元数做递推,只在输出时转成欧拉角给人看。记住:内部解算用四元数,外部显示用欧拉角。
欧拉角的优缺点总结
| 优点 | 缺点 |
|---|---|
| 物理意义直观,容易理解 | 存在万向锁问题(奇异点) |
| 适合人机交互和数据显示 | 三角函数运算量大 |
| 三个参数,存储空间小 | 旋转顺序依赖性强,容易混淆 |
| 与传感器输出(如磁力计)直接对应 | 插值困难,不能直接做平滑 |
本章知识体系
下面这张图,帮你把本章的核心逻辑串起来:
好了,这一章咱们把欧拉角的基本概念、物理意义和万向锁问题都过了一遍。下一章咱们接着聊姿态表示方法的另一种——旋转矩阵和方向余弦矩阵,到时候你会看到,不同的表示方法各有各的用武之地。
公众号:蓝海资料掘金营,微信deep3321