INS-GPS组合导航——卡尔曼滤波

系列文章目录

《SAR笔记-卫星轨道建模》

《SAR笔记-卫星轨迹(三维建模)》

《常用坐标系》


文章目录

前言

一、经典卡尔曼滤波

二、扩展卡尔曼滤波

三、无迹卡尔曼滤波

总结


前言

       SAR成像仪器搭载于运动平台,平台的自定位误差将影响SAR图像质量。为保证SAR成像质量,需要长期精确且稳定的平台自定位轨迹,目前常见的定位系统包括惯导系统以及卫导系统。

       惯性导航系统INS测量角度增量、速度增量等惯导参量,通过路径积分得到平台的位置、速度、姿态信息, 具有较高的短期测量精度,更新频率高,但惯导数据漂移,长期导航误差大。 全球定位系统GPS通过测量不同卫星与平台的时延差估计平台位置,具有良好的长期精度,但短期精度差,数据输出频率低,受星座构型、环境影响大。惯导系统测量量与卫导系统测量量之间相互联系,都能生成平台轨迹数据,但测量是相互独立的,因此可以用两套系统测得的数据进行融合,得到长期短期的稳定度以及精度都很高的平台轨迹信息。其中一种常见的数据融合算法就是卡尔曼滤波。

       卡尔曼滤波本质上是一个数据融合算法,将具有同样测量目的、来自不同传感器、可能具有不同单位 (unit) 的数据融合在一起,得到一个更精确的目标估计值。本文简单介绍卡尔曼滤波的关键步骤,方便使用,关于步骤由来不做说明,网上的资料挺多的,可以根据自身需要学习。


一、经典卡尔曼滤波

         经典卡尔曼滤波(Kalman Filter,KF)的局限性在于其只能拟合线性高斯系统。但其最大的优点在于计算量小,能够利用前一时刻的状态和当前时刻的测量值来得到当前时刻下的状态的最优估计。整个滤波算法主要涉及5个方程,分为两个阶段:预测阶段;校正阶段。

预测阶段涉及两个方程:

1、预测器方程(功能:由前一时刻的状态预测当前时刻的状态)

\hat{x}_{n,n-1}=F\hat{x}_{n-1,n-1}+Gu_{n}

2、预测器协方差方程(功能:得到当前状态估计的协方差)

P_{n,n-1}=FP_{n-1,n-1}F^{T}+Q

校正阶段涉及三个方程:

1、卡尔曼增益方程(功能:决定当前状态输出是更相信预测结果还是更相信测量结果)

K_{n}=P_{n,n-1}H^{T}\left ( H P_{n,n-1}H^{T}+R_{n} \right )^{-1}

2、状态更新方程(功能:卡尔曼滤波输出结果)

\hat{x}_{n,n}=\hat{x}_{n,n-1}+K_{n}\left ( z_{n}-H \hat{x}_{n,n-1}\right )

3、状态协方差更新(功能:更新状态的协方差更新)

P_{n,n}=\left (I-K_{n} H\right )P_{n,n-1}\left (I-K_{n} H\right )^{T}+K_{n}R_{n}K_{n}^{T}

除了上述主要方程,还涉及其他辅助方程:

1、测量方程(功能:描述状态量与测量量之间的关系)

z_{n}=Hx_{n}

考虑测量误差时,测量方程为

z_{n}=Hx_{n}+v_{n}

2、测量协方差(功能:描述测量量不确定性的,需要预先统计)

R_{n}=E\left ( v_{n} v_{n}^{T}\right )

3、过程噪声协方差(功能:描述系统建模误差,比如理论上匀速直线运动的模型,在实际处理中会因为各种干扰很难匀速直线,导致真实轨迹并非匀速直线运动,而预测器方程基于匀速直线模型建立,这样产生的误差即为过程噪声协方差w_{n},包括系统输入u_{n}产生的影响,本文中w_{n}=Gu_{n},需要预先统计)

Q_{n}=E\left ( w_{n} w_{n}^{T}\right )

4、估计协方差(功能:卡尔曼滤波输出结果的协方差)

P_{n,n}=E\left ( e_{n} e_{n}^{T}\right )=E\left ( \left ( x_{n} -\hat{x}_{n,n}\right ) \left ( x_{n} -\hat{x}_{n,n}\right ) ^{T}\right )

其中更新后状态的协方差可以做如下化简

