ESKF学习笔记

news2024/11/18 16:19:28

参考资料

https://zhuanlan.zhihu.com/p/441182819

惯性导航(三)-基于流型的ESKF及代码实现_eskf和ekf-CSDN博客

用ESKF实现IMU/GNSS组合导航(学习记录)_eskf imu-CSDN博客

0.ESKF与KF的区别以及总体流程

0.1卡尔曼滤波过程

卡尔曼滤波的流程按照1-5分为预测和更新两部分

预测部分:

首先通过运动方程抽象得到状态转移矩阵F和系统控制量U,计算预测状态\hat{X_t^{-}}

通过状态转移矩阵F,初始时刻(上一时刻)的协方差矩阵^{P_{t-1}}和Q,预测新的协方差矩阵{P_t^{-}}

更新部分:

通过观测方程的状态转移矩阵H,协方差矩阵{P_t^{-}},观测噪声协方差R,计算卡尔曼滤波增益

K_t={P_t^{-}}H^T(H{P_t^{-}}H^T+R)^{-1}  (0.3)

通过传感器观测量Z_t与观测方程的计算值H\hat{X_t^{-}}之差可以得到观测值与预测值存在的偏差,最终的估计值结合观测值与预测值存在的偏差对预测值进行校准,卡尔曼增益可以理解为校准系数。如果卡尔曼增益越大,说明越信任观测值(更多使用观测值对预测值进行校准),如果卡尔曼增益越小,说明越信赖预测值(说明系统方程很准确)。

最后通过预测协方差矩阵{P_t^{-}}得到估计协方差矩阵

0.2ESKF的流程

ESKF可分为两部分

1)首先是对误差状态的卡尔曼滤波进行预测更新(其步骤与传统KF差不多,只是状态变量,转移矩阵等存在差异)

使用误差状态的离散方程推导状态转移矩阵F,进而推导P,在更新中通过误差状态的观测方程ZZ(x)=h(x)+v,计算观测方程相对误差状态的雅可比矩阵H=\frac{\partial h }{\partial \delta x},进而计算K,以及误差状态的更新\delta X=K(z-h(x))

2)其次是使用ESKF估计后的误差状态\delta X=真值-名义状态,加上名义状态变量(X=A{X_{t-1}}+B{U_{t-1}}),得到最终的状态变量估计真值(X_t=X+\delta X)。

名义状态X计算过程中,使用上一时刻的真值(卡尔曼滤波状态估计)作为输入,以X状态变量的离散方程抽象状态矩阵A(和误差状态的不一样)

X=A{X_{t-1}}+B{U_{t-1}}

1.IMU的运动方程推导

1.1旋转矩阵的导数

1.2运动方程的离散模式

后续ESKF中,名义状态的离散公式就是下图推导,下图的推导原理为物理中的牛二定理,如红色笔记所述。

2.求误差状态变量的运动方程

名义状态:相当于运动方程预测的变量

真实状态:KF更新后的状态(近似为真值)

误差状态:真值-名义=K*(Z-HX)

2.1连续方程误差变量的导数

