关于万向死锁问题的理解是否可以跳出“轴重合”此种反直觉思路的探讨
·
最近学路径规划,忘记了万向死锁的原因(也可能本身就懵懵懂懂),我看网上大量关于俯仰角旋转90°导致“x轴与z轴重合”的说法。我对此表示不理解,首先欧拉角旋转包括固定轴和变动轴,无论绕什么轴旋转,都不应该出现所谓的“轴重合”的这种反直觉的说法。
一、数学公式的角度分析
万向死锁的本质,可以从旋转矩阵的数学结构来理解。设物体依次绕 Z 轴、Y 轴、X 轴旋转,对应的欧拉角为 α(偏航角)、β(俯仰角)、γ(滚转角),则总的旋转矩阵为:
R = Rz(α) · Ry(β) · Rx(γ)
其中各基本旋转矩阵为:
Rz(α) = [cosα -sinα 0]
[sinα cosα 0]
[ 0 0 1]
Ry(β) = [cosβ 0 sinβ]
[ 0 1 0 ]
[-sinβ 0 cosβ]
Rx(γ) = [1 0 0 ]
[0 cosγ -sinγ]
[0 sinγ cosγ]
将三者相乘,得到完整的旋转矩阵。当 β=90 时,cosβ=0,sinβ=1,代入后矩阵会退化为:
R = [ 0 sin(γ-α) cos(γ-α) ]
[ 0 cos(γ-α) -sin(γ-α) ]
[ 1 0 0 ]
观察这个退化矩阵可以发现:矩阵中只出现了 γ - α 的差值组合,而 γ 和 α 各自单独的值不再独立出现。这意味着,无论 γ 和 α 分别取什么值,只要它们的差值相同,最终得到的旋转矩阵就完全相同。换句话说,在 β = 90° 时,滚转角和偏航角两个自由度合并成了一个自由度,系统丢失了一个旋转自由度,这就是万向死锁的数学本质,而非“两轴重合”。
从线性代数的角度看,旋转矩阵的秩从 3 降为 2,雅可比矩阵出现奇异,导致姿态解算时无法唯一反解出欧拉角。这也解释了为什么工程上常采用四元数或旋转矩阵来避免万向死锁——它们不存在这种参数奇异性。当然本文介绍的是ZYX特例,若为其他变换如ZXY等,那么绕X轴旋转的角度不应该为90(中间那个变量)。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)