欧拉角与万向节死锁

前言:结合欧拉角一些基础知识,对万向节死锁的相关问题进行了一下梳理。因水平有限,有不当之处,还请指正。

1、欧拉角

本部分内容大部分参考了bnrmaster 的博客欧拉角(Euler angles)
欧拉角指在三维空间通过指定与三个旋转轴相关联的三个角度以表示任意方向的方法。

1.1 分类

局部参考坐标系:不随刚体转动的静态坐标系。x-y-z。
固连坐标系:与刚体固连,随刚体转动而转动的动态坐标系X-Y-Z。

静态欧拉角(外旋):围绕局部参考坐标系x-y-z的坐标轴的旋转角度进行标识
动态欧拉角(内旋):围绕固连坐标系的坐标轴的旋转角度进行标识。

按照旋转轴的选取规则不同可分为经典欧拉角(Proper Euler angles)泰特布莱恩角(Tait-Bryan-angles)

Proper Euler angles (z-x-z, x-y-x, y-z-y, z-y-z, x-z-x, y-x-y)
Tait–Bryan angles (x-y-z, y-z-x, z-x-y, x-z-y, z-y-x, y-x-z)

1.2 经典欧拉角(内旋)

维基百科
内旋是发生在正在旋转的坐标系中的坐标轴上的旋转。维基百科中的一张动图描述了经典欧拉角的内旋变换过程,具体的旋转过程见下面两幅图。
在这里插入图片描述在这里插入图片描述
x-y-z为局部参考坐标系,X-Y-Z为固连坐标系(随刚体一起转动)。
首先,刚体绕局部参考坐标系的z轴旋转α角,然后,绕旋转后的坐标轴X轴(N轴),旋转β角,最后,绕再次旋转后的Z轴旋转γ角。
其中,N轴为交轨线,是xy和XY坐标平面相交处的一条线。换句话说,这条线,穿过这两个坐标系原点,并且垂直于zZ平面。
因此欧拉角可以定义如下:
α (or \varphi) x轴和N轴之间的角度。
β (or \theta) z轴和Z轴之间的角度。
γ (or \psi) N轴和X轴之间的角度。
含义为:
α 代表绕z轴的旋转,
β 代表绕N轴的旋转,
γ 代表绕Z轴的旋转.
进一步可以表示为:
α (or \varphi) 代表绕z轴的旋转
β (or \theta) 代表绕x’轴的旋转,
γ (or \psi) 代表绕 z″轴的旋转.
其中:
x-y-z (初始转改)
x’-y’-z’ (经过第一次旋转)
x″-y″-z″ (经过第二次旋转)
X-Y-Z(经过第三次旋转的最终状态)

角度范围:
旋转角通常根据右手坐标系进行定义。顺时针的旋转的角度是正值,逆时针时的旋转的角度是负值。左手坐标系的约定一般很少采用。

对于α 和 γ, 范围是2 π的模. 一个合法的范围可能如: [−π, π].
对于 β, 范围包含π (但是不能说是π的模). 例如可以是 [0, π] 或者[−π/2, π/2].

角 α, β 和 γ 一般都是单独取值的,有一种例外情况,那就是xy平面和XY平面重合的情况,z轴和Z轴拥有相同的方向或者相反的方向。
实际上,如果z轴和Z轴相同,β = 0 并且 只有(α + γ)是一个特殊的定义(不是两个独立的值),并且,相似的,如果z轴和Z轴如果是方向相反,β = π和 (α − γ) 是个特殊的定义(不是两个独立的值)。这种情况在应用中被称作“万向节锁”。后面会对万向节锁进行详细介绍。

1.3 经典欧拉角(外旋情况)

