欧拉角EulerAngle

来源:互联网 发布:网络系统集成工程师 编辑:程序博客网 时间:2024/04/30 22:23

欧拉角

欧拉角使用三个值(xyz)组成的旋转序列表示角位移,这三个值分别为绕三个互相垂直轴(《3D数学基础》说这三个轴互相垂直,但我觉得不太严谨,毕竟还有万向锁一说)的旋转角度。各坐标体系中旋转序列的组合方式可能不同。常用的是heading-pitch-bank(y-x-z)约定,按顺序旋转heading角、pitch角、bank角(下文详细说明)。

优点:表达方式直观简洁,易于使用,内存占用少。
缺点:表达方式不唯一(对于同一个角位移可以使用无数多的欧拉角表示,这会导致某些简单的角位移比较问题都很难回答,如两个欧拉角表示的角位移是否相同)。可以通过限制欧拉角解决。

heading-pitch-bank约定:

  1. 先将物体坐标系与惯性坐标系重合
  2. heading绕此时物体坐标系的y轴旋转
  3. pitch绕heading旋转后的物体坐标系的x轴旋转
  4. bank绕heading-pitch旋转后的物体坐标系的z轴旋转

如图,红绿蓝分别代表xyz轴,带箭头的线是物体坐标系,我也画了三条辅助线(长的)便于观察实际旋转轴:
初始时,物体坐标系与世界坐标系方向一致,实际旋转轴与物体坐标系方向一致:
这里写图片描述
这里写图片描述

heading45°后,实际旋转轴xz改变,y不变
这里写图片描述
这里写图片描述

pitch45°后,实际旋转轴z改变,xy不变
这里写图片描述
这里写图片描述

bank45°后,实际旋转轴xyz都不变
这里写图片描述
这里写图片描述

可以看出heading-pitch-bank约定并不是单纯的绕父坐标系或自身坐标系的x、y、z轴旋转,物体绕实际旋转y轴旋转后才能确定实际旋转x轴,绕实际旋转x轴旋转后才能确定实际旋转z轴。heading影响pitch和bank,pitch只影响bank,bank谁都不影响。

限制欧拉角

限制heading和bank在[-180°,180°]之间,pitch在[-90°,90°]之间。但是还有万向锁问题。

万向锁问题

欧拉角最著名的别名问题:先heading45°再pitch90°和先pitch90°再bank45°是等价的。
这由于pitch±90°度后,heading的旋转轴和bank的旋转轴会在同一平面,导致heading和bank等价(或方向相反)。解决方法是在限制欧拉角中,如果pitch为±90°,则bank强制为0°,这样bank的旋转也由heading来完成。