INS-GPS组合导航——卡尔曼滤波
系列文章目录
《SAR笔记-卫星轨道建模》
《SAR笔记-卫星轨迹(三维建模)》
《常用坐标系》
文章目录
前言
一、经典卡尔曼滤波
二、扩展卡尔曼滤波
三、无迹卡尔曼滤波
总结
前言
SAR成像仪器搭载于运动平台,平台的自定位误差将影响SAR图像质量。为保证SAR成像质量,需要长期精确且稳定的平台自定位轨迹,目前常见的定位系统包括惯导系统以及卫导系统。
惯性导航系统INS测量角度增量、速度增量等惯导参量,通过路径积分得到平台的位置、速度、姿态信息, 具有较高的短期测量精度,更新频率高,但惯导数据漂移,长期导航误差大。 全球定位系统GPS通过测量不同卫星与平台的时延差估计平台位置,具有良好的长期精度,但短期精度差,数据输出频率低,受星座构型、环境影响大。惯导系统测量量与卫导系统测量量之间相互联系,都能生成平台轨迹数据,但测量是相互独立的,因此可以用两套系统测得的数据进行融合,得到长期短期的稳定度以及精度都很高的平台轨迹信息。其中一种常见的数据融合算法就是卡尔曼滤波。
卡尔曼滤波本质上是一个数据融合算法,将具有同样测量目的、来自不同传感器、可能具有不同单位 (unit) 的数据融合在一起,得到一个更精确的目标估计值。本文简单介绍卡尔曼滤波的关键步骤,方便使用,关于步骤由来不做说明,网上的资料挺多的,可以根据自身需要学习。
一、经典卡尔曼滤波
经典卡尔曼滤波(Kalman Filter,KF)的局限性在于其只能拟合线性高斯系统。但其最大的优点在于计算量小,能够利用前一时刻的状态和当前时刻的测量值来得到当前时刻下的状态的最优估计。整个滤波算法主要涉及5个方程,分为两个阶段:预测阶段;校正阶段。
预测阶段涉及两个方程:
1、预测器方程(功能:由前一时刻的状态预测当前时刻的状态)
2、预测器协方差方程(功能:得到当前状态估计的协方差)
校正阶段涉及三个方程:
1、卡尔曼增益方程(功能:决定当前状态输出是更相信预测结果还是更相信测量结果)
2、状态更新方程(功能:卡尔曼滤波输出结果)
3、状态协方差更新(功能:更新状态的协方差更新)
除了上述主要方程,还涉及其他辅助方程:
1、测量方程(功能:描述状态量与测量量之间的关系)
考虑测量误差时,测量方程为
2、测量协方差(功能:描述测量量不确定性的,需要预先统计)
3、过程噪声协方差(功能:描述系统建模误差,比如理论上匀速直线运动的模型,在实际处理中会因为各种干扰很难匀速直线,导致真实轨迹并非匀速直线运动,而预测器方程基于匀速直线模型建立,这样产生的误差即为过程噪声协方差,包括系统输入
产生的影响,本文中
,需要预先统计)
4、估计协方差(功能:卡尔曼滤波输出结果的协方差)
其中更新后状态的协方差可以做如下化简
这个方程看起来要精炼很多并且容易记忆,并且在许多情况下没什么问题。但是,在计算卡尔曼增益时的一个小误差(浮点截尾误差)可能给结果带来巨大的偏差。的差可能因为浮点计算误差而使其结果不再是对称阵。这个方程在数值计算上并不稳定!
卡尔曼滤波算法流程如上图所示:一旦初始化完成,卡尔曼滤波首先预测下一时刻的系统状态,并且同时给出这个预测的不确定性。随后拿到测量结果,卡尔曼滤波会更新(或修正)这个预测值及其不确定性,并且同时再进行下一时刻的预测,以此类推。
二、扩展卡尔曼滤波
经典卡尔曼滤波解决的是经典的线性高斯系统的滤波问题。针对非线性系统,由于线性变换的关系不在了,因此预测量以及估计量的概率分布也不再是高斯分布。为了解决这类问题,人们利用非线性函数的局部线性特性,发明了扩展卡尔曼滤波(Extended Kalman Filter,EKF)。不考虑过程噪声以及噪声误差,非线性的状态转移方程以及观测为:
对函数f以及h进行泰勒展开并保留线性部分得
将非线性系统通过泰勒展开转换为动态变化的线性系统,扩展卡尔曼滤波与经典卡尔曼滤波类似,也包括:预测阶段;校正阶段。
预测阶段涉及两个方程:
1、预测器方程(功能:由前一时刻的状态预测当前时刻的状态)
2、预测器协方差方程(功能:得到当前状态估计的协方差)
其中;
校正阶段涉及三个方程:
1、卡尔曼增益方程(功能:决定当前状态输出是更相信预测结果还是更相信测量结果)
其中
2、状态更新方程(功能:卡尔曼滤波输出结果)
3、状态协方差更新(功能:更新状态的协方差更新)
扩展卡尔曼(EKF)与经典卡尔曼(KF)的区别在于测量矩阵H的计算。EKF对非线性函数进行泰勒展开后,进行一阶线性化的截断,忽略了其余高阶项,进而完成非线性函数的近似线性化。正是由于忽略了部分高阶项,使得EKF的状态估计会损失一些精度。因此,EHF 能否成功应用取决于两个因素:被近似的函数的局部非线性化程度;概率分布自身的不确定度(协方差)。
三、无迹卡尔曼滤波
无迹卡尔曼滤波(Unscented Kalman Filter,UKF)是一种非线性滤波算法,能够有效地处理复杂非线性系统的状态估计问题。其核心思想是通过一组选定的 sigma 点来逼近系统运动的高斯分布,从而实现状态估计。UKF算法通过选取 sigma 点,将系统的非线性映射转化为一组线性运算,然后利用卡尔曼滤波的思想进行状态估计。无迹卡尔曼滤波不采用泰勒展开实现非线性系统线性化,而是采用无迹变换(Unscented Transform,UT)来处理均值和协方差的非线性传递问题。
参考资料
卡尔曼滤波(Kalman Filtering)——(1)递归算法
Kalman滤波通俗理解+实际应用
卡尔曼滤波:从入门到精通
无人驾驶技术入门(十八)| 手把手教你写扩展卡尔曼滤波器
卡尔曼滤波
总结
本文主要介绍了经典卡尔曼滤波、扩展卡尔曼滤波,个人认为可以按照上述算法流程编写对应算法。从目前了解的信息,一般认为无迹卡尔曼滤波比前面两种卡尔曼滤波在非线性模型中的应用效果更好,后续根据学习情况更新无迹卡尔曼滤波。另外注明,本文为博主学习卡尔曼滤波的学习记录,内容上如果存在问题,欢迎评论区指出。转载请附链接【杨(_> <_)】的博客_CSDN博客-信号处理,SAR,代码实现领域博主。
相关文章:
INS-GPS组合导航——卡尔曼滤波
系列文章目录 《SAR笔记-卫星轨道建模》 《SAR笔记-卫星轨迹(三维建模)》 《常用坐标系》 文章目录 前言 一、经典卡尔曼滤波 二、扩展卡尔曼滤波 三、无迹卡尔曼滤波 总结 前言 SAR成像仪器搭载于运动平台,平台的自定位误差将影响SAR…...
day 58 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II
739. 每日温度 提示 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例…...

