四元数和旋转_【系列专题】无人机理论(三):简单搞定四元数

文章介绍了四元数作为解决欧拉角万向锁问题的手段,阐述了四元数的基本运算规律和姿态表示,以及四元数与欧拉角、旋转矩阵之间的转换。总结了三种姿态表示方法的优缺点,强调四元数在无人机导航飞控中的重要性。
摘要由CSDN通过智能技术生成

7c8ee19b635ea5590b4ea2203ee52421.gif

前沿

  上一篇讲到了欧拉角表示姿态时会遇到万向锁的问题,这就导致同一种空间状态欧拉角的表示方式不唯一。

  当出现万向锁现象时,同一种旋转有无数种欧拉角表示形式,从而导致了欧拉角差值时出现问题,因为当你俯仰角接近90°时,两组千差万别的欧拉角表示可以是同一种旋转。

  所以为了解决这些问题,数学上想出了用四元数的形式来表征姿态的方法。

四元数由来

  四元数是由爱尔兰数学家Hamilton发明的,是发明的不是发现的。

  数学上的很多东西跟物理不一样,它不一定是事物的发展规律。它有时候就是数学家们凭空想象出来的东西,有可能这个东西诞生以后就没有人再用过,也有可能过了很多年,有人发现这个理论可以解释很多现象,或者这个理论可以用来分析很多无法用现有知识解释的现象。

  所以,大家平常没事做的时候可以天马行空,头脑风暴一下,记得把你想到的东西记下来,没准几百年以后就会有用你名字命名的理论存在了。

  回到四元数上来,对于导航飞控的算法,我们需要对四元数有什么了解。

  其实很简单,我们要知道它的基本运算规律,要知道它以什么样的方式表征姿态,要知道它跟其他两个表征姿态的欧拉角和旋转矩阵方式如何互相转换。

  除此之外,还有后续如何使用四元数进行建模和控制律设计,如何在导航算法中得到四元数的状态,这些在以后的篇幅中会进行解释。

  今天,我们就来看看上面几个问题是怎么解决的。

基本运算规律

  四元数是由1个实数加上3个复数组合而成,通常可以表示成w+xi+yj+zk或者(w,(x,y,z)),其中w、x、y、z都是实数,而i^2 = j^2 =k^2 = -1, i^0 = j^0 = k^0 = 1。

  那对于四元数的运算法则,我们要清楚的有以下几个,假设有两个四元数分别为q1=(w1,(x1,y1,z1))和q2=(w2,(x2,y2,z2)),令v1 = (x1,y1,z1),v2= (x2,y2,z2)。

  则:

43b9d01e261f14dc6d4584e9d53d85af.png

  四元数的姿态表示

了解了四元数的基本运算规律后,我们来看下它如何表征姿态。

假设存在一根旋转轴u,有一个绕u轴旋转σ角度的这么一个旋转存在,那这时候代表这个旋转的四元数是这样子的:

b65b65d3fcc90dd833a897c03b84b8df.png

其中u是旋转轴的单位向量,q是一个单位四元数。

0150ccd6052909fa7f7254b7c16b0532.png

那上述这个四元数有什么用呢?

它对任何向量施加以下算子运算后可以得到该向量绕u轴旋转σ角度后的向量:

feea1b86a7cd5335cac9088ab2a3809d.png

至于为什么会有这个结果,我们这儿就不展开证明了。

思路就是你要证明v和w之间的夹角是σ就行,证明的事情交给数学家们去做,我们只需要知道四元数这么写可以用来表征姿态。

其实是表征旋转关系,跟旋转矩阵的表示方法类似,只不过它只需要4个元素,而旋转矩阵需要9个元素。

 欧拉角、旋转矩阵、四元数

四元数转旋转矩阵:

c48678080c7333db73858f1512d9306f.png

旋转矩阵转四元数:

已知旋转矩阵:

dfc0262e65a81467521d0f0d1ecbbe13.png

则四元数为:

b6f990ad24dce24b2079e740019a4d4d.png

欧拉角转四元数:

已知欧拉角:α、β、γ

四元数为:

54b1f9d31c7012740d3cbf0b88f9e704.png

四元数转欧拉角:

已知四元数:

b4ed7662f80af0304d9d73b17114eb6a.png

欧拉角为:

1cdf2f578874642a1c2266abd8c4578d.png

但是当β角度为90度时,四元数反向计算欧拉角时会出现奇点,是无法计算的。

因为这时候简化后的四元数是这样的:

cad620873de8707c41cbc1784fac80d5.png

所以atan2中后面那一项就变成了0:

4c691ee7ae0ec9a926e9504900376ea9.png

这时候我们通常令α=0,然后解出欧拉角的值。

总结

到这里基本上欧拉角、旋转矩阵、四元数的关系就说清楚了。

对于四元数,我们不需要去想象它是怎么旋转的,我们只需要知道它是怎么表征姿态的,后续会告诉你们它是如何进行建模和状态估计的,这就足够了。

那我们来总结一下这三种方法各自的优缺点:

  1. 欧拉角:非常直观,我们可以很容易理解它的意思,也能想象出对应的空间位置,但是存在万向锁现象,导致后面有很多数学问题。

  2. 旋转矩阵:其实旋转矩阵和欧拉角是一个意思,欧拉角就是旋转矩阵,旋转矩阵在一定意义上就是欧拉角,旋转矩阵有9个元素,计算繁杂,而且也不直观。

  3. 四元数:没有奇点,能表征任何旋转关系,而且表示简单,只有四个元素,计算量小,但是不直观。

上一期中两个公式有两个错误,感谢巩师弟指正:ac7c60459a7df7d3749d1c7b313878fb.png

49646a712e1227e29bc36e8e354326c2.png

  本文转载于【无人机系统技术】,作者文龙,北航博士。提供服务:免费分享无人机技术知识,开发经验,实际问题解析,解读开源飞控px4和ardupilot的算法和代码,关注公众号第一时间免费看心得知识。

7bcc02005de1965151a9b68d5b690023.png

7b49e443f199bc27ec60e7797d827048.gif

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值