四元数分量顺序约定(wxyz / xyzw)
Quaternion Component Order Convention (scalar-first wxyz vs scalar-last xyzw; Hamilton vs JPL)常用四元数的实部 w 放第一位还是最后一位,各软件库并不统一。
单位四元数用四个数表示旋转:实部 w 和虚部 x、y、z。分量顺序约定指存储时 w 放最前(wxyz,标量在前)还是最后(xyzw,标量在后),各软件并不统一:ROS 消息和 SciPy 默认 xyzw,MuJoCo 和 Isaac Sim Core 用 wxyz;Isaac Lab 2.x 用 wxyz,3.0 改为 xyzw 以对齐 Warp、PhysX 和 Newton。更深一层是 Hamilton 与 JPL 约定:据 Solà 的综述,Hamilton 定义 ij=k(右手),JPL 定义 ji=k(左手),同一组数字在两者下代表互逆的旋转;机器人领域多用 Hamilton,航天领域多用 JPL。拼接不同来源的数据时顺序弄错,程序照常运行但姿态全错,是新手常踩的坑。
例子「不旋转」在 wxyz 下写作 (1, 0, 0, 0),在 xyzw 下写作 (0, 0, 0, 1)。若把 ROS 录下的 (0, 0, 0, 1) 按 wxyz 读进 MuJoCo,会被当成绕 z 轴转 180° 的姿态,机器人一开场就朝反方向。
- 也叫
- 标量在前 / 标量在后、Scalar-first / Scalar-last、wxyz、xyzw、Hamilton 约定、JPL 约定
- 相关
- 四元数、四元数双倍覆盖、右手坐标系与轴向约定、坐标变换、MuJoCo、Isaac Lab
- 来源
- Joan Solà, Quaternion kinematics for the error-state Kalman filter (arXiv:1711.02508)
Isaac Lab: Migrating to Isaac Lab 3.0 (Quaternion Format)
SciPy: Rotation.from_quat - 信息截至
- 2026-09