P_{n,n}=\left (I-K_{n} H\right )P_{n,n-1}\left (I-K_{n} H\right )^{T}+K_{n}R_{n}K_{n}^{T}\\ =P_{n,n-1}-P_{n,n-1}H^{T}K_{n}^{T}-K_{n} HP_{n,n-1}+K_{n}\left (HP_{n,n-1}H^{T} +R_{n}\right )K_{n}^{T}\\ =P_{n,n-1}-P_{n,n-1}H^{T}K_{n}^{T}-K_{n} HP_{n,n-1}\\+P_{n,n-1}H^{T}\left ( H P_{n,n-1}H^{T}+R_{n} \right )^{-1}\left (HP_{n,n-1}H^{T} +R_{n}\right )K_{n}^{T}\\ =P_{n,n-1}-P_{n,n-1}H^{T}K_{n}^{T}-K_{n} HP_{n,n-1}+P_{n,n-1}H^{T}K_{n}^{T}\\ =P_{n,n-1}-K_{n} HP_{n,n-1}\\ =\left (I-K_{n} H \right )P_{n,n-1}\\

        这个方程看起来要精炼很多并且容易记忆,并且在许多情况下没什么问题。但是,在计算卡尔曼增益时的一个小误差(浮点截尾误差)可能给结果带来巨大的偏差。\left (I-K_{n} H \right )的差可能因为浮点计算误差而使其结果不再是对称阵。这个方程在数值计算上并不稳定!

        卡尔曼滤波算法流程如上图所示:一旦初始化完成,卡尔曼滤波首先预测下一时刻的系统状态,并且同时给出这个预测的不确定性。随后拿到测量结果,卡尔曼滤波会更新(或修正)这个预测值及其不确定性,并且同时再进行下一时刻的预测,以此类推。

二、扩展卡尔曼滤波

        经典卡尔曼滤波解决的是经典的线性高斯系统的滤波问题。针对非线性系统,由于线性变换的关系不在了,因此预测量以及估计量的概率分布也不再是高斯分布。为了解决这类问题,人们利用非线性函数的局部线性特性,发明了扩展卡尔曼滤波(Extended Kalman Filter,EKF)。不考虑过程噪声以及噪声误差,非线性的状态转移方程以及观测为:

x_{n}=f\left ( x_{n-1} \right )

z_{n}=h\left ( x_{n} \right )

对函数f以及h进行泰勒展开并保留线性部分

f\left ( \hat{x}_{n-1} \right )=f\left ( x_{n-1} \right )+F_{n}\left ( \hat{x}_{n-1}- x_{n-1}\right )

h\left ( \hat{x}_{n} \right )=h\left ( x_{n} \right )+H_{n}\left ( \hat{x}_{n}- x_{n}\right )

       将非线性系统通过泰勒展开转换为动态变化的线性系统,扩展卡尔曼滤波与经典卡尔曼滤波类似,也包括:预测阶段;校正阶段。

预测阶段涉及两个方程:

1、预测器方程(功能:由前一时刻的状态预测当前时刻的状态)

\hat{x}_{n,n-1}=f\left (\hat{x}_{n-1,n-1} \right )+w_{n}

2、预测器协方差方程(功能:得到当前状态估计的协方差)

P_{n,n-1}=F_{n}P_{n-1,n-1}F_{n}^{T}+Q

其中F_{n}=\frac{\partial f}{\partial x}|_{x=\hat{x}_{n-1,n-1}}

校正阶段涉及三个方程:

1、卡尔曼增益方程(功能:决定当前状态输出是更相信预测结果还是更相信测量结果)

K_{n}=P_{n,n-1}H_{n}^{T}\left ( H_{n} P_{n,n-1}H_{n}^{T}+R_{n} \right )^{-1}

其中H_{n}=\frac{\partial h}{\partial x}|_{x=\hat{x}_{n,n-1}}

2、状态更新方程(功能:卡尔曼滤波输出结果)

\hat{x}_{n,n}=\hat{x}_{n,n-1}+K_{n}\left ( z_{n}-H_{n} \hat{x}_{n,n-1}\right )

3、状态协方差更新(功能:更新状态的协方差更新)

P_{n,n}=\left (I-K_{n} H_{n}\right )P_{n,n-1}\left (I-K_{n} H_{n}\right )^{T}+K_{n}R_{n}K_{n}^{T}

       扩展卡尔曼(EKF)与经典卡尔曼(KF)的区别在于测量矩阵H的计算。EKF对非线性函数进行泰勒展开后,进行一阶线性化的截断,忽略了其余高阶项,进而完成非线性函数的近似线性化。正是由于忽略了部分高阶项,使得EKF的状态估计会损失一些精度。因此,EHF 能否成功应用取决于两个因素:被近似的函数的局部非线性化程度;概率分布自身的不确定度(协方差)。

