无人机姿态解算:四元数及其与欧拉角的转换

引言:获得无人机飞行时的飞行姿态对于无人机稳定控制来说至关重要。无人机主要通过传感器数据融合来进行状态估计,常用于无人机的传感器包括:MPU(包含了三轴加速度计和三轴陀螺仪,有的还包括磁力计),气压计,超声波传感器,光流计等。通过传感器数据融合算法可以得到无人机的最优状态估计值,包括无人机的姿态角,俯仰pitch、横滚、偏航角等。通过传感器的数据来求得无人机姿态角的过程就是姿态解算,本文详细推导了四元数表示旋转的过程及其与欧拉角的变换的过程。
描述姿态的方法有很多,包括欧拉角,方向余弦,四元数等。欧拉角描述姿态会出现万向锁的问题,方向余弦计算量大,而四元数法大量运用于电脑绘图上表示三维物体的旋转及其方位,相对其它旋转表示法,四元数具有数据量更少,速度更快,插值平滑,可有效避免万向锁以及运算量大等优点。因此采用四元数法来获得无人机的姿态角信息能大大提高姿态解算的效率与准确性。

一:四元数的基本概念与性质
四元数是爱尔兰数学家汉密尔顿在1843年提出的数学概念,它将复数所描述的三维空间拓展到四维空间,其基本形式可以写成:

四元数也可以写成:
其中q0是Q的实部,是一个标量, q是虚部,表示四元数的矢量部分,也可以表示为:


其共轭复数定义为:

基本性质:
1:四元数的范数,即四元数的模:
2:归一化的四元数可以计算为:

3:四元数的逆:

对于单位四元数

4:四元数的运算:

二:四元数如何表示旋转

1:二维空间内的旋转
例如:在复平面内有一个点

将它绕原点旋转30度后,它形成的新复数是什么?
解:绕原点旋转30度,模长为1的复数:

将它乘以4+i,可得:

即为原来的复数绕原点旋转30度后的复数。
你会惊奇的发现在二维复数平面内绕原点旋转一个a+bi的复数,旋转角度为θ,则旋转后新的复数可以表示为在原复数的基础上乘以cos(θ)+sin(θ)i,复数cos(θ)+sin(θ)可以表示二维平面内的任意旋转,那么在三维空间内的任意旋转该如何表示呢?答案就是:四元数。

2:三维空间内的旋转
一个有固定点的向量绕某个轴转过特定的角度θ可以到达任何姿态。转轴的方向向量可以表示为一个单位向量:

则描述该转动的四元数可以表示为:

与二维旋转有极大的相似度,只不过角度变为了原来的一半,原来的一维向量变成了三维向量。
旋转后的向量可以计算为:

三维空间的矢量可以看做标量为0的四元数:

含义:矢量q绕旋转轴v旋转θ角后得到新的矢量的坐标,旋转的角度和轴向由四元数q决定.

3:四元数表示坐标系旋转:
一个矢量v相对于坐标系oxyz固定,

坐标系转动了q得到一个新的坐标系,v在新坐标系的矢量表示为

应用四元数乘法可以得到:
即:

三:四元数与欧拉角的转换


表示机体坐标系到世界坐标系的旋转矩阵,设旋转方式为:先绕z轴旋转ψ角,再绕新的y轴旋转θ角,最后绕新的x轴旋转ϕ角,内旋方式,则旋转矩阵为(可参考上篇博客《旋转矩阵、欧拉角、万向锁详解》):

新的坐标可计算:

对比利用四元数得到的变换关系,对应元素相等可以得到欧拉角与四元数的转换关系:

便可以利用四元数求解欧拉角,由此可见,四元数包含了所有的姿态信息,而且只有四个元素,运算量小,且可以避免欧拉角万向锁的问题,目前,无人机的姿态解算一般都采用四元数。

四:四元数实际求解
采用四元数对飞行器进行姿态解算,只需要在每个时钟采样周期循环迭代运算出新的四元数,就可以求得欧拉角信息。在此,构建四元数关于时间的微分方程,来研究四元数的变化规律。
由于载体的运动,四元数Q是变量,即q0、q1、q2、q3是时间的函数,刚体绕瞬时转轴ve转过θ角,其中上标e代表earth地理坐标系,上标b为机体坐标系,四元数为

对时间进行微分:

这就是四元数姿态结算算法的最终形式。

参考:《多旋翼飞行器设计与控制》全权
《多旋翼无人飞行器嵌入式飞控开发指南》林庆峰

