当前位置: 首页 > news >正文

卡尔曼滤波——一种基于滤波的时序状态估计方法

文章目录

  • 1. Kalman滤波及其应用
  • 2. Kalman原理
    • 公式推导:
      • Step 1:模型建立
      • Step 2:开始Kalman滤波
      • Step 3:迭代滤波

本文是对 How a Kalman filter works, in pictures一文学习笔记,主要是提炼核心知识,方便作者快速回忆和复习,有需要的小伙伴欢迎收藏和讨论~

1. Kalman滤波及其应用

作用: 预测一个具有不确定信息(如:噪声)的动态系统的下一步状态。
应用: 无人系统导航、定位和跟踪等;毫米波雷达定位。

2. Kalman原理

卡尔曼滤波实质: 是将预测状态量的高斯分布和观测量的高斯分布做融合,生成一个新的高斯分布,其中新的高斯分布的均值和方差是两个独立的高斯分布的相关参量的加权,这个加权就是卡尔曼增益,但是预测状态量和观测量可能维度不同,需要将他们同时转换到一个向量空间中,所以观测量前面有线性变换矩阵。

公式推导:

Step 1:模型建立

式1表达的是每个xkx_kxk都可以通过一个线性随机方程估计出来。任意xkx_kxk都是其前一时刻的值与过程噪音的线性组合(这个很难概念化)。请记住,大部分情况下该式没有控制信号uku_kuk项。

式2告诉我们任何测量值zkz_kzk(无法确定精确与否的测量值)都是信号值与测量噪声的线性组合。这两个分量符合高斯分布(这是可以使用Kalman滤波的前提) 进程噪声与测量噪声互相统计独立。AAABBBHHH是一般形式的矩阵。但在大多数信号处理问题中,这些量仅为数值。而且虽然这些值在状态变换时会改变,大多数情况下我们都可以假设他们为定值。
xk=Axk−1+Buk+wk−1zk=Hxk+vkx_k = Ax_{k-1}+Bu_k+w_{k-1}\\ z_k = Hx_k + v_k xk=Axk1+Buk+wk1zk=Hxk+vk
如果我们十分确定我们的系统符合此模型,那么唯一剩下要做的事就是估计噪音函数wk−1w_{k-1}wk1vkv_kvk的平均值以及标准差。我们知道,在实际生活中没有信号满足高斯分布,但我们可以近似其为高斯分布。

Step 2:开始Kalman滤波

Kalman滤波核心公式有5个
时间更新方程组(用于预测
xk^=Axk−1^+BukPkˉ=APk−1AT+Q\hat{x_k} = A\hat{x_{k-1}} + Bu_k\\ \bar{P_k} = AP_{k-1}A^T+Q xk^=Axk1^+BukPkˉ=APk1AT+Q
测量更新方程组(用于修正
$$
K_k = \bar{P_k}HT(H\bar{P_k}HT+R)^{-1}\
\hat{x_k} = \bar{\hat{x_k}}+K_k(z_k-H\bar{\hat{x_k}})\
P_k = (I-K_kH)\bar{P_k}在这里插入图片描述

$$
建模部分已经在步骤一完成了,所以矩阵AAABBBHHH已知。这些矩阵很可能是一个常数,而且大部分情况下会等于1。
最让人难受的部分就是决定RRRQQQ的值了。RRR的值还是很容易找的,因为一般情况下我们对环境中的噪音还是能够确认的。(起码能用仪器测一下)。但是找QQQ的值就没那么直观了。为了使滤波器能够运行,我们还需要知道x0x_0x0P0P_0P0的估计值。

Step 3:迭代滤波

在获得了滤波器运行所需的所有信息后,我们就可以估值迭代了。记住:前一状态的估值将成为当前状态的输入。

在这里插入图片描述
一般超过50次迭代后,就会比较好的收敛了。

http://www.lryc.cn/news/25473.html

相关文章:

  • 什么是X6CrMo17-1
  • 软件测试是个人就能做?恕我直言,你可能是个“纯粹”的测试工具人,BUG收集器
  • 递归算法(recursion algorithm)
  • VScode下 ESP32 下载程序
  • 黑苹果日历
  • python+pytest接口自动化框架(5)-requests发送post请求
  • Linux 进程:进程控制
  • 过滤器的创建和执行顺序
  • JDK1.8 ConcurrentHashMap
  • 参考 Promise/A+ 规范和测试用例手写 Promise
  • yolov5数据集制作
  • 主板EC程序烧写异常致无法点亮修复经验
  • 【Java爬取赛事网站】命令行输出(仅供学习)
  • redis主从复制原理
  • buu刷题(第一周)
  • 算法训练营 day62 单调栈 每日温度 下一个更大元素 I
  • ChIP-seq 分析:Peak 注释与可视化(9)
  • ABB机器人配置DeviceNet总线IO板以及信号分配的具体方法示例
  • 2023 年网络安全漏洞的主要原因
  • 剑指 Offer 34. 二叉树中和为某一值的路径
  • 2023前端vue面试题(边面边更)
  • webpack配置完全指南
  • juju创建lxd容器时如何使用本地镜像(by quqi99)
  • 后端程序员学习前端开发之第一步环境搭建
  • 【记录问题】RuntimeError:working outside of application context. Flask使用SQLAlchemy数据库
  • 自动化测试难点案例分析,其实自动化你用错方向还不如不用
  • 866363-70-4,N3-C5-NHS ester,叠氮-C5-NHS 主要物理性质分享
  • 字符流定义及如何深入理解字符流的编码
  • 什么是pod类型
  • 2023年中小企业实施智能制造的建议