四元数双倍覆盖
Quaternion Double Cover进阶单位四元数 q 和 −q 表示同一个旋转,每个姿态都对应两个四元数。
用单位四元数 q = (w, x, y, z) 表示旋转时,q 和 −q 得到完全相同的旋转矩阵:旋转公式对 q 是二次的,符号相互抵消。数学上,单位四元数组成的三维球面 S³ 到旋转群 SO(3) 是二对一映射(双倍覆盖),每个姿态对应球面上一对对径点。这在具身智能里是常见坑:同一个末端朝向在数据里可能时而是 q、时而是 −q,网络直接回归四元数并用普通 L2 损失,会把相同的姿态当成相差很大;衡量差异应该用 1 − |q₁·q₂|,或取 ‖q − q̂‖ 与 ‖q + q̂‖ 中较小者。做球面插值前若点积为负要先翻号,否则会绕远路。Zhou 等人(2019)进一步证明四维及以下的旋转表示都不连续,所以不少策略改用 6D 旋转表示。
例子绕 z 轴转 90° 的四元数是 q = (0.707, 0, 0, 0.707)(w 在前);−q = (−0.707, 0, 0, −0.707) 相当于多转一整圈 360°,姿态完全一样。常见的规范化做法是强制 w ≥ 0。
- 也叫
- q 与 -q 等价、四元数符号歧义、Quaternion Sign Ambiguity、双覆盖
- 相关
- 四元数、6D 旋转表示、球面线性插值、旋转测地距离、特殊正交群 SO(3)、四元数分量顺序约定(wxyz / xyzw)
- 来源
- Wikipedia: Quaternions and spatial rotation
Wikipedia: 3D rotation group(S³ 到 SO(3) 的二对一覆盖)
On the Continuity of Rotation Representations in Neural Networks (arXiv 1812.07035)