四元数的历史

推荐观看3blue1brown的视频和交互操作动画,链接:
  四元数的可视化
  交互操作动画
待续。。。
计算坐标系与描述坐标系。
采用四元数进行计算的好处(姿态解算):

  1. 无奇点,方程不会退化;
  2. 比方向余弦法需解算9个联立微分方程相比,仅需要4个联立微分方程;
  3. 四元数微分方程的约束条件只有1个,比方向余弦法中的6个要少得多。

四元数的运算法则

定义1: 称量qqq
q=q0+q1i+q2j+q3k(1)q = q_0 + q_1 i + q_2 j + q_3 k \tag{1} q=q0​+q1​i+q2​j+q3​k(1)
为四元数,其中q0q_0q0​、q1q_1q1​、q2q_2q2​、q3q_3q3​为任意实数。q0q_0q0​称为四元数的标部,q1i+q2j+q3kq_1 i+q_2 j+q_3 kq1​i+q2​j+q3​k称为四元数的矢部,并记作q\bold{q}q。因此qqq也可以记作:
q=q0+q(2)q = q_0 + \boldsymbol{q} \tag{2}q=q0​+q(2)
定义2: iii、jjj、kkk满足如下运算法则:
{i2=j2=k2=−1jk=−kj=iki=−ik=jij=−ji=k(3)\left \{ \begin{aligned} i^2 &= j^2 = k^2 = -1 \\ jk &= -kj = i \\ ki &= -ik = j \\ ij &= -ji = k \end{aligned} \right. \tag{3} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​i2jkkiij​=j2=k2=−1=−kj=i=−ik=j=−ji=k​(3)
定义3: 称q∗q^*q∗为qqq的共轭四元数:
q∗=q0−q1i−q2j−q3k=q0−q(4)q^* = q_0 - q_1 i - q_2 j - q_3 k = q_0 - \boldsymbol{q}\tag{4} q∗=q0​−q1​i−q2​j−q3​k=q0​−q(4)
定义4: 设ppp、qqq为任意两个四元数:
p=p0+p1i+p2j+p3kq=q0+q1i+q2j+q3kp = p_0 + p_1 i + p_2 j + p_3 k \\ q = q_0 + q_1 i + q_2 j + q_3 k p=p0​+p1​i+p2​j+p3​kq=q0​+q1​i+q2​j+q3​k
则ppp与qqq的相加定义为:
p+q=(p0+q0)+(p1+q1)i+(p2+q2)j+(p3+q3)k(5)\begin{aligned} p + q &= (p_0 + q_0) + (p_1 + q_1)i \\ &+ (p_2 + q_2)j + (p_3 + q_3)k \tag{5} \end{aligned} p+q​=(p0​+q0​)+(p1​+q1​)i+(p2​+q2​)j+(p3​+q3​)k​(5)
称p+qp + qp+q 为四元数ppp与qqq之和。
定义5: 设ppp、qqq为任意两个四元数,则ppp与qqq的相乘定义为:
pq=(p0+p1i+p2j+p3k)(q0+q1i+q2j+q3k)=p0q0−(p1q1+p2q2+p3q3)+(p1i+p2j+p3k)q0+p0(q1i+q2j+q3k)+[(p2p3−p3q2)i+(p3q1−p1q3)j+(p1q2−p2q1)k](6)\begin{aligned} pq &= ( p_0 + p_1 i + p_2 j + p_3 k)(q_0 + q_1 i + q_2 j + q_3 k) \\ &= p_0 q_0 - (p_1 q_1 + p_2 q_2 + p_3 q_3) + (p_1 i + p_2 j + p_3 k) q_0 \\ &+ p_0 (q_1 i + q_2 j + q_3 k) + [(p_2 p_3 - p_3 q_2)i \\ &+ (p_3 q_1 - p_1 q_3)j + (p_1 q_2 - p_2 q_1)k] \end{aligned} \tag{6} pq​=(p0​+p1​i+p2​j+p3​k)(q0​+q1​i+q2​j+q3​k)=p0​q0​−(p1​q1​+p2​q2​+p3​q3​)+(p1​i+p2​j+p3​k)q0​+p0​(q1​i+q2​j+q3​k)+[(p2​p3​−p3​q2​)i+(p3​q1​−p1​q3​)j+(p1​q2​−p2​q1​)k]​(6)
称pqpqpq为四元数ppp与qqq的积。

定义6:

定义7:

定义8:

四元数的对数运算

一般情况下,如无特殊说明,我们所指的四元数就是单位四元数。
单位四元数q=[η,ξ]q = [\eta, \boldsymbol{\xi}]q=[η,ξ]的对数定义为:
ln⁡q=[0,arccos⁡η21−η2ξ]\ln q = \left [ 0, \frac{\arccos \eta}{2 \sqrt{1 - \eta^2}} \boldsymbol{\xi} \right] lnq=[0,21−η2​arccosη​ξ]

单位四元数表示旋转,一个绕单位轴n\boldsymbol{n}n,转过角度ϕ\phiϕ的坐标系转动,可以表示为:
q=[cos⁡(ϕ2),sin⁡(ϕ2)n]q = \left [ \cos \left( \frac{\phi}{2} \right), \sin \left( \frac{\phi}{2} \right) \boldsymbol{n} \right] q=[cos(2ϕ​),sin(2ϕ​)n]

对上式所示的使用欧拉轴和角表示的单位四元数,其等价形式为:
ln⁡q=[0,ϕ2n]\ln q = \left [ 0, \frac{\phi}{2} \boldsymbol{n} \right] lnq=[0,2ϕ​n]

简写为
ln⁡q=ϕ2n\ln q = \frac{\phi}{2} \boldsymbol{n} lnq=2ϕ​n

定理1: 已知随时间变化的四元数q(t)q(t)q(t)和角速度ω(t)\boldsymbol \omega (t)ω(t),有如下等式成立:
12ddt(ΓTΓ)=ΓTω\frac{1}{2} \frac{\text{d}}{\text{d} t} (\Gamma^T \Gamma) = \Gamma^T \boldsymbol \omega 21​dtd​(ΓTΓ)=ΓTω

其中,Γ=2ln⁡q\Gamma = 2 \ln qΓ=2lnq

四元数表示旋转

aaa

四元数运动学方程

欧拉运动学方程是用欧拉角与欧拉角速率表示刚体的角速度。刚体的角速度同样可以用四元数及其导数进行表示,称为四元数运动学方程

姿态动力学方程

Ixω˙x+(Iz−Iy)ωyωz=LxIyω˙y+(Ix−Iz)ωxωz=LyIzω˙z+(Iy−Ix)ωxωy=Lz\begin{array}{c} I_x \dot{\omega}_x + (I_z - I_y) \omega_y \omega_z = L_x \\ I_y \dot{\omega}_y + (I_x - I_z) \omega_x \omega_z = L_y \\ I_z \dot{\omega}_z + (I_y - I_x) \omega_x \omega_y = L_z \end{array} Ix​ω˙x​+(Iz​−Iy​)ωy​ωz​=Lx​Iy​ω˙y​+(Ix​−Iz​)ωx​ωz​=Ly​Iz​ω˙z​+(Iy​−Ix​)ωx​ωy​=Lz​​

四元数运动学方程

q˙=12qω\dot{q} = \frac{1}{2} q \boldsymbol{\omega} q˙​=21​qω

用四元数表示的欧拉角

{ϕ=ϕ(q0,q1,q2,q3)ψ=ψ(q0,q1,q2,q3)θ=θ(q0,q1,q2,q3)(xx)\left \{ \begin{array} {c} \phi = \phi(q_0,q_1, q_2, q_3) \\ \psi = \psi(q_0,q_1, q_2, q_3) \\ \theta = \theta(q_0,q_1, q_2, q_3) \\ \end{array} \right. \tag{xx} ⎩⎨⎧​ϕ=ϕ(q0​,q1​,q2​,q3​)ψ=ψ(q0​,q1​,q2​,q3​)θ=θ(q0​,q1​,q2​,q3​)​(xx)
利用上式可消除姿态动力学方程右端的欧拉角,以及四元数方程求解后再变换为欧拉角。

用欧拉角表示的四元数

{q0=q0(ϕ,ψ,θ)q1=q1(ϕ,ψ,θ)q2=q2(ϕ,ψ,θ)q3=q3(ϕ,ψ,θ)q02+q12+q22+q32=1\left \{ \begin{array} {l} q_0 = q_0(\phi, \psi, \theta) \\ q_1 = q_1(\phi, \psi, \theta) \\ q_2 = q_2(\phi, \psi, \theta) \\ q_3 = q_3(\phi, \psi, \theta) \\ q_0^2 + q_1^2 + q_2^2 + q_3^2 = 1 \end{array} \right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​q0​=q0​(ϕ,ψ,θ)q1​=q1​(ϕ,ψ,θ)q2​=q2​(ϕ,ψ,θ)q3​=q3​(ϕ,ψ,θ)q02​+q12​+q22​+q32​=1​
  利用上式可把欧拉角表示的运动初始条件变换为四元数表示的运动初始条件。
  应用上述方程可以把姿态动力学问题变换为以(ωx,ωy,ωz,q0,q1,q2,q3)T(\omega_x, \omega_y, \omega_z, q_0, q_1, q_2, q_3)^T(ωx​,ωy​,ωz​,q0​,q1​,q2​,q3​)T为状态的动力学方程。

导航计算图

关于万向节死锁(Gimbal Lock)

万向死节锁是由于动态欧拉角导致的。物体绕世界坐标系的轴所旋转的角度就是静态欧拉角;物体绕自身坐标系的轴所旋转的角度就是动态欧拉角。世界坐标系就是我们常说的惯性系。
描述的时候采用的是世界坐标系,旋转的时候用的是物体坐标系,所以导致认知上的错误。

基础-四元数基础知识-用于航天器姿态动力学相关推荐

  1. ROS TF2 中的 四元数 基础部分

    ROS TF2 中的 四元数 基础部分 1.四元数的组成 2.将 RPY坐标系 下的 角度 转换为 四元数 3.如何通过四元数 做 旋转 4.四元数转置 5.求两个姿态(四元数)的旋转 5. 完毕 这 ...

  2. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  3. 学习MSCKF笔记——四元数基础

    学习MSCKF笔记--四元数基础 学习MSCKF笔记--四元数基础 1. 四元数基本性质 1.1 加法 1.2 乘法 1.3 共轭 1.4 模 1.5 逆 1.6 单位四元数 1.7 指数 1.8 对 ...

  4. 《Sony Vegas Pro 12标准教程》——第1章 基础篇——基础知识 1.1 影视剪辑的概念...

    本节书摘来自异步社区<Sony Vegas Pro 12标准教程>一书中的第1章,第1.1节,作者 糜正磊,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 ...

  5. 全站最全面的Python 基础入门必备知识大全,学完即就业!【建议收藏仔细学习】

    前言: Python作为21世纪最火的编程语言,市面上各种学习视频层出不穷,关于Python的学习氛围也逐渐浓厚!!最近一段时间越来越多的知友们在私信我,希望我出一期python基础入门的内容,肝了N ...

  6. django基础到高手知识笔记总结,50页笔记,共10大模块(第一期).md

    django基础到高手知识笔记总结,50页笔记,共10大模块(第一期).md 完整笔记在这: Django基础到高手完整笔记 完整笔记目录: 第一期笔记内容 Python Web 框架要点 1. We ...

  7. Linux基础入门篇知识回顾

    Linux基础入门篇知识回顾 一.回顾书籍 二.基础知识 1.计算机基础知识 1.1计算机的特点及发展趋势 ①特点 ②发展趋势 1.2计算机系统组成 ①计算机硬件概念 ②计算机硬件各部分功能 ![在这 ...

  8. (一)JS 基础篇—基础知识总结

    ⛺️ 欢迎大家拜访我的:个人博客 ⛽️ 前端加油站之[JavaScript]⛽️ 内容 地址 (一)JS 基础篇-基础知识总结 ⛳️ [快来点点我 ~] (二)JS 基础篇-函数与作用域 ⛳️ [快来 ...

  9. Python 零基础到基础:入门必备知识

    目录 1 标识符 2 关键字 3 引号 4 编码 5 输入输出 6 缩进 7 多行 8 注释 9 数据类型 10 运算符 10.1 常用运算符 10.2 运算符优先级 基础 进阶 爬虫 自动化 数据分 ...

最新文章

  1. 论新时代软件测试人员的工作之道(二)之让评审更有意义
  2. TortoiseSVN在Windows下的使用
  3. php array_merge内存不够,php array_merge函数使用需要注意的一个问题
  4. sklearn多分类问题
  5. weblogic集群的资料
  6. Zookeeper分布式一致性原理(三):Chubby分布式锁服务
  7. UIAlertView UIActionSheet随笔笔记
  8. 时间复杂度和空间复杂度[数据结构]
  9. TIOBE 4月编程语言排行榜:MATLAB即将跌出TOP 20
  10. codeblocks修改MINGW位置使它能编译Build
  11. 数据结构-02-链表数据结构之双链表和循环链表
  12. CCNA 网络安全答案汇总
  13. 接口压力测试神器Jmeter
  14. C4D插件X-Particles粒子特效(二)
  15. hadoop如何解除safemode-安全模式
  16. 30个最快速的Webnbsp;Proxy代理
  17. 年审是当月还是当天_年审年检7月当月审可以吗
  18. 【HNOI模拟By lyp】Day2
  19. Java读取Yaml文件
  20. gets 、getchar 、fgets 、scanf的用法

热门文章

  1. 美国国防高级研究计划局(DARPA)组织管理运行机制分析
  2. 图解:手机控制电脑的软件的使用教程
  3. Java是什么?主要是干什么的?
  4. 如何使用agg函数对数据进行分组聚合
  5. 华为云-容器引擎CCE-基本概念
  6. 彻底解决conda环境下 tensorflow gpu版本出现的问题:Not creating XLA devices, tf_xla_enable_xla_devices not set
  7. [bzoj4398]福慧双修
  8. 【2020-MOOC-浙江大学-陈越、何钦铭-数据结构】春期中考试(附每一个题目的详细解析)
  9. ng Baidu Baidu Baidu ang
  10. 数据库性能指标QPS和TPS计算