万向锁视频详解:
1.欧拉角有两种类型:
静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。
动态:即绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态。
2.静态欧拉角不存在万向锁问题,只有动态欧拉角会引起万向锁。
3.对于分别绕三个坐标轴旋转的情况,有以下性质:
物体的任何一种旋转都可分解为分别绕三个轴的旋转,但分解方式不唯一。
如:假设绕y轴旋转为heading,绕x轴旋转为pitch,绕z轴旋转为bank,则heading45°---->pitch90°等价于pitch90° ----> bank45°。
4.由于欧拉角的任意一个旋转,都可以分解,所以就有了旋转顺序。
如heading xx°---->pitch xx°----->bank xx°,对于左手坐标系就是,先绕Y轴旋转xx°--->绕X轴旋转xx°---->绕Z旋转xx°
而且对于动态欧拉角来说,旋转父层级的轴会带动子层级的轴一起旋转。如旋转顺序Y--->X--->Z。写成父子层级关系就是:
---Y(最父层级)
---X
---Z
旋转Y轴时,X,Z轴和物体都会跟着旋转;
旋转X轴时,Z轴和物体会跟着旋转;
旋转Z轴时,只有物体会旋转。
一个万向锁的例子如下:
(1)用3个旋转圆环来模拟绕笛卡尔左手坐标系3个轴x(红),y(绿),z(蓝)的旋转,它们的旋转顺序为y--->x--->z,父子层级如下图坐上角所示。
(2)由于是动态欧拉角,当旋转X轴(红)90°,Z轴(蓝)也会跟着转90°。
(3)此时,会导致Z轴与Y轴共一个平面。
(4)如果此时你想让箭头的头部往下旋转,会发现没有旋转轴了。
(5)消失的旋转轴:
如果此时你还想让箭头的头部往下旋转。就会导致箭头的头部行动轨迹并不是沿着某个轴旋转。
在最上面的定理中,任何旋转都能被分解为多个绕某个轴旋转的步骤(如一个旋转被分解为:先绕Y轴旋转xx°---->绕X轴旋转xx°---->再绕Z轴旋转xx°)。
当两个旋转轴共面后(产生万向锁后),并不能将这个旋转分解为多个绕某个轴旋转的步骤,而是自己画出了一个不同的弧线,这种旋转就是不合理的。
此时的现象就是万向锁。
(6)解决这个万向锁的方法:改变旋转顺序,Y--->X--->Z 变为 Y--->Z--->X
此时父子层级表示为:Y仍然是最父层级,X与Z调换位置
---Y
---Z
---X
但是改变旋转顺序(父子层级)并不能完全避免万向锁,他还是会出现。
接着上图,如图Z轴旋转90°,因为父子层级关系,X轴会跟着旋转90°,此时还是会导致Y轴与X轴共面:
所以无论什么样的旋转顺序,只要使用动态欧拉角都会产生万向锁。