基于四元数的扩展卡尔曼(EKF)滤波器四旋翼姿态解算详解-1.KF介绍

2023-05-16

       先说明一下,之前介绍的两种姿态解算算法http://blog.csdn.net/wkdwl/article/details/52119163    互补滤波和入梯度下降姿态解算算法,虽然在姿态解算方面效果还比较不错。但是缺点就是这两种算法并没有把传感器的噪声和系统的噪声考虑在内。因此为了进一步提高算法的精度和性能,提出了卡尔曼滤波的姿态估计算法。

       在介绍扩展卡尔曼(EKF)之前,先讲解下卡尔曼滤波(KF)。

KF滤波的模型建立以及公式推导

     KF滤波器的适用范围:线性系统。下图为KF流程图


因此可以得到KF的模型:

其中在卡尔曼滤波器中被称作预测模型,表示当前的状态受前一时刻的状态和本次的控制量的影响。A表示状态转移矩阵,是一种线性关系的矩阵。B表示系统噪声驱动阵,B形容的也是一种线性关系。均为满足高斯分布的噪声。

在卡尔曼滤波器中被称作观测模型,表示的也是一种线性关系。该式表明在时刻,我们可以由两种方式获得当前时刻的状态估计:

1.是来源于预测模型的预测的先验状态,根据上一时刻的状态量和本次的控制量推导而来的。表示在时刻来临之前就可以获取这个状态。这个就好像我们四旋翼姿态解算中的陀螺仪微分方程,可以预测下一时刻的姿态。

2.是来源于观测模型,在时刻的测量值,来反过来更新出的当前状态。这个就像是我们从IMU传感器中读取测量值后来解算当前的姿态。

所以将两种方式得到的当前状态量融合,得到更加精确的当前状态:

其中为卡尔曼增益,为测量余差,表示实际测量值与预测测量值之间的偏移。

Kalman Filter五条黄金公式