三、无迹卡尔曼滤波

       无迹卡尔曼滤波(Unscented Kalman Filter,UKF)是一种非线性滤波算法,能够有效地处理复杂非线性系统的状态估计问题。其核心思想是通过一组选定的 sigma 点来逼近系统运动的高斯分布,从而实现状态估计。UKF算法通过选取 sigma 点,将系统的非线性映射转化为一组线性运算,然后利用卡尔曼滤波的思想进行状态估计。无迹卡尔曼滤波不采用泰勒展开实现非线性系统线性化,而是采用无迹变换(Unscented Transform,UT)来处理均值和协方差的非线性传递问题。
 

参考资料

卡尔曼滤波(Kalman Filtering)——(1)递归算法

Kalman滤波通俗理解+实际应用

卡尔曼滤波:从入门到精通

无人驾驶技术入门(十八)| 手把手教你写扩展卡尔曼滤波器

卡尔曼滤波


总结

        本文主要介绍了经典卡尔曼滤波、扩展卡尔曼滤波,个人认为可以按照上述算法流程编写对应算法。从目前了解的信息,一般认为无迹卡尔曼滤波比前面两种卡尔曼滤波在非线性模型中的应用效果更好,后续根据学习情况更新无迹卡尔曼滤波。另外注明,本文为博主学习卡尔曼滤波的学习记录,内容上如果存在问题,欢迎评论区指出。转载请附链接【杨(_> <_)】的博客_CSDN博客-信号处理,SAR,代码实现领域博主。

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

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

相关文章

使用 pip 换源的指南

使用 pip 换源的指南 Python 包管理工具 pip 通常从官方的 PyPI&#xff08;Python Package Index&#xff09;仓库下载包。但由于网络限制或速度问题&#xff0c;我们可以选择使用国内镜像源来加速包的下载。以下是如何通过不同方法更改 pip 的下载源&#xff1a; 一、通过命…

LeetCode-Leetcode 1120:子树的最大平均值

LeetCode-Leetcode 1120&#xff1a;子树的最大平均值 题目描述&#xff1a;解题思路一&#xff1a;递归解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给你一棵二叉树的根节点 root&#xff0c;找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子…

还不知道工业以太网和现场总线区别???

工业以太网 工业以太网是一种专为工业环境设计的网络通信技术&#xff0c;它基于标准的以太网技术&#xff0c;但针对工业应用进行了优化。工业以太网能够适应高温、低温、防尘等恶劣工业环境&#xff0c;采用TCP/IP协议&#xff0c;与IEEE 802.3标准兼容&#xff0c;并在应用层…

Studying-代码随想录训练营day24| 93.复原IP地址、78.子集、90.子集II

第24天&#xff0c;回溯算法part03&#xff0c;牢记回溯三部曲&#xff0c;掌握树形结构结题方法&#x1f4aa; 目录 93.复原IP地址 78.子集 90.子集II 总结 93.复原IP地址 文档讲解&#xff1a;代码随想录复原IP地址 视频讲解&#xff1a;手撕复原IP地址 题目&#xff1…

安全架构概述_3.与信息安全相关的国内外标准及组织

1.国外标准 &#xff08;1&#xff09;可信计算机系统评估准则&#xff08;Trusted Computer System Evaluation Criteria&#xff0c;TCSEC&#xff09;&#xff0c;也称为“橘皮书”&#xff0c;1985年12月有美国国防部公布。 &#xff08;2&#xff09;信息技术安全评估准则…

如何利用python画出AHP-SWOT的战略四边形(四象限图)

在企业或产业发展的相关论文分析中&#xff0c;常用到AHP-SWOT法进行定量分析&#xff0c;形成判断矩阵后&#xff0c;如何构造整洁的战略四边形是分析的最后一个环节&#xff0c;本文现将相关代码发布如下&#xff1a; import mpl_toolkits.axisartist as axisartist import …

玩转springboot之springboot定制嵌入式的servlet

springboot定制嵌入式的servlet容器 修改容器配置 有两种方式可以修改容器的配置 可以直接在配置文件中修改和server有关的配置 server.port8081 server.tomcat.uri-encodingUTF-8//通用的Servlet容器设置 server.xxx //指定Tomcat的设置 server.tomcat.xxx编写一个EmbeddedSer…

5. web信息收集(OWASP实战训练)

5. web信息收集&#xff08;OWASP实战训练&#xff09; 1. 信息收集概述2. Google hacking2.1 Site2.2 filetype2.3 inurl2.4 intitle2.5 intext2.6 实例2.7 符号 3. shodan hacking3.1 IP3.2 service/protocol3.3 keyword3.4 country3.5 product3.6 version3.7 hostname3.8 os…

解决本机电脑只能通过localhost访问,不能通过127.0.0.1访问

