1. 欧拉角
1.1. 介绍
欧拉角是描述刚体相对于固定坐标系的方向的三个角度。旋转可以围绕原始坐标系的轴 x-y-z(假设保持静止,外在的),或围绕旋转坐标系的轴 x-y-z(内在的,与运动的物体固连),每次基本旋转后相对于外在坐标系改变其方向。
1.2. 横滚、俯仰和偏航
欧拉角通常表示为:
γ 或 φ,表示绕 x 轴的旋转
β 或 θ,表示绕 y 轴的旋转
α 或 ψ,表示绕 z 轴的旋转
1.3. 正规欧拉角和泰特-布莱恩角
存在十二种可能的旋转轴序列,可以分为两类:
正规欧拉角,其中一个旋转轴重复(x-z-x, x-y-x, y-x-y, y-z-y, z-y-z, z-x-z)
泰特-布莱恩角,围绕所有轴旋转(x-z-y, x-y-z, y-x-z, y-z-x, z-x-y, z-y-x)
有时,这两类序列都称为“欧拉角”。在这种情况下,第一组的序列称为正规或经典欧拉角。对于泰特-布莱恩角,有六种选择旋转轴的可能性。六种可能的序列是:
x-y'-z'(内在旋转)或 z-y-x(外在旋转)
y-z'-x'(内在旋转)或 x-z-y(外在旋转)
z-x'-y'(内在旋转)或 y-x-z(外在旋转)
x-z'-y'(内在旋转)或 y-z-x(外在旋转)
z-y'-x'(内在旋转)或 x-y-z(外在旋转):内在旋转称为:偏航、俯仰和横滚
y-x'-z'(内在旋转)或 z-x-y(外在旋转)
1.4 旋转矩阵
1.5 从旋转矩阵确定偏航、俯仰和滚转
有四个象限可供选择反正切函数。每个象限应通过使用参数的分子和分母的符号来选择。分子的符号选择方向是在x轴的上方还是下方,分母选择方向是在y轴的左侧还是右侧。函数atan2可以为我们计算:
1.6 符号和范围
1.7 泰特-布莱恩角
1.8 等效的正欧拉角
点击此处查看互动演示:
https://www.andre-gaschler.com/rotationconverter/
1.9. 旋转和平移在变换中的顺序
为了应用变换,首先我们在预乘的框架轴上应用旋转,然后我们在预乘的框架轴上再次平移
1.10. 万向节锁
角度 α、β 和 γ 是唯一确定的,除了奇异情况。如果 cos(β) = 0 或 β = ±π/2
这意味着对于给定的旋转矩阵,在 β = ±π/2 时,有无限多组(滚动,偏航)角度。
访问链接:[link](https://compsci290-s2016.github.io/CoursePage/Materials/EulerAnglesViz/) ,查看交互式万向节可视化内容。
当然,让我们使用一个数值例子来说明万向节锁问题,然后解释该问题如何在欧拉角表示中表现出来,而不是四元数。
数值示例:
考虑一个我们希望使用滚-俯仰-偏航序列(通常在航空中使用)旋转的3D对象。为了简单起见,我们使用度数:
初始方向:未应用旋转。欧拉角为(滚动,俯仰,偏航)=(0°,0°,0°)。
旋转:我们应用+90°的俯仰。现在,我们的欧拉角为(0°,90°,0°)。
此时,对象的“鼻子”指向正上方。问题是:
如果我们现在尝试应用一个例如+45°的滚动,实际在3D空间中的效果将与应用+45°的偏航相同。我们无法区分滚动和偏航;它们已经退化。这就是万向节锁。
数值值:
欧拉角:
在+90°俯仰之后,我们的欧拉角变为:
滚动:0°(或+45°如果在俯仰后尝试滚动)
俯仰:90°
偏航:0°(或+45°如果在俯仰后尝试偏航)
这是有问题的,因为在+90°俯仰之后,滚动和偏航旋转在效果上是无法区分的。
四元数表示:
围绕Y轴的+90°俯仰旋转可以表示为: