本文最后更新于:2026年8月5日 下午
欧拉角用三个角度、按固定轴序表示三维旋转,是最直观的旋转参数化方式。当中间角(俯仰角)取到 ±90° 时会出现一个自由度丢失的奇异现象,称为万向节死锁(Gimbal Lock)。本文记录其成因、三种数学证明与规避方法。
欧拉角与旋转轴
三维旋转有 3 个自由度,欧拉角用三个角度 $\psi,\theta,\varphi$ 表示一次完整旋转,方式是绕指定轴依次转三次。以航空常用的 ZYX 顺序(yaw-pitch-roll)为例:
$$ R = R_z(\psi)\,R_y(\theta)\,R_x(\varphi) $$其中 $\psi$(yaw,偏航)绕 $z$ 轴,$\theta$(pitch,俯仰)绕 $y$ 轴,$\varphi$(roll,滚转)绕 $x$ 轴。
按内旋(intrinsic,动轴)约定,这三个轴是刚体自身的机体轴,并且会随前一次转动而改变:每次旋转都绕"此刻机体上"的那根轴进行。各步旋转的轴承轴在世界坐标系中的指向如下:
| 步骤 | 绕此刻的机体轴 | 该轴承轴在世界系的指向 |
|---|---|---|
| ① yaw $\psi$ | 机体 $z$(首步机体与世界重合) | $\hat z$,固定(= 世界竖直) |
| ② pitch $\theta$ | 机体 $y$(已被 yaw 带动) | $R_z(\psi),\hat y$,随 $\psi$ 变化 |
| ③ roll $\varphi$ | 机体 $x$(已被 yaw、pitch 带动) | $R_z(\psi)R_y(\theta),\hat x$,随 $\psi,\theta$ 变化 |
yaw 的轴承轴固定在世界竖直方向:它是顺序中最外层(最先施加)的旋转,机体尚未运动时即与世界 $z$ 重合,此后不再改变。这与航向的物理含义一致——航向由罗盘测量,罗盘测定的是绕地垂线的转角,改变俯仰不会改变航向读数。pitch 与 roll 的轴承轴则随前序转动而变化。
同一矩阵 $R_z(\psi)R_y(\theta)R_x(\varphi)$ 也可按外旋(extrinsic,定轴)理解为绕固定世界轴依次转 $x\to y\to z$(顺序相反),内旋 ZYX 与外旋 XYZ 给出相同的旋转矩阵。死锁与选用动轴还是定轴无关:两种解读下奇点都出现在 $\theta=\pm90°$。
欧拉角是最小参数(3 个角)表示,对人最直观,但当中间角 $\theta=\pm90°$ 时会出现奇点,即万向节死锁。
内旋与外旋:同一矩阵的两种读法
前面提到 $R_z(\psi)R_y(\theta)R_x(\varphi)$ 可按内旋(动轴)或外旋(定轴)两种方式理解。这里把二者的关系、以及"外旋是否也有死锁"讲透。
同一个矩阵,两种操作顺序
矩阵 $R=R_z(\psi)R_y(\theta)R_x(\varphi)$ 对应两种等价的物理操作:
- 内旋(机体轴):每次绕当前机体轴转,顺序 $z\to y\to x$,机体轴随前一次转动而改变。复合方式是右乘(新旋转追加到右边):
- 外旋(世界轴):每次绕固定世界轴转,顺序 $x\to y\to z$(顺序相反),轴永远不动。复合方式是左乘(新旋转加到左边):
两条路径终点完全相同。一般定理:内旋按某轴序 = 外旋按反序(内旋 ZYX = 外旋 XYZ)。
相等的共轭证明
更深的理由在于"绕已转动的机体轴"与"绕固定轴"的对应。设机体当前姿态为 $R$,机体上某根轴在体系里是 $\hat u$,则它在世界系里的方向是 $R\hat u$。绕这条世界系中的 $R\hat u$ 轴转 $\alpha$,等价于共轭:
$$ \mathrm{Rot}(R\hat u,\alpha) = R\,\mathrm{Rot}(\hat u,\alpha)\,R^{-1} $$(把机体转回世界、绕世界轴转、再转回去。)由此可证:内旋"先绕体 $e_1$ 转 $\alpha_1$、再绕(新)体 $e_2$ 转 $\alpha_2$“等于外旋"先绕世 $e_2$ 转 $\alpha_2$、再绕世 $e_1$ 转 $\alpha_1$”,二者都得 $R_{e_1}(\alpha_1)R_{e_2}(\alpha_2)$。三个轴同理,即得内旋 ZYX = 外旋 XYZ。
外旋也有死锁,且在同一处
既然内旋与外旋给出同一个矩阵 $R_z(\psi)R_y(\theta)R_x(\varphi)$,而死锁是这套三角度参数化的奇点(雅可比行列式 $\det M=\cos\theta$,在 $\theta=\pm90°$ 处为零),那么外旋同样有死锁,且恰在中间角 $\theta=\pm90°$——与内旋完全一样。死锁是参数化的性质,不取决于用内旋还是外旋去"读"这个矩阵。
但外旋的几何图像不同
内旋有现成的"嵌套万向节"物理图像:三个环的轴承(动轴)在 $\theta=90°$ 时重合。外旋则三个轴都是固定的世界轴,永远互相垂直,永远不会重合——所以外旋里看不到"两根轴碰到一起"的画面。那外旋的死锁是怎么"形成"的?
关键在于外旋是顺序施加的:先绕世界 $x$ 转 $\varphi$,再绕世界 $y$ 转 $\theta$,最后绕世界 $z$ 转 $\psi$。$\theta=90°$ 时,最早那个"绕世界 $x$"的转动,其效果被后面的世界 $y(90°)$、世界 $z$ 两次转动搬运后,最终落到了世界 $z$ 轴上——与最后那个"绕世界 $z$"的转动方向重合。于是旋钮 $\varphi$ 与 $\psi$ 的净效果变成绕同一根世界 $z$ 轴,二者不再独立。
用公式看最清楚($\theta=90°$ 时):改变 $\varphi$ 引起的姿态变化,其空间角速度为 $R\hat x=-\hat z$(机体 $x$ 轴此刻指向世界 $-z$);改变 $\psi$ 引起的空间角速度直接就是 $\hat z$。两者都沿世界 $z$ 轴($\pm$ 方向),故线性相关、自由度丢失。内旋里是"两根动轴重合",外旋里是"一个早转动的效果被搬运到与后转动同轴"——同一件事的两种说法。
一句话:死锁是三角度参数化的固有奇点,内旋外旋只是同一矩阵的两种叙述;换表示(四元数/旋转矩阵)即可消除。
关键区分:轴承轴与物体自身轴
上表的三根轴承轴对应一个三环嵌套的万向节:外环提供 yaw(钉在世界 $z$)、中环提供 pitch、内环提供 roll,物体固定在最内环上。这里需要区分两个概念:
- 物体自身轴:物体上固连的 $x$-$y$-$z$,永远三根互相垂直,是刚体的几何性质,不参与死锁。
- 万向节轴承轴:三个环各自的结构转轴(即上表第三列),会相互重合。
死锁指的是轴承轴重合,而非物体自身轴重合。机体当前的立轴 $z$ 会随机体运动,而 yaw 的轴承轴固定在世界竖直方向不动,二者是不同的对象。

