姿态表示方法(上):欧拉角定义

各位同学,咱们今天聊聊姿态表示里最直观的一种——欧拉角。

说实话,我刚入行那会儿,第一次接触惯导系统,看到一堆四元数、方向余弦矩阵,头都大了。后来带我的老工程师跟我说了一句话,我到现在还记得:「你先别管那些花里胡哨的,把欧拉角搞明白,后面自然就通了。」

嗯,今天咱们就从欧拉角开始。

欧拉角到底是个啥?

欧拉角,说白了就是用三个角度来描述一个物体在三维空间里的朝向。

你想想看,一个刚体在空间里,它有六个自由度——三个位置,三个姿态。位置好说,x、y、z坐标一标就完事。姿态呢?怎么描述它「转了多少」?

欧拉角的思路很简单:把一次复杂的旋转,拆成三次绕坐标轴的简单旋转

比如一架飞机,它的姿态可以这样描述:

  • 偏航角(Yaw,ψ):绕机体Z轴旋转,说白了就是机头朝哪边
  • 俯仰角(Pitch,θ):绕机体Y轴旋转,就是抬头还是低头
  • 横滚角(Roll,φ):绕机体X轴旋转,就是机身侧倾了多少

这三个角,就是咱们常说的「欧拉角」。

重要概念:欧拉角不是唯一的。不同的旋转顺序,会得到不同的欧拉角组合。航空领域最常用的是Z-Y-X顺序(先偏航、再俯仰、最后横滚),也就是所谓的「321顺序」。

欧拉角的物理意义

我在项目里调试飞控的时候,经常要盯着欧拉角看。为什么?因为它直观啊!

你看到偏航角从0°变到90°,就知道飞机在右转。看到俯仰角变成负值,就知道机头在往下栽。这种直觉,四元数给不了你。

咱们用数学语言再捋一遍:

假设有一个向量 v 在机体坐标系里是 vb,你想知道它在导航坐标系(比如东北天坐标系)里长什么样。那就需要把机体坐标系旋转到导航坐标系。

这个旋转过程,用欧拉角来描述就是:

  1. 先绕Z轴转ψ(偏航)
  2. 再绕新的Y轴转θ(俯仰)
  3. 最后绕新的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°时,切换到四元数或旋转向量
  • 用四元数做解算:这是最常用的方法,后面章节会详细讲

避坑指南:我曾经在写捷联惯导解算代码时,直接用欧拉角做姿态更新。结果飞机做大机动时,解算直接发散。后来老老实实换成四元数做递推,只在输出时转成欧拉角给人看。记住:内部解算用四元数,外部显示用欧拉角

欧拉角的优缺点总结

优点 缺点
物理意义直观,容易理解 存在万向锁问题(奇异点)
适合人机交互和数据显示 三角函数运算量大
三个参数,存储空间小 旋转顺序依赖性强,容易混淆
与传感器输出(如磁力计)直接对应 插值困难,不能直接做平滑

本章知识体系

下面这张图,帮你把本章的核心逻辑串起来:

欧拉角知识体系 欧拉角定义 三个角度描述姿态 物理意义 偏航·俯仰·横滚 万向锁问题 奇异点·自由度丢失 旋转顺序:Z-Y-X(321顺序) 三次绕轴旋转的合成 旋转矩阵的推导 机体→导航坐标变换 θ=±90°时发生 偏航与横滚轴重合 核心结论:直观但存在奇异,适合显示不适合解算 工程建议:内部解算用四元数,外部显示用欧拉角

好了,这一章咱们把欧拉角的基本概念、物理意义和万向锁问题都过了一遍。下一章咱们接着聊姿态表示方法的另一种——旋转矩阵和方向余弦矩阵,到时候你会看到,不同的表示方法各有各的用武之地。


公众号:蓝海资料掘金营,微信deep3321