• 误差卡尔曼中的四元数运动学


    一、四元数定义与性质

    1.1 定义

    四元数的定义繁多,由凯里迪克森创建的一种定义我认为是比较有吸引力的。首先我们有两个复数, A = a + b i , C = c + d i A = a + bi, C = c + di A=a+bi,C=c+di. 现在增加一个自由度,令: Q = A + C j Q = A + Cj Q=A+Cj. 同时令: k = i j k = ij k=ij, 这样就生成了四元数空间。

    从公式1的定义中可知,实数、虚数、实虚数组合,都是属于四元数的子空间。

    值得注意的是,不同的作者会定义不同的四元数,有的人把实数虚数的位置放得不一样。matlab中的四元数采用的是本文作者定义的方式。eigen中也是作者的这种定义方式。ros中的稍微有点不同,在官网上还做了说明:ROS uses quaternions to track and apply rotations. A quaternion has 4 components (x,y,z,w). That’s right, ‘w’ is last (but beware: some libraries like Eigen put w as the first number!)

    1.1.1 其他四元数的表示

    使用公式7所示的四元数,将实部和虚部分开。在slam中,我们使用四元数来表示三维旋转,所以一般的表示方法是(w,x,y,z)

    1.2 四元数性质

    • 加减法
    • 乘法,公式13给了四元数相乘的结果。
    • 单位一
    • 共轭
    • 模长定义
    • 单位四元数,当为单位四元数时,共轭就是其逆

    1.3 其他额外四元数性质

    1.3.1 四元数换向器

    // TODO

    1.3.2 纯四元数的乘积

    通过标准的乘积,去掉实数,然后假设两个相乘的纯四元数是一个,然后再假设他是一个单位四元数。最后推出来一个结论,不知道后面会不会有用。

    纯虚四元数,就是“四元数可视化”中的那个三维球。

    1.3.3 纯四元数的自然幂

    也就是多次与自己的乘积;从theta的定义可以看出,它并不是表示旋转角度,它只是一个定义而已。

    1.3.4 纯四元数指数

    纯四元数的指数,与四元数的指数一样,都被定义成了幂级数。

    纯四元数的指数,恰好是一个新的四元数。而且是一个单位四元数。

    当角度趋近于0的时候,这个新四元数就是单位四元数

    1.3.5

    因为对于一般四元数来说,可以拆分成实部和虚部,然后进行计算。

    1.3.6

    单位四元数的对数是纯虚四元数

    //TODO 公式49没太明白是怎么来的。

    1.3.7

    一般四元数的对数。构造单位四元数。

    1.3.8

    四元数的t次方,利用log和exp把t次方拿到外面去,利用单位四元数的对数,是纯虚四元数。
    公式53又利用了纯虚四元数的指数。

    有疑问的点

    • 1. 1.2.7章节,公式32,单位四元数都可以写成这种形式,但是求出来的theta角度,只有原始欧拉角的一半?这是为什么呢
      1. 有没有可能这个theta角,就跟你理解的不是一个,是的,不是那个角度。公式38对此有说明
  • 相关阅读:
    【C语言 | 预处理】C语言预处理详解(二) —— #pragma指令介绍以及内存对齐、结构体大小
    回归(Regression)
    【MySQL】MySQL事务隔离机制与实现原理详解
    【IVI】15.1.5 系统稳定性优化篇(LMKD VI)Vmpressure监视器初始化及其工作原理
    意外收获史诗级分布式资源,从基础到进阶都干货满满,大佬就是强!
    github action 基于个人项目实践
    【微服务~原始真解】Spring Cloud —— 初识sentinel
    计算机史最疯狂一幕:豪赌50亿美元,“蓝色巨人”奋身一跃
    Kubernetes 的未来:通过生成式 AI 实现的潜在改进
    平平淡淡、坚守初心、砥砺前行
  • 原文地址:https://blog.csdn.net/wang_jun_whu/article/details/125467401