一个物体的旋转,可以用欧拉角比较直观的描述。 欧拉角使用三个互相正交的转角,把一个旋转分成三次绕不同轴的旋转。
例如,可以将物体的运动放在如下图一所示的坐标系中。
- 绕物体的Z轴旋转,得到偏航角yaw;
- 绕旋转之后的Y轴旋转,得到俯仰角pitch;
- 绕旋转之后的X轴旋转,得到滚转角roll。
这就是用“偏航-俯仰-滚转(yaw-pitch-roll)”3个角度来描述一个旋转。
这种rpy的旋转顺序是ZYX。
图一
在这个过程中,如果pitch=90°时,使得第三次旋转与第一次旋转相同,系统少了一个自由度。这个问题,被称为欧拉角的万向锁的问题。这也是欧拉角的一个缺点。
本文用一个实际例子,来理解欧拉角的万向锁问题。
图二
以一个摄像头为例,如图二。
在这个案例中,摄像头的各面按照骰子的点数命名。
初始状态为:摄像头的镜头(漏孔处-应编号1和对面的6号面)的垂直轴方向为X轴。5号面(与对面的2号面)的垂直轴为Y轴。4号面(及对面的3号面)的垂直轴为Z轴。
第一步,将摄像头沿Z轴方向旋转一个角度θ。得到图三。
图三
摄像头按Z轴旋转后,Z轴没有变化,但X/Y轴,分别转动了角度θ,得到新的X’和Y‘轴。即,仅仅是镜头的前向方向角度有变化。
第二步,将摄像头沿Y’轴方向逆时针旋转角度90°。得到图四。
图四
从摄像头的状态看,摄像头的镜头变成了朝下的方向。即,摄像头的X‘’轴变成了原始状态的-Z轴。
为什么摄像头的镜头会朝下?
由于Y’/X‘轴的平面,与Y/X轴的平面,是同一个平面。把这个平面按Y’轴方向旋转90°时,即是把这个面上的所有物体旋转了90°角。如图四中直立的纸面。
第三步,将摄像头沿X’’轴旋转角度φ。
此时,沿X’’轴旋转,等同于原始坐标状态下,沿Z轴旋转相同的角度。
所以,虽然进行了三个步骤的旋转,从物体的实际方位状态看,确实只进行了两个方向的旋转:
沿Y轴旋转了90度,沿Z轴旋转了θ+φ。少了一个轴向(X)的旋转。
实际上,无论采用什么先后顺序, 在俯仰角(即第二次旋转)为±90°时,第一次旋转和第三次旋转将使用同一个轴,使得系统失去了一个自由度,由三次旋转变为二次旋转。