背景问题 有天我启动项目&#xff0c;发现项目连接Mysq总是连接不上&#xff0c;查了url、ip、port、用户名和密码都没有错&#xff0c;就是连接不上mysql数据库&#xff0c;后来通过查找资料发现有多个进程占用3306端口。 pid 6016 是mysqld服务 而pid 9672 是一个叫 svchos…

windows终端

只要你和计算机有交互不妨来看看 什么是终端&#xff1f; 终端其实就是一个命令窗口。你可以用它向电脑和操作系统发出指令&#xff1a;比如创建文件&#xff0c;删除文件之类的。 为什么要用终端&#xff1f;&#xff08;终端得好处&#xff09; windows最开始的时候时没有…

逆变器--学习笔记(一)

并网&#xff1a; 逆变器中的“并网”指的是逆变器将其产生的交流电与电网同步&#xff0c;并输送到公共电网中。并网逆变器通常用于太阳能发电系统和其他分布式发电系统&#xff0c;将其产生的电能输送到电网供其他用户使用。 THD谐波失真总量: 逆变器的THD&#xff08;Tot…

大模型系列课程学习-基于2080TI-22G魔改卡搭建双卡大模型训练平台(双系统)

1.选择合适的硬件配置 再配置电脑之前&#xff0c;需要确认自己需要的显存大小、主板、内存条、电源、散热等核心配件。经过前期调研&#xff0c;选择的硬件配置如下&#xff1a; &#xff08;1&#xff09;主板&#xff1a;华南X99_F8D(DDR4主板)&#xff0c;因为需要支持双卡…

Python: PyCharm 2023.1 调试

1.设断点 &#xff08;行号对应的红色点&#xff0c;在需要设置断点的代码行与行号之间鼠标点击即可以设置&#xff09; 2.shiftF9,或 altshiftf9 选择文件 或是在菜单 Run->debug "main" 或是在菜单Run->debug 选择文件 &#xff08;鼠标光标放在设置第一个…

DDD学习笔记四

领域模型的构建 基础领域模型的基本组成有名称、属性、关联、职责、事件和异常 发掘领域概念3种策略&#xff1a; 1&#xff09;学习已有系统&#xff0c;重用已有模型 2&#xff09;使用分类标签。分类标签来源于领域&#xff0c;需要我们研究一些资料并做一些提炼。从采用5W…

深入解析scikit-learn中的交叉验证方法

交叉验证是机器学习中用于评估模型性能的重要技术&#xff0c;它可以帮助我们理解模型在未知数据上的泛化能力。scikit-learn&#xff08;简称sklearn&#xff09;是一个广泛使用的Python机器学习库&#xff0c;提供了多种交叉验证方法。本文将详细介绍scikit-learn中提供的交叉…

基于elastic stack的docker-compose部署的ELK与LDAP集成

说明&#xff1a; ldap信息配置到es配置文件上&#xff0c;然后kibana读取es的配置信息 用户与角色的关系通过role_mapping.yml文件配置获取 角色与权限的关系通过elastic stack提供的DevTools或API进行维护 一、前置条件&#xff1a; 1.1 es已开启xpack&#xff08;已开启…

centos误删yum和python

在下载pkdg时&#xff0c;因为yum报错坏的解释器&#xff0c;然后误删了yum和python。 在下载各种版本&#xff0c;创建各种软连接&#xff0c;修改yum文件都不好使后&#xff0c;发现了这样一个方法&#xff1a;Centos&#xff1a; 完美解决python升级导致的yum报错问题(相信…

DIY智能音箱:基于STM32的低成本解决方案 (附详细教程)

摘要: 本文详细介绍了基于STM32的智能音箱的设计与实现过程&#xff0c;包括硬件设计、软件架构、语音识别、音乐播放等关键技术。通过图文并茂的方式&#xff0c;结合Mermaid流程图和代码示例&#xff0c;帮助读者深入理解智能音箱的工作原理&#xff0c;并提供实际操作指导。…

《每天5分钟用Flask搭建一个管理系统》第9章:API设计

第9章&#xff1a;API设计 9.1 RESTful API的概念 RESTful API是一种基于HTTP协议的网络服务接口设计方法&#xff0c;它使用标准的HTTP方法&#xff0c;如GET、POST、PUT、DELETE等&#xff0c;来执行资源的操作。 9.2 Flask-RESTful扩展的使用 Flask-RESTful是一个Flask扩…

利用队列Queue或栈Stack解决字符数组转换运算题

一、题目 给定包含特殊运算符号&#xff0c;$ &#xff0c;转换规则如下 xy2xy3 x$y 3x2y1 其中x&#xff0c;y都是非负整数且优先级高于 $。 相同的特殊运算符&#xff0c;从左到右顺序计算。用例保证&#xff0c;$&#xff0c;左右一定存在数字&#xff0c;且数字不存在前导…