无人机姿态解算:四元数及其与欧拉角的转换相关推荐

  1. 基于STM32F407四旋翼无人机 --- 姿态解算讲解(四元数)(叉积法融合陀螺仪数据和加速度数据)(五)

    基于STM32F407四旋翼无人机 --- 姿态解算讲解(五) 姿态解算 姿态解算定义 欧拉角 四元数 四元数性质 方向余弦矩阵 四元数方向余弦矩阵 叉积法融合陀螺仪数据和加速度数据 叉积运算 一阶龙 ...

  2. 姿态解算 四元数、方向余弦、欧拉角、Mahony滤波、四轴

    姿态解算 四元数.方向余弦.欧拉角.Mahony滤波 说明:本文只是做了一些总结,需要一些对这方面的基础概念的了解. 一般人千万不要试图去深入探讨四元数 1. 方向余弦矩阵 方向余弦矩阵是使用欧拉角( ...

  3. UAV012_V2(二):无人机姿态解算(深入篇)

    写这篇博客,已经是第三次了,花了一个周,一遍遍修改,只为了理解好姿态解算并表述出来. 之前写过一篇姿态解算的博客,UAV021(四):飞控传感器数据融合与姿态估计,在小角度假设条件(俯仰角.滚转角都很 ...

  4. 飞行器控制笔记(二)——姿态解算之坐标变换与欧拉角更新姿态

    飞行器控制笔记(二)--姿态解算之坐标变换与欧拉角更新姿态 飞行器控制笔记(二)--姿态解算之坐标变换与欧拉角更新姿态 一.基本假定 二.坐标变换矩阵 2.1绕z轴旋转 2.2绕y轴旋转 2.3绕x轴 ...

  5. 无人机姿态解算_扩展卡尔曼滤波(2)

    一.扩展卡尔曼滤波 KF和EKF的公式对比(基本没差别) 二.扩展卡尔曼五个公式 利用扩展卡尔曼滤波估计四元数. 下图是论文中的截图.可以和前面的卡尔曼滤波估计高度文章的那五个公式对应一下. 观测矩阵 ...

  6. 基于四元数互补滤波的无人机姿态解算

    导航坐标系为东北天(ENU),其与机体坐标系(b)的方向余弦矩阵为CbcC_{b}^{c}Cbc​

  7. 四轴飞行玩具的姿态解算的原理2.欧拉角及其表示

    回顾: 前面讲了,飞行器坐标与地球坐标之间的夹角,就是我们要求的姿态. 姿态的表示方法有两类:无限转动法, 和有限转动法. 用于表示机体瞬间小角度变化的,是无限转动法. 其中常用于导航,工程计算的,表 ...

  8. Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍

    一.开篇 很久没更新blog了, 最近研究的东西比较杂乱,也整理了很多东西,没有来的及更新,最近发现很多小伙伴都开始写blog了,在不更新就要"被落后了".兄弟们,等等我啊~~~ ...

  9. 驱动LSM6DS3TR-C实现高效运动检测与数据采集(5)----姿态解算

    概述 lsm6ds3trc包含三轴陀螺仪与三轴加速度计. 姿态有多种数学表示方式,常见的是四元数,欧拉角,矩阵和轴角.他们各自有其自身的优点,在不同的领域使用不同的表示方式.在四轴飞行器中使用到了四元 ...

最新文章

  1. 返璞归真的Open×××的p2p模式
  2. linux—用nc命令监控检测服务器端口
  3. vs2013如何选择一个solution中的project来运行
  4. 我就是古董店的那个店小二……专司收藏……
  5. C++——lambda表达式
  6. java 个税计算_【JAVA300例】10、计算个人所得税
  7. ffmpeg-从mp4、flv、ts文件中提取264视频流数据
  8. Java并发学习笔记:ReentrantLock
  9. 年终总结做得好,升职加薪少不了,仅需1个技巧,10分钟完成
  10. Collections集合工具类的方法
  11. pintos project (2) Project 1 Thread -Mission 1 Code
  12. jupternote不同类之间相互调用(调用ipynb文件)
  13. 基于Java的汽车租赁系统
  14. vgextend 扩容卷组,即把物理卷加入卷组
  15. android exifinterface 经纬度,Android10获取图片的地理位置信息[GPS位置]
  16. ppt制作要怎样才会生动形象并深入人心呢
  17. Oracle数据库基础练习(一):Oracle数据库查询操作练习81题
  18. 搜索引擎的查找算法实现
  19. 六级阅读翻译——2017.11.13
  20. 微信小程序开发工具调试没问题,真机调试Provisional headers are shown

热门文章

  1. 菜鸟网络工程师的成长笔记——第19天(2016.09.05)
  2. 移动电影院加速海外业务拓展
  3. Redash - 强大的开源数据可视化平台
  4. bochs配置文件 oslab/bochs/bochsrc.bxrc
  5. Vue学习笔记(0504)
  6. Android资讯新闻类App(头条、网易等),频道管理集成之数据库存储
  7. Arduino利用键盘矩阵实现计算器
  8. 合伙做生意长久的原则(不管做哪一行都要阅读)
  9. Spring中IOC的理解(通俗易懂版)
  10. 简约但不简单 干净但有质感