【Eigen教程】几何变换(七)

1. 欧拉角

1.1. 介绍

欧拉角是描述刚体相对于固定坐标系的方向的三个角度。旋转可以围绕原始坐标系的轴 x-y-z(假设保持静止,外在的),或围绕旋转坐标系的轴 x-y-z(内在的,与运动的物体固连),每次基本旋转后相对于外在坐标系改变其方向。

1.2. 横滚、俯仰和偏航

欧拉角通常表示为:

  • γ 或 φ,表示绕 x 轴的旋转

  • β 或 θ,表示绕 y 轴的旋转

  • α 或 ψ,表示绕 z 轴的旋转

1.3. 正规欧拉角和泰特-布莱恩角

存在十二种可能的旋转轴序列,可以分为两类:

  1. 正规欧拉角,其中一个旋转轴重复(x-z-x, x-y-x, y-x-y, y-z-y, z-y-z, z-x-z)

  2. 泰特-布莱恩角,围绕所有轴旋转(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 旋转矩阵

a9eaba73859c395cab883145f18cfcf6.png

1.5 从旋转矩阵确定偏航、俯仰和滚转

d755f789d9d4b60b91f34e3ee7ed6630.png

有四个象限可供选择反正切函数。每个象限应通过使用参数的分子和分母的符号来选择。分子的符号选择方向是在x轴的上方还是下方,分母选择方向是在y轴的左侧还是右侧。函数atan2可以为我们计算:

289d24d367ea37b52dfd816a53715c79.png

1.6 符号和范围

f86c55321a86050c805e68825059cfdd.png

1.7 泰特-布莱恩角

0855c5c2115ecfc4340adb96cb1f7219.png

1.8 等效的正欧拉角

fd69730ccf5c0396d42c29d3b7994e94.png

点击此处查看互动演示:
https://www.andre-gaschler.com/rotationconverter/

0a27bcb56f959dda6db10f4446a8aff1.png

1.9. 旋转和平移在变换中的顺序

为了应用变换,首先我们在预乘的框架轴上应用旋转,然后我们在预乘的框架轴上再次平移

d26e0fc2b58945d7311594b853705cfc.png

d6328276d05816d8a3cfaef0babb7ed1.png

092b295ce6c412ecbdeeb4ff25ce8696.png

1.10. 万向节锁

角度 α、β 和 γ 是唯一确定的,除了奇异情况。如果 cos(β) = 0 或 β = ±π/2

ba0910e289077dfbc8cbbfcb7a6d78d0.jpeg

231a0b1364233f0c6c2c95842363b51d.png

这意味着对于给定的旋转矩阵,在 β = ±π/2 时,有无限多组(滚动,偏航)角度。

访问链接:[link](https://compsci290-s2016.github.io/CoursePage/Materials/EulerAnglesViz/) ,查看交互式万向节可视化内容。

当然,让我们使用一个数值例子来说明万向节锁问题,然后解释该问题如何在欧拉角表示中表现出来,而不是四元数。

数值示例:

考虑一个我们希望使用滚-俯仰-偏航序列(通常在航空中使用)旋转的3D对象。为了简单起见,我们使用度数:

  1. 初始方向:未应用旋转。欧拉角为(滚动,俯仰,偏航)=(0°,0°,0°)。

  2. 旋转:我们应用+90°的俯仰。现在,我们的欧拉角为(0°,90°,0°)。

此时,对象的“鼻子”指向正上方。问题是:

如果我们现在尝试应用一个例如+45°的滚动,实际在3D空间中的效果将与应用+45°的偏航相同。我们无法区分滚动和偏航;它们已经退化。这就是万向节锁。

数值值:

欧拉角:

在+90°俯仰之后,我们的欧拉角变为:

  • 滚动:0°(或+45°如果在俯仰后尝试滚动)

  • 俯仰:90°

  • 偏航:0°(或+45°如果在俯仰后尝试偏航)

这是有问题的,因为在+90°俯仰之后,滚动和偏航旋转在效果上是无法区分的。

四元数表示:

围绕Y轴的+90°俯仰旋转可以表示为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值