ESKF学习笔记

参考资料

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节),可以得到误差校正后的名义状态,作为实际的卡尔曼滤波估计输出。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

unity安装配置和vs2022联动教程

目录 1.选择vs2022配置 2.安装unity 2.1安装unity hub 2.2注册个人账号 2.3安装编辑器 2.4修改为简体中文 2.5添加许可证 2.6安装位置修改 3.项目的创建 3.1如何创建 3.2如何选择 3.3配置语言 3.4去哪里找语言包 4.unity编辑器窗口的介绍 4.1游戏的运行和停止 4…

Leetcode面试经典150题-162.寻找峰值

解法都在代码里,不懂就留言或者私信 想清楚的话会特别简单,你可能想不到这是个二分。。。 class Solution {/**本题题目规定我们只能用O(logN)的时间复杂度来解题,这显然就是让二分嘛而题目给的数组本身是无需,怎么二分呢其实我…

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构&…

5.安卓逆向-java面向对象

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 上一个内容:4.安卓逆向-常用数据结构java语言中的集合 之前的内容写了java语言常用的数据结构&#xff08…

海外云服务器安装 Redis 6.2.x (Ubuntu 18.04 记录篇三)

本文已首发于 秋码记录 通过前两篇的实践,我们已然在海外云服务器/VPS安装了JDK和MariaDB数据库,一个能够运行Java项目的海外云服务器/VPS算是告一段落了。 然而,在这请求量与日俱增的情况下,MariaDB数据库显然是在超负债的工作…

Linux shell编程学习笔记80:gzip命令——让文件瘦身

0 引言 在 Linux shell编程学习笔记76:tar命令——快照 & 备份(上)-CSDN博客 Linux shell编程学习笔记77:tar命令——快照 & 备份(下)_linux 系统快照-CSDN博客 Linux shell编程学习笔记78&am…

10万人服务器配置如何选择?10w并发量配置架构

10万并发量的应用如何选择阿里云服务器配置?首先要选择云服务器ECS实例规格,因为是10万并发量需要配置负载均衡,而且还要使用缓存技术,阿里云服务器网aliyunfuwuqi.com从阿里云官网整理的关于阿里云10万并发量服务器配置和案例分享…

哈工大“计算机设计与实践”(cpu)处理器实验设计报告

哈工大“计算机设计与实践”(cpu)处理器实验设计报告 【哈工大“计算机设计与实践”(cpu)处理器实验设计报告】 在计算机科学领域,CPU(中央处理器)是计算机系统的核心部件,负责执行指…

【我的 PWN 学习手札】Fastbin Double Free

前言 Fastbin的Double Free实际上还是利用其特性产生UAF的效果,使得可以进行Fastbin Attack 一、Double Free double free,顾名思义,free两次。对于fastbin这种单链表的组织结构,会形成这样一个效果: 如果我们mallo…

如何下载各个版本的tomcat-比如tomcat9

1,找到tomcat官网https://tomcat.apache.org/ Apache Tomcat - Welcome! 找到tomcat9,或者archives 1.1,找到对应版本 1.2,找到小版本 1.3,找到bin 2,Index of /dist/tomcat/tomcat-9/v9.0.39/bin 2.1&a…

【知识图谱】3.Protege下载安装

一、Protege 1.相关介绍 Protg软件是斯坦福大学医学院生物信息研究中心基于Java语言开发的本体编辑和知识获取软件,或者说是本体开发工具,也是基于知识的编辑器,属于开放源代码软件。 这个软件主要用于语义网中本体的构建,是语义…

烂番茄96%高分恐怖片来袭,吓到连呼吸都小心

今年的恐怖片市场中,出人意料地杀出了一匹黑马,一部名叫《咒物寻凶》的爱尔兰小成本电影在大牌影片扑街的背景下异军突起,成为不少恐怖片爱好者口中的惊喜之作。这部由达米安麦卡锡执导的电影虽然制作成本有限,却凭借独特的民俗恐…

9天也能养成ins账号!超详细操作指南

Instagram,作为全球最受欢迎的社交媒体平台之一,为跨境电商卖家们提供了一个展示产品、吸引潜在客户的绝佳舞台。然而,受限于ins的规则,要想在这个平台上进行产品的宣传并非易事。 这就是为什么我们需要精心培养一个ins账号&#…

F1C100S/F1C200S的资料来源说明

文章目录 常用板子开源创客荔枝派榴莲派 我想说是的官网啥资料都没有。但是它的资料又很多,从淘宝或者其他地方能都搜到很多。 http://wiki.lcmaker.com/index.php?titleLC-PI-200S https://github.com/peng-zhihui/Planck-Pi?tabreadme-ov-file#head4 http://do…

[苍穹外卖]-10WebSocket入门与实战

WebSocket WebSocket是基于TCP的一种新的网络协议, 实现了浏览器与服务器的全双工通信, 即一次握手,建立持久连接,双向数据传输 区别 HTTP是短连接, WebSocket是长连接HTTP单向通信, 基于请求响应模型WebSocket支持双向通信 相同 HTTP和WebSocket底层都是TCP连接 应用场景…

基于Java+SpringBoot+Vue+MySQL的西安旅游管理系统网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的西安旅游管理系统网站【附源码文档】、…

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…

视频监控基础学习

IPC:网络摄像机 NVR:网络硬盘录像机产品,搭配IPC使用。集成存储、解码显示、拼接控制、智能分析等多种功能于一体。一机多用,部署简单,功能齐全。安全可靠,适用于各类场景。 ONVIF协议:网络摄像…

Docker:对已有的容器,对当前容器映射的端口实时 (增删改查)

首先我的docker已经起了一个容器,我突然想把他的80->80映射的端口改成80->8080 但是我不想去新启动容器,想在现有容器基础上去修改,或者我想删除某个端口映射(只是大概思路) 如何寻找容器配置文件位置 首先我这…

代码随想录27期|Python|Day54|​单调栈|​42. 接雨水|84. 柱状图中最大的矩形

42. 接雨水 根据常识可以归纳出,对于每一列所能够存住的水的高度 Height min(LeftMax, RightMax) - height 也就是,当前列的存水高度 左侧和右侧柱子的最大高度的较小值,减去当前列的柱子高度,所得到的差值。 可以验证第4列&…