卡尔曼滤波与组合导航原理(九)Sage-Husa自适应滤波

news2024/11/28 14:17:19

自适应滤波有很多种方式,也很实用

一、自适应滤波基本思想

函数模型
{ X k = Φ k / k − 1 X k − 1 + Γ k − 1 W k − 1 Z k = H k X k + V k \left\{\begin{array}{l} \boldsymbol{X}_{k}=\boldsymbol{\Phi}_{k / k-1} \boldsymbol{X}_{k-1}+\boldsymbol{\Gamma}_{k-1} \boldsymbol{W}_{k-1} \\ \boldsymbol{Z}_{k}=\boldsymbol{H}_{k} \boldsymbol{X}_{k}+\boldsymbol{V}_{k} \end{array}\right. {Xk=Φk/k1Xk1+Γk1Wk1Zk=HkXk+Vk
随机模型
{ E [ W k ] = q k , E [ W k W j T ] = Q k δ k j E [ V k ] = r k , E [ V k V j T ] = R k δ k j E [ W k V j T ] = 0 \left\{\begin{array}{lc}{\color{red}\mathrm{E}\left[\boldsymbol{W}_{k}\right]=\boldsymbol{q}_{k}}, & \mathrm{E}\left[\boldsymbol{W}_{k} \boldsymbol{W}_{j}^{\mathrm{T}}\right]=\boldsymbol{Q}_{k} \delta_{k j} \\ {\color{red}\mathrm{E}\left[\boldsymbol{V}_{k}\right]=\boldsymbol{r}_{k}}, & \mathrm{E}\left[\boldsymbol{V}_{k} \boldsymbol{V}_{j}^{\mathrm{T}}\right]=\boldsymbol{R}_{k} \delta_{k j} \\ \mathrm{E}\left[\boldsymbol{W}_{k} \boldsymbol{V}_{j}^{\mathrm{T}}\right]=\mathbf{0} & \end{array}\right. E[Wk]=qk,E[Vk]=rk,E[WkVjT]=0E[WkWjT]=QkδkjE[VkVjT]=Rkδkj
系统噪声和量测噪声都不是零均值,且噪声的均值和方差都未知,用标准Kalman滤波没法做。

基本原理:噪声参数不准会影响系统输出,利用输出边作状态估计边作噪声辨识,需要系统的可观测新比较强。

  • 噪声均值均可等效于状态增广。把噪声分解成零均值部分和非零均值部分,非零均值的部分作为状态一并估计。所以对系统噪声和量测噪声的均值用自适应方法没有必要,真的未知又想估计它,就把它扩维增广为状态。
  • 系统噪声方差难以自适应,代表系统的状态,一般来说系统比较稳定,做自适应比较难。
  • 量测噪声方差相对容易自适应,代表仪器和环境的状态,有可能时好时坏,用自适应效果比较好。
  • 应尽量减少噪声自适应参数的数目,可以只对容易变化的量测做自适应。

二、量测噪声方差阵自适应算法

新息和新息的方差
Z ~ k / k − 1 = Z k − Z ^ k / k − 1 = H k X k + V k − H k X ^ k / k − 1 = H k X ~ k / k − 1 + V k E [ Z ~ k / k − 1 Z ~ k / k − 1 T ] = H k P k / k − 1 H k T + R k \begin{array}{l} \tilde{\boldsymbol{Z}}_{k / k-1}=\boldsymbol{Z}_{k}-\hat{\boldsymbol{Z}}_{k / k-1}=\boldsymbol{H}_{k} \boldsymbol{X}_{k}+\boldsymbol{V}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{k / k-1}=\boldsymbol{H}_{k} \tilde{\boldsymbol{X}}_{k / k-1}+\boldsymbol{V}_{k} \\ \mathrm{E}\left[\tilde{\boldsymbol{Z}}_{k / k-1} \tilde{\boldsymbol{Z}}_{k / k-1}^{\mathrm{T}}\right]=\boldsymbol{H}_{k} \boldsymbol{P}_{k / k-1} \boldsymbol{H}_{k}^{\mathrm{T}}+\boldsymbol{R}_{k} \quad \\ \end{array} Z~k/k1=ZkZ^k/k1=HkXk+VkHkX^k/k1=HkX~k/k1+VkE[Z~k/k1Z~k/k1T]=HkPk/k1HkT+Rk
想估计 R R R ,就认为左边都已知,就是新息量测值的方差减去预测量测值方差
R k = E [ Z ~ k / k − 1 Z ~ k / k − 1 T ] − H k P k / k − 1 H k T \boldsymbol{R}_{k}=\mathrm{E}\left[\tilde{\boldsymbol{Z}}_{k / k-1} \tilde{\boldsymbol{Z}}_{k / k-1}^{\mathrm{T}}\right]-\boldsymbol{H}_{k} \boldsymbol{P}_{k / k-1} \boldsymbol{H}_{k}^{\mathrm{T}} Rk=E[Z~k/k1Z~k/k1T]HkPk/k1HkT
这种的满足只是统计上整体的满足,不是说每一次测量都应该满足。

以估计房间的温度的例子来说:预测下一时刻的量测温度,再用温度计量测一下,只利用两个的值来确定量测噪声,仅仅只是一个样本;要得到方差,需要很多个房间,很多次测量算出来的才是 R k R_k Rk,才得出统计结果。

实际做Kalman滤波研究的往往只有一个样本,用时间平均来算,多个时刻的数据得出 R k R_k Rk 。并且写成递推的形式如下:
R ^ k = 1 k ∑ i = 1 k ( Z ~ i / i − 1 Z ~ i / i − 1 T − H i P i / i − 1 H i T ) = 1 k [ ∑ i = 1 k − 1 ( Z ~ i / i − 1 Z ~ i / i − 1 T − H i P i / i − 1 H i T ) + ( Z ~ k / k − 1 Z ~ k / k − 1 T − H k P k / k − 1 H k T ) ] = ( 1 − 1 k ) R ^ k − 1 + 1 k ( Z ~ k / k − 1 Z ~ k / k − 1 T − H k P k / k − 1 H k T ) \begin{aligned} \hat{\boldsymbol{R}}_{k} & =\frac{1}{k} \sum_{i=1}^{k}\left(\tilde{\boldsymbol{Z}}_{i / i-1} \tilde{\boldsymbol{Z}}_{i / i-1}^{\mathrm{T}}-\boldsymbol{H}_{i} \boldsymbol{P}_{i / i-1} \boldsymbol{H}_{i}^{\mathrm{T}}\right) \\ & =\frac{1}{k}\left[\sum_{i=1}^{k-1}\left(\tilde{\boldsymbol{Z}}_{i / i-1} \tilde{\boldsymbol{Z}}_{i / i-1}^{\mathrm{T}}-\boldsymbol{H}_{i} \boldsymbol{P}_{i / i-1} \boldsymbol{H}_{i}^{\mathrm{T}}\right)+\left(\tilde{\boldsymbol{Z}}_{k / k-1} \tilde{\boldsymbol{Z}}_{k / k-1}^{\mathrm{T}}-\boldsymbol{H}_{k} \boldsymbol{P}_{k / k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\right)\right] \\ & =\left(1-\frac{1}{k}\right) \hat{\boldsymbol{R}}_{k-1}+\frac{1}{k}\left(\tilde{\boldsymbol{Z}}_{k / k-1} \tilde{\boldsymbol{Z}}_{k / k-1}^{\mathrm{T}}-\boldsymbol{H}_{k} \boldsymbol{P}_{k / k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\right)\end{aligned} R^k=k1i=1k(Z~i/i1Z~i/i1THiPi/i1HiT)=k1[i=1k1(Z~i/i1Z~i/i1THiPi/i1HiT)+(Z~k/k1Z~k/k1THkPk/k1HkT)]=(1k1)R^k1+k1(Z~k/k1Z~k/k1THkPk/k1HkT)
上式每个时刻的权重都相同,为等加权平均。统计很长时间后 1 k \frac{1}{k} k1 会趋于 0 0 0 ,时间越长,自适应的能力越差。

为避免此问题,可以把 K K K 值限定,到了一定数目之后,就不让它再增加。如采用指数渐消记忆加权平均:
R ^ k = ( 1 − β k ) R ^ k − 1 + β k ( Z ~ k / k − 1 Z ~ k / k − 1 T − H k P k / k − 1 H k T ) \hat{\boldsymbol{R}}_{k}=\left(1-\beta_{k}\right) \hat{\boldsymbol{R}}_{k-1}+\beta_{k}\left(\tilde{\boldsymbol{Z}}_{k / k-1} \tilde{\boldsymbol{Z}}_{k / k-1}^{\mathrm{T}}-\boldsymbol{H}_{k} \boldsymbol{P}_{k / k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\right) R^k=(1βk)R^k1+βk(Z~k/k1Z~k/k1THkPk/k1HkT)
其中 β k = β k − 1 β k − 1 + b β 0 = 1 , β ∞ = 1 − b , 0 < b < 1 \beta_{k}=\frac{\beta_{k-1}}{\beta_{k-1}+b} \quad \beta_{0}=1, \beta_{\infty}=1-b, 0<b<1 βk=βk1+bβk1β0=1,β=1b,0<b<1 称为渐消因子。 b b b 一般取的接近于 1 1 1,如 0.9 、 0.99 、 0.999 0.9、0.99、0.999 0.90.990.999

式子后半部分有矩阵相减,当实际噪声比较小时,容易出现量测方差负定,可改用“序贯标量量测+方差受限”自适应方法加以解决:

受限:比如GNSS精度 1 c m 1cm 1cm,如果算出来量测方差是 1 n m 1nm 1nm 肯定有问题,可以设一个 1 c m 1cm 1cm 的限制

ρ k ( i ) = ( Z ~ k / k − 1 ( i ) ) 2 − H k ( i ) P k / k − 1 ( i ) ( H k ( i ) ) T \rho_{k}^{(i)}=\left(\tilde{Z}_{k / k-1}^{(i)}\right)^{2}-\boldsymbol{H}_{k}^{(i)} \boldsymbol{P}_{k / k-1}^{(i)}\left(\boldsymbol{H}_{k}^{(i)}\right)^{\mathrm{T}} ρk(i)=(Z~k/k1(i))2Hk(i)Pk/k1(i)(Hk(i))T R max  ( i ) , R min  ( i ) R_{\text {max }}^{(i)}, R_{\text {min }}^{(i)} Rmax (i),Rmin (i) 人为设置的方差上下限,有:
R ^ k ( i ) = { ( 1 − β k ) R ^ k − 1 ( i ) + β k R min ⁡ ( i ) ρ k ( i ) < R min ⁡ ( i ) R max ⁡ ( i ) ρ k ( i ) > R max ⁡ ( i ) ( 1 − β k ) R ^ k − 1 ( i ) + β k ρ k ( i )  others  \hat{R}_{k}^{(i)}=\left\{\begin{array}{cc}\left(1-\beta_{k}\right) \hat{R}_{k-1}^{(i)}+\beta_{k} R_{\min }^{(i)} & \rho_{k}^{(i)}<R_{\min }^{(i)} \\ R_{\max }^{(i)} & \rho_{k}^{(i)}>R_{\max }^{(i)} \\ \left(1-\beta_{k}\right) \hat{R}_{k-1}^{(i)}+\beta_{k} \rho_{k}^{(i)} & \text { others }\end{array}\right. R^k(i)= (1βk)R^k1(i)+βkRmin(i)Rmax(i)(1βk)R^k1(i)+βkρk(i)ρk(i)<Rmin(i)ρk(i)>Rmax(i) others 
流程如下:

在这里插入图片描述

左边的系统对右边有作用,右边对左边也有作用,比较复杂,需要对其做稳定性分析和可控性分析很困难。判断工程上能不能用得做仿真。

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

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

相关文章

Mujoco xml编写(二)

目录 .1 运行 1.1 测试 .2 XML 2,1 基础 2.3 简单实例 2.3 进阶例子 .1 运行 1.1 测试 基于Mujoco210 Ubuntu 22.04配置安装_啥也不是的py人的博客-CSDN博客完成安装后 import mujoco_py import os mj_path mujoco_py.utils.discover_mujoco() xml_path os.path.join…

学习并深入理解闭包

前言 学习闭包前&#xff0c;先学点别的。 程序执行时&#xff1a; 1.编译阶段 创建变量对象GO&#xff0c;包括变量和函数作用域装在一块内存中。但是没有赋值&#xff0c;变量都是undefined,函数&#xff1a;0xxx 2.创建执行上下文 里面有VO对应ao(函数里的变量&#xff0…

数据结构 -- 跳跃链表

跳跃链表的概念 跳跃链表是有序链表的一个变种&#xff0c;在一个有序链表中&#xff0c;查找一个链表中的元素需要进行一次遍历&#xff0c;时间复杂度为O(n)&#xff0c;为了加快查找的过程&#xff0c;能够跳过某些元素呢&#xff1f;一个思路就是牺牲一定的空间换时间&…

入职外包一个月,我离职了

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

Redis系列第一篇:ubuntu18.04下源码编译安装Redis 6.2.12

Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis是一个key-value存储系统。和Memcached类似&#xff…

EasyExcel设置动态head数据(不是格式)及postman自测的坑

需求背景&#xff1a; 导出某某业务模块的数据&#xff0c;但是&#xff0c;数据列的标题内容是根据当前日期计算出来的。 比如今天是5月20&#xff0c;那么列就是 5/21 、 5/22…以此类推 问题&#xff1a; EasyExcel 通过Bean的注解实现匹配的&#xff0c;这是最便捷的方式&…

这5款小众又好用的软件,你都知道吗?

1.文件比较——WinMerge WinMerge是一款用于比较和合并文件和文件夹的工具。它可以让你对不同的文件和文件夹进行可视化的对比,并显示出差异和相似之处。WinMerge支持多种功能,如合并,同步,过滤,插件等。这款工具非常实用,但是可以提供强大的文件比较功能,是管理文件和解决冲突…

123 2021年国赛 二分搜索+前缀和

题目描述 小蓝发现了一个有趣的数列&#xff0c;这个数列的前几项如下&#xff1a; 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 小蓝发现&#xff0c;这个数列前 1 项是整数 1&#xff0c;接下来 2 项是整数 1 至 2&#xff0c;接下来 3 项是整数 1 至 3&#xff0c;接下来 4 项是整数…

day2 ARM处理器概论

目录 RISC处理器和CISC处理器 SOC(System on Chip) ARM指令集概述 指令集 ARM指令集 编译原理 ARM存储模型 ARM指令存储 ARM工作模式 工作模式的理解 ARM工作模式分类 RISC处理器和CISC处理器 RISC处理器 只保留常用的的简单指令&#xff0c;硬件结构简单&#xff0c;复…

你觉得你很优秀,为什么连一个软件测试面试都过不了?

目录 前言 简历请用数字化结果不要只是堆研工作经历 简历一:我的工作内容有 简历二:我的工作内容有: 当你和HR面对面坐下来时&#xff0c;迎接我们的第一个问题往往是:“来&#xff0c;请简单介绍下你自己吧。 了解你的过去是判断你未来的最好方式 增加好印象&#xff0c…

基于SVM的鸢尾花数据集回归分析

目录 1. 作者介绍2. SVM支持向量机算法2.1 鸢尾花数据集2.2 鸢尾花数据集可视化2.2.1 散点图2.2.2 箱型图2.2.3 三维散点图&#xff08;3D&#xff09; 3. SVM算法实现3.1 完整代码3.2 运行结果3.3 问题与分析 1. 作者介绍 张佳伦&#xff0c;男&#xff0c;西安工程大学电子信…

androidstudio ffmpeg 音频转换

java-ffmpeg-音频转换 需求描述功能流程所需条件步骤步骤1步骤2步骤3一些我使用中遇到的异常 需求描述 项目中的语音唤醒后的语音识别人声检测一直是一个很令我头痛的问题,之前因为对各种类型的工具包使用不熟练,以及时间问题,一直没有根治这个人声检测体验不好的问题,之前的解…

不同品牌或型号的单片机

以下是一些常见的单片机品牌和型号&#xff1a; 微控制器&#xff08;Microchip&#xff09;&#xff1a;PIC系列&#xff08;如PIC16F877A、PIC18F4550&#xff09; 瑞萨电子&#xff08;Renesas&#xff09;&#xff1a;RX系列&#xff08;如RX231、RX65N&#xff09;需要资…

Termius 最好用的SSH 连接工具

Termius 最好用的SSH 连接工具 一、环境准备二、配置2.1 terminus 安装2.2 删除自动更新2.3 修改用户信息 三、使用四、页面展示 该工具 mac os 可直接使用 本文只展示 windows 使用步骤&#xff0c;本教程使用的 termius 版本为 7.59.6 一、环境准备 termius 下载 官网下载地址…

ubuntu上安装docker报错

执行docker命令的时候报错如下&#xff1a; Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 为了解决这个问题&#xff0c;看了一些帖子有的说重启docker.service服务或者看该服务是否已经正常启动&#xff0c;结果网上…

超实用!新手项目经理掏心窝总结的经验

像项目这样复杂的环境中&#xff0c;往往会出现错误判断、沟通不畅、管理不善以及最常见的错误。因此&#xff0c;项目管理需要项目经理有广泛的经验、洞察力和技能&#xff0c;无论是规划、组织还是有效领导团队&#xff0c;以在规定的时间和预算内实现项目目标。在这种情况下…

基于BAT指令定时备份Oracle并发送邮件

前言 在企业级应用程序中&#xff0c;数据是非常重要的资源。因此&#xff0c;我们需要定期备份数据以确保其安全性和完整性。在Oracle数据库中&#xff0c;我们可以使用多种方法来备份数据&#xff0c;其中一种方法是使用BAT脚本来进行自动化备份。 在本文中&#xff0c;我们…

【AI实时变声器,声音甜甜的小姐姐背后竟是抠脚大汉】

前言 这是一款基于AI算法的实时变声器&#xff0c;如果你不懂AI也没事&#xff0c;直接使用我提供的一键安装包 链接&#xff1a;https://pan.baidu.com/s/1f3X6JdBVOgeTNPf0B3CRKg 提取码&#xff1a;k5v2 变声器安装使用 有两款变声器&#xff0c;都是基于RVC做的&#xf…

ctfshow——web入门 SSRF

web351web352web353web354web355web356web357web358web359web360 web351 通过hackbar post提交 urlhttp://127.0.0.1/flag.php 获得flag web352 将127.0.0.1和localhost给过滤了&#xff0c;但并不影响post提交 post urlhttp://127.0.0.1/flag.php web353 过滤了localhost和1…

python基础学习1

pyhton数据分析的优势&#xff1a; ①语法简单精炼 ②有很强大的库 ③功能强大 ④适用于构建生产系统 ⑤胶水语言 python数据分析常用的类库&#xff1a; ①IPython------科学计算标准工具集的组成部分 ②NumPy------python科学计算的基础包 ③SciPy--------解…