输入量(,,,

1:

2:

3:

4:

5:

返回,

KF的推导中两个重要变量:,在t时刻的状态估计;, 在t时刻时误差协方差矩阵;

KF操作包括两个阶段:预测和校正。

预测(时间更新):

         (预测状态)                                                                          

        (预测协方差矩阵)

校正(测量更新):

         (计算卡尔曼增益)

        (通过测量值更新当前的估计状态)

        (更新协方差)


KF公式推导

首选输入上一时刻的已知量 ,,,,求出当前时刻的预测值


计算卡尔曼增益

,

,

得到:

所以得到:

这个公式说明了一个KF绝妙之处:

1.如果测量结果无误差,也既为0的时候,有,,代入预测模型得到,只剩下了测量部分。

2.如果预测值得协方差矩阵为0,既说明预测结果无误差,则只剩下预测部分。

因此,会根据测量值和预测值的信任程度来调节权重。

下面到了KF中最精华的一步了,现在我们有了对状态的预测值和协方差,同时也收集到了对状态的测量值。这时就可以通过kalman增益来计算状态估计值了。

越大表明越相信测量值,反之越相信预测值。

最后更新出当前状态的协方差矩阵

到这里相信大家基本上KF的流程差不多熟悉了,就是不断计算当前状态和协方差矩阵 来不断迭代。

下面给出框图


由此KF介绍完毕,但是在四旋翼姿态解算中,由于系统并不是线性系统。所以需要扩展卡尔曼滤波算法。在下一篇会讲到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于四元数的扩展卡尔曼(EKF)滤波器四旋翼姿态解算详解-1.KF介绍 的相关文章

随机推荐

  • c++ 中 class 和 struct 的区别是什么

    xfeff xfeff C 43 43 中的struct对C中的struct进行了扩充 xff0c 它已经不再只是一个包含不同数据类型的数据结构了 xff0c 它已经获取了太多的功能 struct能包含成员函数吗 xff1f 能 xff01
  • Linux top命令的了解以及使用

    以root权限运行 top 命令后 xff0c 会以全屏的方式显示 xff0c 并且会处在对话的模式 操作实例 root登录之后 xff0c 在命令行中输入 xff1a top xff0c 回车 xff0c 即会以全屏的显示模式显示所有内容
  • 一键激活office,激活windows

    github地址 xff1a https github com massgravel Microsoft Activation Scripts 正文 xff1a Microsoft Activation Scripts MAS A Wind
  • Jupyter not connection to kernel 的解决方案

    不知道什么原因 xff0c 今天启动Jupyter Notebook发现不对经 xff0c 各种警告如 xff1a 内核没有连接什么的 xff0c 然后我试了试用spyder编写Python xff0c 结果一进去也是告诉我 error x
  • svm核函数的理解和选择

    特征空间的隐式映射 xff1a 核函数 咱们首先给出核函数的来头 xff1a 在上文中 xff0c 我们已经了解到了SVM处理线性可分的情况 xff0c 而对于非线性的情况 xff0c SVM 的处理方法是选择一个核函数 xff0c 通过将
  • list indices must be integers or slices, not tuple 解决方案

    解决方案 xff1a 用numpy里的array转化下 xff0c 转成元组 xff1a dataSet 61 np array dataSet 或者也可以将dataSet转化为矩阵 xff1a mat dataSet 两者都可行
  • 回归模型——树回归(理论方面的知识)

    一 xff1a 模型介绍 1 线性回归的薄弱处 xff1a 1 1 需要拟合所有的样本点 xff08 局部加权线性回归除外 xff09 但是当数据拥有众多特征并且特征之间关系十分复杂时 xff0c 构建全局模型的想法就显得太难了 xff0c
  • 二叉树遍历(图解)

    二叉树的顺序存储结构就是用一维数组存储二叉树中的节点 xff0c 并且节点的存储位置 xff0c 也就是数组的下标要能体现节点之间的逻辑关系 gt 一般只用于完全二叉树 链式存储 gt 二叉链表 定义 xff1a lchild data r
  • (hive) Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask解决方案

    解决bug思路 xff1a 出现这个问题说明你的mapreduce input fileinputformat split maxsize设置的太小了 解决方案 xff1a hive default gt set mapreduce inp
  • Ubuntu16.04 server配置记录

    1 安装vmtool 因为没有图形界面 xff0c 这里全部使用命令行操作 xff0c 虚拟机菜单点击安装vmtool工具后 xff0c 需要手动挂载 a mkdir tmp cdrom b mount dev cdrom tmp cdro
  • GCC的编译过程

    今天学习了gcc的编译过程 xff0c gcc是一个交叉平台编译器 xff0c 简单的说就是 xff0c 你可以在一个平台上编译出可以在另一个平台运行的代码 gcc的编译过程细分可以分成四个阶段 一 预处理阶段 预处理阶段有三个功能 有文件
  • 图解GPS原理 为什么需要4颗卫星才能定位,而不是3颗

    转载https blog csdn net hugohong article details 43191597 GPS 是英文Global Positioning System xff08 全球定位系统 xff09 的简称 xff0c 而其
  • Intel CPU,各个系列有什么区别

    CPU作为计算机核心组件 xff0c 直接影响计算机的性能和价格 无论在购买或是组装计算机时 xff0c 选择合适的CPU都是需要首先考虑的问题 以目前的CPU品牌来看 xff0c CPU可以分为Intel xff0c AMD和国产CPU三
  • 链表头结点的作用

    1 防止单链表是空的而设的 当链表为空的时候 带头结点的头指针就指向头结点 如果当链表为空的时候 单链表没有带头结点 那么它的头指针就为NULL 2 是为了方便单链表的特殊操作 插入在表头或者删除第一个结点 这样就保持了单链表操作的统一性
  • Shikra的PID调参教程

    在论坛里看到的Shikra的PID调参教程 xff0c 自己感觉非常好就转过来供大家一起交流学习 http www rcgroups com forums showthread php t 61 1375728 还有师兄的调PID的整理的文
  • 四旋翼位置控制之-定高篇

    先mark一下 xff0c 争取两周之内写完 由于快要毕业了 xff0c 所以一直都很忙 xff0c 并没有时间写完 xff0c 所以拖到现在 xff0c 不好意思 现在开始介绍四旋翼定高以及调试过程 首先介绍下四旋翼的模型 图中为 四旋翼
  • 四元数、欧拉角和方向余弦的定义及关系

    目前 xff0c 描述两个坐标系之间关系的常用方法主要有欧拉角法 方向余弦矩阵法和四元数法 因此要弄懂这三种方法的定义及关系 xff0c 我们必须先从坐标系转化开始了解 下面以四旋翼为例 xff0c 定义两个坐标系 导航坐标系 参考坐标系
  • 四旋翼姿态解算常用的两种算法-互补滤波和梯度下降算法

    上一篇讲了四元数 欧拉角和方向余弦的知识 xff0c 不熟悉的请到这篇博客查看点击打开链接 介绍两种算法前 xff0c 先定义两个坐标系 导航坐标系 参考坐标系 n xff0c 选取东北天右手直角坐标系作为导航坐标系n 载体坐标系 机体坐标
  • 四旋翼位置控制之-GPS水平位置控制

    mark一下 xff0c 争取一周内抽时间写完 感兴趣的朋友可以加我qq讨论 最近事情太多 xff0c 今天争取写完 先给大家介绍一些基本知识 GPS精度因子 xff1a PDOP xff08 Position Dilution of Pr
  • 基于四元数的扩展卡尔曼(EKF)滤波器四旋翼姿态解算详解-1.KF介绍

    先说明一下 xff0c 之前介绍的两种姿态解算算法http blog csdn net wkdwl article details 52119163 互补滤波和入梯度下降姿态解算算法 xff0c 虽然在姿态解算方面效果还比较不错 但是缺点就