图中蓝、橙、绿三根虚线为三个环的轴承轴:蓝色(外环/yaw)始终沿世界 $z$;橙色(中环/pitch)、绿色(内环/roll)随外环转动而变化。
死锁的成因:pitch = 90° 时自由度丢失
下面从几何、微分、矩阵三个层面证明同一个结论:pitch $=\pm90°$ 时,三个欧拉角只能表达两个独立的旋转方向。
几何层面:两根轴承轴重合
roll 的轴承轴为 $\mathbf{n}_{\text{roll}}=R_z(\psi)R_y(\theta)\hat x$。代入 $R_y(\theta)$ 与 $\theta=90°$($\cos90°=0,\sin90°=1$):
$$ R_y(90°)=\begin{bmatrix}0&0&1\\0&1&0\\-1&0&0\end{bmatrix},\qquad \hat x=\begin{bmatrix}1\\0\\0\end{bmatrix} $$矩阵乘 $\hat x=(1,0,0)^\top$ 相当于取矩阵的第一列,因此:
$$ R_y(90°)\hat x=\begin{bmatrix}0\\0\\-1\end{bmatrix}=-\hat z $$随后 $R_z(\psi)$ 绕 $z$ 轴旋转,不改变沿 $z$ 方向的向量($R_z(\psi)\hat z=\hat z$),故 $\mathbf{n}_{\text{roll}}=R_z(\psi)(-\hat z)=-\hat z$。roll 的轴承轴 $-\hat z$ 与 yaw 的轴承轴 $+\hat z$ 落在同一条世界 $z$ 轴线上——绕 $-\hat z$ 旋转等价于绕 $+\hat z$ 反向旋转,两个原本独立的旋转合并为一个。