Dns被莫名篡改的问题定位(笔记)
引言:最近发现用户的多台机器上出现了Dns被莫名修改的问题,从系统事件上看并未能正常确定到是那个具体软件所为,现在的需求就是确定和定位哪个软件具体所为。 解决思路: 首先到IPv4设置页面对Dns进行设置:通过ProcExp…...

JVM原理(八):JVM虚拟机工具之基础故障工具
这里主要介绍监视虚拟机运行状态和进行故障处理的工具 1. jsp:虚拟机进程状况工具 jsp命令格式: jsp [options] [hostid] jps远程查询虚拟机进程状态 2. jstat:虚拟机统计信息监视工具 jstat命令格式: jstat [option vmid [interval [s|ms] [count]…...
Eureka的桥梁:服务消费者交互全解析
Eureka的桥梁:服务消费者交互全解析 在微服务架构中,服务发现是确保服务间有效通信的关键机制。Eureka,作为Netflix开源的服务发现框架,扮演着服务注册中心的角色,为服务消费者和服务提供者提供了一个动态的服务注册与…...

13_网络安全
目录 网络安全协议 网络安全协议 PGP协议 网络安全技术 防火墙技术 入侵检测系统 入侵防御系统 杀毒软件 蜜罐系统 计算机病毒与木马 网络安全协议 网络安全协议 物理层主要使用物理手段隔离、屏蔽物理设备等,其他层都是靠协议来保证传输的安全ÿ…...
C++ 中的数据类型
C规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存. 1 整型 作用:整型变量表示的是整数类型的数据 C中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同: 数据类型占用…...

CSS|04 复合选择器伪类选择器属性选择器美化超链接
基本选择器:见上篇基本选择器 复合选择器选择器1,选择器2{属性:值;} 多元素选择器,同时匹配选择器1和选择器2,多个选择器之间用逗号分隔举例: p,h1,h2{margin:0px;}E F{属性:值;} 后代元素选择器,匹配所有属于E元素后…...
探索Batch注释的奥秘:REM与::的细微差别
探索Batch注释的奥秘:REM与::的细微差别 在编写Batch文件时,注释是必不可少的部分,它们帮助我们理解代码的意图和逻辑。Batch脚本提供了两种添加注释的方法:REM命令和双冒号::。虽然它们功能相似,但在使用上存在一些细…...
C语言 求数列 S(n) = a + aa + aaa + …aa…a (n 个 a)的和
求数列S(n)aaaaaa…aa…a(n个a)之值,其中a是一个数字,n表示a的位数,n由键盘输入。例如222222222222222(此时n5) 这个程序读取用户输入的一个数字 a 和一个正整数 n,计算并输出数列 S(n) 的值。 #include …...
MysqlDump
介绍:mysqldump是一个常用的命令行工具,它用于备份或导出MySQL或MariaDB数据库中的数据。这个工具可以创建一个SQL文件,其中包含数据库的结构和数据,这样就可以在其他MySQL服务器上重新创建数据库或进行数据迁移。 基本语法&#…...

某安全公司DDoS攻击防御2024年6月报告
引言: 在2024年6月,网络空间的安全挑战汹涌澎湃。分布式拒绝服务(DDoS)攻击频发,针对云服务、金融科技及在线教育平台的精密打击凸显出当前网络威胁环境的严峻性。 某安全公司作为网络安全防护的中坚力量,…...

Centos下rpm和yum执行卡住问题(已解决)
问题描述 执行rpm和yum卡住, 没有任何报错信息,且无法 ctrl c 终止,只能通过后台 kill -9 杀死。 问题排查: 查看yum日志:yum -vv 软件包 会发现卡在 loading keyring from rpmdb,即load DB存在问题。 …...
python自动化办公之PyPDF2.errors.DeprecationError
背景:pypdf2库在不断更新换代里面的类,逐渐淘汰一些旧的类 PyPDF2.errors.DeprecationError的意思是我们代码里用到的类计划被淘汰了,系统不推荐使用,解决办法:根据提示use xxx instead使用xxx 替换之前的类 例子1 P…...

[leetcode]first-unique-character-in-a-string 字符串中的第一个唯一字符
. - 力扣(LeetCode) class Solution { public:int firstUniqChar(string s) {unordered_map<int, int> frequency;for (char ch: s) {frequency[ch];}for (int i 0; i < s.size(); i) {if (frequency[s[i]] 1) {return i;}}return -1;} };...

使用uniapp.pageScrollTo方法进行页面滚动
先看看是不是你想要的: 需求: 有个填写数据的单子在提交的时候,会对必填项做校验,如果必填项没有数据的话,必填项校验生效给出提示,并且页面滚动到第一个需要填写数据的地方。 开发: 因为这个…...

寒武纪实现高维向量的softmax进阶优化和库函数对比
关于寒武纪编程可以参考本人之前的文章添加链接描述,添加链接描述,添加链接描述 实验证明,axis=0和axis=-1的时候,手写softmax速度可以和库函数媲美,甚至于更甚一筹。 src/softmax.mlu #include <bang.h> #include...

我的世界服务器-高版本服务器-MC服务器-生存服务器-RPG服务器-幻世星辰
生存为主,RPG乐趣为辅,重视每位玩家的建议,一起打造心目中的服务器,与小伙伴一起探险我的世界! 服务器版本: 1.18.2 ~ 1.20.4 Q群: 338238381 服务器官网: 星辰毛毛雨-Minecraft高版本生存服务器我的世界…...

倒装COB显示屏与传统SMD显示屏安装方式有哪些不同?
COB显示屏与传统SMD显示屏是商业显示领域中非常重要的两种载体,在前面的文章当中我们为大家阐述了倒装COB显示屏的技术特点,今天跟随COB显示屏厂家深圳市中品瑞科技一起来看看,COB显示屏的安装与传统LED显示屏的安装有哪些不同? 一…...

elasticsearch重置密码
0 案例背景 Elasticsearch三台集群环境,对外端口为6200,忘记elasticsearch密码,进行重置操作 注:若无特殊说明,三台服务器均需进行处理操作 1 停止es /rpa/bin/elasticsearch.sh stop 检查状态 ps -ef|grep elast…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...