图 19-5 · 三维旋转:欧拉角、四元数与万向锁

本图回答的问题:三个姿态角怎么直观拖出来看?万向锁在什么姿势下出现?四元数又怎么绕开它?

三维引擎未能加载(three.min.js 缺失或页面离线),本图降级为文字讲解:右侧滑杆区说明不变。
左键拖拽旋转 · 右键或 Shift+拖拽平移 · 滚轮缩放 · 双击复位
偏航环(绕 Z · 水平) 俯仰环(绕 Y · 侧立) 横滚环(绕 X · 立式) 变红 = 该环与另一环重合(万向锁) 长轴带字母 X/Y/Z = 固定世界系(Z 竖直朝上);机身短轴 = 机体系
姿态角(欧拉角 · 右手定则)
0°
0°
0°
万向锁进行中:偏航环与横滚环已重合成一根轴,三个角只剩两个独立自由度。把"偏航"和"横滚"各自从 0 拖到 90° 对比——飞机姿态完全相同。
同一姿态的四元数 q = (x, y, z, w) —— TF 消息里存的就是它
(引擎加载中…)
✓ 全零姿态 = 单位四元数 (0, 0, 0, 1),正是 04 节第 5 步 tf2_echo 的输出
合成顺序 R = Rz(偏航) · Ry(俯仰) · Rx(横滚);红 X / 绿 Y / 蓝 Z = 机体系三轴(X 指机头)。TF 不落盘欧拉角,四个分量即 rotation.x/y/z/w。场景为 Z 轴竖直朝上的 ROS 习惯,字母轴 = 固定世界系,可对照滑杆转角。
✅ 结论:欧拉角给人看、四元数给机器存——姿态用三个角表达,落盘永远是 (x, y, z, w) ⚠️ 风险:俯仰 ±90° 触发万向锁,偏航与横滚并成一根轴 🔍 验证:全零读数 (0,0,0,1) 对照 04 节第 5 步 tf2_echo;04 节 IX-19A 拖 yaw=180° 复核半角公式
EXP-19 · TF2 坐标系变换