微分层面:雅可比降秩
将欧拉角视为姿态空间 SO(3) 上的坐标。一组有效的坐标要求其雅可比满秩,即角度的微小变化能产生全部 3 个独立的旋转方向。欧拉角速率 $(\dot\varphi,\dot\theta,\dot\psi)$ 到机体角速度 $(p,q,r)$(滚转率、俯仰率、偏航率,机体系分量)的映射为 $3\times3$ 矩阵 $M$:
$$ \begin{bmatrix}p\\q\\r\end{bmatrix}=\begin{bmatrix}1&0&-\sin\theta\\0&\cos\varphi&\cos\theta\sin\varphi\\0&-\sin\varphi&\cos\theta\cos\varphi\end{bmatrix}\begin{bmatrix}\dot\varphi\\\dot\theta\\\dot\psi\end{bmatrix} $$按第一列展开,$M$ 的行列式为:
$$ \det M=\cos\theta $$因此 $M$ 仅在 $\theta=\pm90°$ 处奇异($\det M=0$),秩由 3 降为 2。在 $\theta=90°$ 时 $M$ 的三列中,第一列($\dot\varphi$,roll)为 $(1,0,0)^\top$,第三列($\dot\psi$,yaw)为 $(-1,0,0)^\top$,两者只差一个负号,都只产生绕机体 $x$ 轴的转动(对应 $p=\dot\varphi-\dot\psi$,而 $q,r$ 与 $\dot\varphi,\dot\psi$ 无关)。也就是说,此时 yaw 与 roll 产生同一方向的转动、不再独立,可到达的角速度空间由 3 维塌缩为 2 维。$\det M=\cos\theta$ 这一结果直接给出了奇点的位置。
矩阵层面:R 只依赖角度之差
记 $c_\psi=\cos\psi$、$s_\psi=\sin\psi$、$c_\varphi=\cos\varphi$、$s_\varphi=\sin\varphi$,将 $\theta=90°$ 代入后 $R=R_z(\psi),R_y(90°),R_x(\varphi)$ 分两步计算。先算 $A=R_y(90°)R_x(\varphi)$(行点列):
$$ A=\begin{bmatrix}0&0&1\\0&1&0\\-1&0&0\end{bmatrix}\begin{bmatrix}1&0&0\\0&c_\varphi&-s_\varphi\\0&s_\varphi&c_\varphi\end{bmatrix}=\begin{bmatrix}0&s_\varphi&c_\varphi\\0&c_\varphi&-s_\varphi\\-1&0&0\end{bmatrix} $$再算 $R=R_z(\psi)A$:
$$ R=\begin{bmatrix}c_\psi&-s_\psi&0\\s_\psi&c_\psi&0\\0&0&1\end{bmatrix}\begin{bmatrix}0&s_\varphi&c_\varphi\\0&c_\varphi&-s_\varphi\\-1&0&0\end{bmatrix}=\begin{bmatrix}0&c_\psi s_\varphi-s_\psi c_\varphi&c_\psi c_\varphi+s_\psi s_\varphi\\0&s_\psi s_\varphi+c_\psi c_\varphi&s_\psi c_\varphi-c_\psi s_\varphi\\-1&0&0\end{bmatrix} $$用和差角公式($c_\psi s_\varphi-s_\psi c_\varphi=-\sin(\psi-\varphi)$,$c_\psi c_\varphi+s_\psi s_\varphi=\cos(\psi-\varphi)$ 等)合并:
$$ R\big|_{\theta=90°}=\begin{bmatrix}0&-\sin(\psi-\varphi)&\cos(\psi-\varphi)\\0&\cos(\psi-\varphi)&\sin(\psi-\varphi)\\-1&0&0\end{bmatrix} $$整个矩阵的非零项全部是 $\sin(\psi-\varphi)$ 或 $\cos(\psi-\varphi)$,即只含 $\psi-\varphi$ 这一个组合。给定该 $R$ 只能反解出 $\psi-\varphi$,无法分别确定 $\psi$ 和 $\varphi$(令 $\psi,\varphi$ 同时增加同一 $\delta$,$R$ 完全不变)。两个角度塌缩为一个,自由度减少一个,与雅可比降秩的结论一致。取 $\varphi=0$ 即得到常见简写形式 $\begin{bmatrix}0&-\sin\psi&\cos\psi\\0&\cos\psi&\sin\psi\\-1&0&0\end{bmatrix}$。
需要说明的是,该矩阵的三列 $(0,0,-1)^\top$、$(-\sin(\psi-\varphi),\cos(\psi-\varphi),0)^\top$、$(\cos(\psi-\varphi),\sin(\psi-\varphi),0)^\top$ 仍两两正交、行列式为 $+1$,是一个合法的旋转矩阵;自由度丢失并非旋转矩阵本身退化(如列向量线性相关),而是从角度到矩阵的映射在此处降秩。
直观比喻
飞机
为飞机定义三个机体轴:纵轴(机头方向,roll 绕它)、横轴(翼展方向,pitch 绕它)、立轴(机背方向)。对应到万向节:yaw 绕世界竖直轴(外环,固定)、pitch 绕横轴、roll 绕纵轴。

