几何思维理解欧拉角的死锁问题

欧拉角是什么

这里是欧拉角的维基百科页面。

简单来讲,欧拉角就是在三维空间中对于一个物体旋转变换的一种表示方式。这种方式现在分为动态表示静态表示两种。

首先,我们建立一个空间直角坐标系 Oxyz ,然后分别绕 x轴 / y轴 / z轴 旋转即可用非常直观的动态方式表示一个欧拉角变换,如下图中那个红色的坐标系。

欧拉角的表示

于是我们就可以用 [ α , β , γ ] 的形式来表示 绕 x轴 旋转 α° + 绕 y轴 旋转 β° + 绕 z轴 旋转 γ° 这样一个欧拉角变换。

关于欧拉角的静态表示具体可以参考上方给出的百科页面,而死锁现象只会出现在动态方式的表示中,下文对欧拉角的表示方式若无特殊说明均为动态方式。

恒定不变的万向死锁规律

当我们在一个欧拉角变换中将绕 y轴 的旋转角度调节为 90° ,即 [ α , 90 , γ ] 这个变换,则会发现,此时 αγ 会同时控制同一个坐标轴的旋转角度(例如 [ 20 , 90 , 30 ] 这种变换实际上等价于 [ 50 , 90 , 0 ][ 0 , 90 , 50 ] 这两种变换),失去了一个轴的自由度。

这种现象在任何符合上述条件的欧拉角变换中都会发生,即万向死锁现象

万向死锁的原因

我们可以将上述的这种欧拉角变换表示为旋转矩阵,通过运算可以得出最终的旋转变换确实与 z轴 方向无关。但代数方法较难阐述死锁现象的本质,同时博主在写这篇文章时刚刚高二并没有学习矩阵运算,所以这里用一种直观的几何思维来阐述万向死锁的本质原因:

在第一个动态图中,我们可以看到红色坐标系本身是随着物体转动而转动的,那么为什么会发生死锁呢?

其实,原因恰恰就是坐标系会跟着物体一起转。

这里就用上面的 [ 20 , 90 , 20 ] 来举例说明,当物体 x轴 旋转 20° 后,y轴z轴 也同时跟着物体绕 x轴 旋转了 20° 。此时使物体绕 y轴 旋转 90° ,如果还按照上面的规律,那么 x轴z轴 也跟着物体绕 y轴 旋转了 90° 。

我们知道,空间直角坐标系中的 x轴z轴 是相互垂直且同时与 y轴 垂直的,根据这几个垂直得到的结论就是现在z轴 已经转动到了原来x轴 的位置!

所以此时z轴 转动就很明显等效于原来x轴 转动了,于是绕 z轴 转动的 30° 又被叠加到了绕 x轴 转动的 20° 上。

综上,万向死锁现象的本质就是:欧拉角变换的动态表示中,坐标系会与物体一起转动

后记

实际上,写这篇文章的缘由是我看完B站上的一个视频后不是很理解又自己思考了一下,这篇文章就是思考的过程,如果看不懂的话可以去支持一下视频UP再来看一遍文章,更有助于理解。


几何思维理解欧拉角的死锁问题
https://blog.maxelbk.eu.org/article/euler-angles-deadlock.html
作者
Maxel Black
发布于
2022年9月18日
许可协议