惯性导航之认识欧拉角

来源:互联网 发布:ubuntu 写入硬件时间 编辑:程序博客网 时间:2024/05/21 08:57

惯性导航中不用到欧拉角是不太可能的,特别是飞控等一些需要用到3轴角度的地方,这一篇写一下这段时间对欧拉角的一些认识。


工具:

  • 欧拉旋转、矩阵运算
  • MEMS陀螺仪(微机电陀螺仪)

开始正文


一、什么是欧拉角?

欧拉角是用来唯一地确定定点转动明体位置的三个一组独立角参量,由章动角θ、进动角ψ和自转角φ组成,为L.欧拉首先提出,故得名。

欧拉角是一种常用的描述方位的方法。这项技术是著名数学家Leonhard Euler(1707~1783)的名字命名的,他证明了角位移序列等价于单个角位移。

当然看过上面的定义并没有什么作用,这里我们可以这样理解:在一个三维的直角坐标系中,一个任意向量以任意方向做一次旋转,旋转会有角位移,也就是会得到一个旋转角。换种方式,如果用让这个向量做三次旋转(这里旋转的方式不能确定,后面会说)达到相同的效果,这样三步会得到三个旋转角,用这样的方式得到的三个旋转角就是欧拉角。简单点说就是,将一个旋转分解成三次旋转,这样每次的旋转角就是欧拉角。

由于欧拉角的定义太广义,实际中会有比较具体的定义:

  • 静态定义:3个欧拉角是与固定轴的夹角,有12中顺规定义(维基百科)
  • 动态定义:围绕世界坐标系旋转、围绕载体坐标系旋转

12中顺规:

  • 非对称型欧拉角: XYZ,XZY,YXZ,YZX,ZXY,ZYX
  • 对称型欧拉角: XYX,XZX,YXY,YZY,ZXZ,ZYZ

其中具体旋转的表示在这里就不详细说了,后面写陀螺仪部分的时候会详细讲解其中的几种,我们使用的是动态定义。


二、为什么我们使用欧拉角?

如果使用过陀螺仪,就会很清楚的知道,三轴陀螺仪返回来的数据是三个轴上的角速度,经过积分之后我们就会得到3个角度(欧拉角),这三个角度分别是围绕着载体坐标系旋转的,所以这样是属于上面欧拉角定义中动态定义的第二种,不过我们这样直接得到的欧拉角并没有什么限制,是存在很大的问题的。关于欧拉角的限制会在后面的文章中详细说明。

我们使用的是一种飞控中常用的欧拉角系统——“Yaw- Pitch - Roll(或者叫’heading-pitch-bank‘)”系统,这样可以比较直观方便的表示载体(比如飞行器)的姿态:

  • Yaw(俯仰角):绕陀螺仪X轴旋转;
  • Pitch(偏航角):绕陀螺仪Z轴旋转;
  • Roll(翻滚角):绕陀螺仪Y轴旋转;

这样就得到了三个欧拉角,并且可以很方便直观的表示载体的旋转了。


三、为什么我们不使用欧拉角?

那我们到底用不用欧拉角呢?用,但是只是使用了一部分。

我们已经知道MEMS陀螺仪会返回给我们三个角速度,既然是角速度,那么我们就需要积分得到角度,主要有下面几种积分方法:

  • 直接用角速度对时间积分
  • 欧拉角积分
  • 四元数积分
  • 方向余弦积分

我们使用的是四元数积分,四元数的具体内容在后面说。先说一下为什么使用四元数积分。

直接积分会有很大的问题,得到的三个角度并不完全正确,具体原因与欧拉角的缺陷有关,后面说。这种积分适用于只对平面,也就是只绕一个轴旋转,这样不会出现相互干扰。

欧拉角的好处有很多,比如非常直观的表示旋转,但是它也有比较麻烦的缺点——万向节死锁(后面细讲),以及进行欧拉角的计算涉及大量的三角运算,计算代价比较大。

方向余弦积分需要的运算量更大,不适合惯导系统的实时性要求。

四元数积分既没有‘万向节死锁’,又计算量小,是比较理性的积分方法,我们采用这种方法。


边学边更,后面的理解起来会更加复杂,…….

0 0