- 平飞($\theta=0°$):纵轴水平朝前,与 yaw 轴(世界竖直)分离,三个旋转独立,3 个自由度。
- 俯仰 $90°$(机头朝天):纵轴转到竖直方向,与世界竖直轴(yaw)重合,roll 与 yaw 绕同一根竖直线,丢失一个自由度。
此时机头朝天的飞机若要改变航向(例如由朝北转为朝东),蹬方向舵(偏航)与操纵驾驶杆(滚转)产生的效果相同,都是在绕那根竖直线转动。要恢复独立的航向控制,只能先将机头从 $90°$ 拉回,离开死锁点。
炮塔
地面炮塔有两根轴:竖直轴(水平旋转 360°,定方位)和水平轴(俯仰,定高低)。当目标飞至正上方、俯仰角达到 $90°$(炮口朝天)时,炮口与竖直轴共线:此时无论如何旋转竖直轴,炮口朝向都不变(方位轴失效),只剩俯仰轴可动,而动俯仰轴只会使炮口偏离朝天。炮塔丢失一个自由度,无法转向(例如转向南方)。这与飞机俯仰 $90°$ 的情形同理。
死锁的影响
刚体本身可以绕任意轴自由旋转,死锁的问题在于使用 $(\psi,\theta,\varphi)$ 这三个数来存储、计算和控制姿态时出现的表示奇异(representation singularity)。类比地理坐标:地球本身没有问题,但经纬度在两极处失效——站在北极上任一经度都成立、经度无定义,笔直经过北极时经度会从 $0°$ 瞬间跳变到 $180°$。欧拉角相当于姿态空间的"经纬度",pitch $=\pm90°$ 对应其"两极",yaw 与 roll 在此汇于一点而无法区分。
具体影响包括:
- 反解跳变:从旋转矩阵或传感器读数反推 $(\psi,\theta,\varphi)$ 时,$\theta$ 越过 $\pm90°$ 会使 $\psi$、$\varphi$ 瞬间跳变上百乃至数百度,即使实际姿态只发生了微小变化。
- 控制发散:以欧拉角为状态量的控制器在奇点附近反馈失真,正是上述速率矩阵 $M$ 降秩所致($p=\dot\varphi-\dot\psi\sin\theta$ 在此处只能给出 $\dot\varphi-\dot\psi$,偏航率与滚转率无法分离)。
- 插值异常:在两个姿态之间用欧拉角线性插值,路径会在奇点附近绕远。
- 物理机构卡死:真实的三环嵌套陀螺或云台会机械上丧失一个方向的运动能力(航天惯导平台通过增加第四个环来规避)。
此外,进入死锁点后欧拉角丧失唯一性(别名现象):内旋 ZYX 下"先 yaw $45°$ 再 pitch $90°$"与"先 pitch $90°$ 再 roll $45°$"得到完全相同的姿态。
上述问题仅在采用欧拉角表示时出现。改用四元数或旋转矩阵表示姿态,奇点即消失。
规避方法
- 使用四元数:4 个参数(带单位模长约束),不依赖三轴顺序,无此奇点,是航空航天、3D 图形与姿态解算的常用表示。代价是存在双覆盖($q$ 与 $-q$ 表示同一旋转),且不如欧拉角直观。
- 使用旋转矩阵:9 个参数(带正交约束),冗余但同样无奇点,适合运算与复合,不适合插值。
- 保留欧拉角但规避奇点:选择一种轴序使其奇点($\pm90°$)落在工作区间之外(例如机械臂末端姿态很少达到纯竖直方向时可用 ZYX),或在接近 $\pm90°$ 时切换到另一套轴序。
工程上的常见做法是内部计算与姿态解算使用四元数或旋转矩阵以避开奇点,需要展示给人看时再转换为欧拉角。
与机构奇异的区别
万向节死锁是表示奇异,属于三参数姿态表示的数学奇点,更换表示方式即可消除。它与机械臂的机构奇异(kinematic singularity)是不同的概念:后者是机械臂在特定构型下物理上丧失某一方向的运动能力(雅可比降秩)。二者只是同名,并无因果关系。
文章链接:
https://www.zywvvd.com/notes/3d/gimbal-lock/gimbal-lock/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付