最终的连续方式误差状态导数(用于后续在离散方程中用导数来计算dt内的增量,如v(t+dt)=v(t)+v't(t)dt)

2.2离散状态误差变量的导数

名义状态的离散方程使用了1.2中运动方程的离散模式进行计算

误差状态的离散方程,使用了2.1中的误差状态的导数,通过dt时间的积分得到。

3.ESKF过程

3.1ESKF的预测过程

预测过程类似于卡尔曼滤波,通过上述6个状态运动方程,得到对应状态转移矩阵F,并利用F和系统噪声Q,计算协方差矩阵P

3.2ESKF的更新过程

总体过程类似于卡尔曼滤波,但是要注意把观测方程的雅可比矩阵H线性化

4.实际应用与代码公式结合

代码参考链接:

GitHub - gaoxiang12/slam_in_autonomous_driving: 《自动驾驶中的SLAM技术》对应开源代码

利用ESKF进行RTK和IMU的组合导航

4.1状态和变量的初始化

对imu运动方程的6个状态变量X=[P,V,R,bg,ba,g]进行初始化,该状态变量X为18*1

4.2误差状态ESKF预测过程

其主要作用为

1.递推名义状态变量

2.计算误差状态协方差P_p,误差状态转移矩阵F

通过上面的公式

\delta x_p=F\delta x  (4.1)

P_p=FPF^T+Q (4.2)

其中(4.1)公式由于在每次进行ESKF更新后重新置为0,可以省略。由3.1节中的F公式,可以通过(4.2)公式计算协方差矩阵。

首先利用IMU的离散运动方程,进行名义状态的推导,公式结构为:

名义状态=F*真值状态

其中输入的真值状态为上一时刻ESKF的状态估计值,F是IMU离散方程的状态转移矩阵(和误差状态转移矩阵不同),输出的名义状态,用于结合误差状态得到最终的ESKF估计(作为此次计算真值),该真值并用于下一次的名义状态计算真值输入。

\hat{X_t}=\hat{X_t^{-}}+K_t(Z_t-H\hat{X_t^{-}})  (4.3)

其中,\hat{X_t^{-}}就是名义状态变量(由IMU运动离散方程计算),\hat{X_t}就是此次ESKF的估计(亦为下一次名义状态递推的输入),\delta X=K_t(Z_t-H\hat{X_t^{-}})这是更新时的误差状态变量(预测时,dx=0)

4.3误差状态ESKF预测

对误差状态进行预测,其中

innox=\delta x=z-h(x)

4.4更新名义状态变量

使用误差状态变量\delta x=K(z-h(x))加上预测状态计算的名义状态X(通过IMU离散方程4.2节),可以得到误差校正后的名义状态,作为实际的卡尔曼滤波估计输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信阅读小程序的设计与实现(lw+演示+源码+运行)

题目:微信阅读小程序的设计与实现 摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会…

学习之IDEA集成GitHub

一、配置github账号 使用token登录 二、分享代码到github 2.1 当pycharm中找不到VCS时 2.2 分享代码到github 2.3 push推送代码 2.4pull拉取代码 2.5 克隆代码 三、github打开双重身份认证

Docker构建Java镜像及使用

前言 最近在项目中使用到了一些docker技术,因为没有专业的运维人员,所以在部署版本应用的时候,都是自己在进行打包部署。经过一段时间的操作和使用,在这里和大家分享一下自己的心得,也算是做一下总结吧。 准备工作 首…

【Unity学习心得】如何制作俯视角射击游戏

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、导入素材二、制作流程 1.制作地图2.实现人物动画和移动脚本3.制作单例模式和对象池4.制作手枪pistol和子弹bullet和子弹壳bulletShell5.制作散弹枪shotgun总…

AIDA64 Extreme(硬件检测工具)v7.20绿色不需要安装版,供大家学习研究参考

一款综合性的系统硬件检测工具,号称最权威的电脑硬件检测,监控与测试软件,这款专业的硬件检测大师也是每位高手玩家,菜鸟用户必备的硬件检测利器.AIDA64不仅提供诸如协助超频,硬件侦错,压力测试和传感器监测等多种功能,而且还可以对处理器,系统内存和磁盘驱动器性能进行全面评估…

家具行业短视频矩阵获客,轻松实现百万曝光!

当前家具行业的营销正面临一个新阶段,但同时也遭遇了增长的瓶颈,主要问题在于营销策略过于雷同,这导致产品难以在市场中获得足够关注,从而在品牌和消费者之间形成了隔阂。 同时在这样一个信息爆炸的时代,就算是最优秀…

pandas 生成excel多级表头

使用pandas导出excel 表格时类似这种 其中含有多级表头的情况也就是涉及到表头需要合并单元格(横向及纵向) 1、表头设置 columns [("xx公司路产月报表","序号","序号"),("xx公司路产月报表","单位"…

【树形dp】P2014 [CTSC1997] 选课 题解

题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有 N ( 1 ≤ N ≤ 300 ) N(1\leq N \leq 300) N(1≤N≤30…

Leetcode 每日一题:Longest Increasing Path in a Matrix

写在前面: 今天我们继续看一道 图论和遍历 相关的题目。这道题目的背景是在一个矩阵当中找寻最长的递增数列长度。思路上非常好想,绝对和 DFS 相关,但是题目的优化要求非常高,对于语言和内存特性的考察特别丰富,如果是…

【Python报错已解决】ERROR: No matching distribution found for PIL

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:安装Pillow2.2 步骤二&a…

CentOS安装Hadoop系列

安装Hadoop 1、安装SDK 2、Wget下载安装包到指定目录 3、选择hadoop的配置模式,单机模式,伪集群模式,集群模式 1、查找APACHE下载官网,搜索hadoop,进入目录,找到common目录,下载对应版本 国内,…

uniapp 原生插件开发 UI

前言: 在集成某些特定 原生SDK的时候,它本身是带UI控件的。当我们使用 uniapp 开发app的时候实是 可以使使用 nvue 页面,以 weex 的方式嵌入原生的UI控件。 我这边的场景是 接入连连app的支付,它有个自己的密码键盘 控件是原生的页…

好用的电脑录屏软件有哪些?推荐4款专业工具。

不同系统的电脑上面带有的录屏功能不一样,比如win10上面有Xbox game bar,Mac系统则用的是QuickTime Player,或者是使用快捷键“CommandShift5”。但更方便的,我自己认为是使用一些专业的录屏软件,他门的录制模式多,兼容…

python将这多个sheet页的数据合并在一起

有如下数据,需要将excel多个sheet页中的数据,合并在一起。 数据样例:👇 import pandas as pd import os# 读Excel文件 file_path D:/project/Excelimport/簿4.xlsx# 创建空的DataFrame用于存储合并后的数据 all_data pd.Data…

软件项目管理

1. 软件项目管理概述 1.1 软件项目管理 软件项目管理的提出是在20世纪70年代中期,当时美国国防部专门研究了软件开发不能按时提交、预算超支和质量达不到用户要求的原因,发现70%的项目是因为管理不善引起的,而非技术原因。 软件项目管理和…

9月17–20日Sui新加坡参会指南,期待与您相聚

📧叮,您有一份Sui新加坡参会指南待领取~ 随着新加坡Token2049大会的临近,我们为即将前往新加坡参会的朋友们准备了一份指南,帮助你快速了解Sui团队的活动安排,并与Sui团队来个线下面对面的交流。 9月17日…

解码消费医疗机构:如何通过全场景AI运营实现营销破局?

在当今的医美市场中,“流量困境”已成为众多消费医疗机构面临的严峻挑战。传播日益碎片化,各大机构对流量争夺也愈演愈烈,不少机构面临着新客获取难、老客户留存转化难、运营成本高昂等困境。 那么,面对这一挑战,消费…

Leetcode面试经典150题-79.搜索单词

题目比较简单,回溯最基础的题,记得除非覆盖,否则一定要恢复现场就行 解法都在代码里,不懂就留言或者私信 class Solution {public boolean exist(char[][] board, String word) {int m board.length; int n board[0].length;i…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言) Baumer工业相机Baumer工业相机的图像剪切(ROI)功能的技术背景CameraExplorer如何使用图像剪切(ROI&#xff0…

公司搬迁至外地:选择新办资质还是迁移资质?

当企业面临搬迁,尤其是跨区域搬迁时,资质管理成为企业运营策略中的一个关键议题。企业需要在新办资质和迁移资质之间做出选择,这关系到企业的合规性、市场竞争力和业务连续性。本文将探讨这两种选择的考量因素,以及如何根据企业的…