外旋是用围绕局部参考坐标系x-y-z的坐标轴的旋转角度进行标识的。 x-y-z是固定不动的,而X-Y-Z旋转, 开始时X-Y-Z和x-y-z是重合的,经过三个绕x-y-z轴的基本旋转。具体步骤如下:
在这里插入图片描述
1、XYZ坐标系绕z轴α. 现在X轴与x轴的角度为α.
2、XYZ坐标系再绕x轴β. 现在Z轴与z轴的角度为β.
3、XYZ第三次绕z轴旋转γ.
3、经典欧拉角(约定)
三个基本旋转可以发生在初始坐标系的固定的坐标系的xyz轴(内旋)也可以发生在正在旋转中的XYZ坐标系的坐标轴上(外旋)。
有6种为经典欧拉角选择旋转轴的方式。
z-x’-z″ (内旋) 或 z-x-z (外旋)
x-y’-x″ (内旋) 或 x-y-x (外旋)
y-z’-y″ (内旋)或 y-z-y (外旋)
z-y’-z″ (内旋)或 z-y-z (外旋)
x-z’-x″ (内旋)或 x-z-x (外旋)
y-x’-y″ (内旋)或 y-x-y (外旋)

1.4 泰特布莱恩角

欧拉角的第二种表达形式被叫做泰特布莱恩角。这种表达形式使用三个轴上的旋转角度。(例如 x-y-z或者x-y’-z’’),而经典欧拉角的第一个旋转角度和第三个旋转角度都是围绕同一个轴的。它也为内旋和外旋。其中,内旋是发生在正在旋转的坐标系中的坐标轴上的旋转,外旋是用围绕局部参考坐标系x-y-z的坐标轴的旋转角度进行标识。在内旋情况下,其**交轨线(N轴)**是两个不对应的平面的交线(当欧拉角为0时,互相垂直的两个平面,例如:xy和YZ平面)。
在这里插入图片描述
z-y’-x’'顺序, 序列(内旋; N 与 y’重合)

其也有6种顺序可供选择
有6种旋转的顺序可供选择,分别是:
x-y’-z″ (内旋) or x-y-z (外旋)
y-z’-x″ (内旋) or y-z-x (外旋)
z-x’-y″ (内旋) or z-x-y (外旋)
x-z’-y″ (内旋) or x-z-y (外旋)
z-y’-x″ (内旋) or z-y-x (外旋)
y-x’-z″ (内旋) or y-x-z (外旋)

2 万向节死锁

本部分大部分内容参考了博客Unity编程 ——欧拉角与万向节死锁
以及如何通俗地解释欧拉角?之后为何要引入四元数?
万向节死锁只会在动态欧拉角的情况下产生(内旋)。

平衡环架长下图这个样子
在这里插入图片描述
平衡环架可以看成互相交叉,三层嵌套的圆环。其有三个方向的旋转自由度。
其与欧拉角的工作方式是相似的。可以从下面动图中看出,图片来自Euler Angle Class
绕Y轴的旋转定义为Yaw(偏航)
在这里插入图片描述
绕X轴的旋转定义为Pitch(俯仰)
在这里插入图片描述
绕Z轴的旋转定义为Roll(桶滚)
在这里插入图片描述其可以类比于y-x’-z″ (内旋)情况。旋转步骤如下:
1、绕物体的 Y 轴旋转,得到偏航角 Yaw
2、绕旋转之后的 X轴旋转,得到俯仰角 Pitch
3、绕旋转之后的 Z 轴旋转,得到滚转角 Roll
如果在第二次旋转的时候,旋转了90度,则第三次旋转与第一次旋转的轴重合,就发生了万向节死锁,使系统丢失了一个自由度。具体坐标轴旋转情况见下图。(图片来自于视觉14讲)

1、绕物体的 Y 轴旋转在这里插入图片描述2、绕绕旋转之后的 X轴旋转90度
在这里插入图片描述3、绕旋转之后的 Z 轴旋转,此时Z轴与第一次旋转的Y轴重合,发生了万向节死锁(丢失了 Roll的自由度
在这里插入图片描述对应于万向节的情况如下:
1、绕Y 轴Yaw
在这里插入图片描述2、绕X轴的 Pitch
在这里插入图片描述如果Pitch角度为90度,则旋转后出现如下情况
在这里插入图片描述
3、此时,绕Z轴的Roll变成了这种情况,出现了万向节死锁
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值