kalman滤波器

卡尔曼滤波理论小释之卡尔曼增益 卡尔曼增益理论推导 阅读详情

卡尔曼是匈牙利当代著名数学家,Kalman滤波器源自于他的博士毕业论文和1960发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。

卡尔曼滤波器是一个最优化自回归数据处理方法,它是一个时域滤波器,是通过对时域上包含噪声的有限测量数据,计算出最接近实际值的方法。这里说它是一种递归的估计,是指只要获得上一时刻的状态值以及当前的状态观测值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息。既然是一个时域滤波器,也就无需像低通滤波器那样,需要在频域进行滤波器设计而需要再转换到时域来实现。卡尔曼滤波器的典型应用是从一组包含噪声的对无物体位置的观察序列中预测出物体的位置坐标和速度,它的核心内容是5个计算公式,然而,仅仅给出5个计算公式显得过于抽象,不便于理解。这里,为了更加形象、更容易地理解卡尔曼滤波器,我给出网上摘取的一个例子来一步一步探索卡尔曼滤波器的原理。

一、举例说明卡尔曼滤波器的原理(该例子转载自网络)
    假设被研究对象是某个房间内的温度(当然,这里假设该房间内各处的温度是相等的,房间内不存在空调、风扇、暖气等局部发热或散热的设备)。根据生活经验,你认为这个房间内的温度是恒定的。即,下一时刻的温度等于当前时刻的温度。但是,你的生活经验并不是绝对的准确,所以,你确信自己对房间内温度的估计存在上下几度的偏差。这个偏差在这里假设是高斯白噪声的,即:偏差跟时间没有关系而且是服从高斯分布的。另外,在房间内放置一个温度计,用于测量房间内的温度。但是,由于制造工艺等因素,温度计的测量值也不是绝对准确的,即:温度计的测量值与真实值之间也存在一定的偏差,这个偏差也假设是高斯白噪声的。那么,对于任意时刻,我们可以得到该房间的两个温度值:你根据生活经验得到的估计值(系统的预测值)和温度计的测量值(系统的测量值)。下面我们用这两个值结合他们各自的噪声来估算出房间的实际温度值。假如我们要估算k时刻的实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。

(1)因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度。(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)

(2)然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度
由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。究竟

实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的协方差来判断。因为Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度。可以看出,因为温度计的协方差比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。现在我们已经得到k时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56度)的偏差。算法如下:((1-Kg)*5^2)^0.5=2.35。这里的5就是上面的k时刻你预测的那个23度温度值的偏差,得出的2.35就是进入k+1时刻以后k时刻估算出的最优温度值的偏差(对应于上面的3)。就是这样,卡尔曼滤波器就不断的把协方差递归,从而估算出最优的温度值。他运行的很快,而且它只保留了上一时刻的协方差。上面的Kg,就是卡尔曼增益(Kalman Gain)。他可以随不同的时刻而改变他自己的值。


二、卡尔曼滤波器的数学模型

讨论卡尔曼滤波器就不得不提离散控制过程的系统。

对于一个离散控制过程的系统而言,可用一个线性随机微分方程来描述:

X(k)=A X(k-1)+B U(k)+W(k)

系统的测量值:

Z(k)=H X(k)+V(k)

上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。他们被假设成高斯白噪声(White Gaussian Noise),他们的covariance分别是Q,R(这里我们假设他们不随系统状态变化而变化)。

对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。

下面我们来用他们结合他们的covariances来估算系统的最优化输出(类似上一节那个温度的例子)。

首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统

状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:

X(k|k-1)=A X(k-1|k-1)+B U(k) ……… (1)

式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。

到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。我们用P表示covariance:

P(k|k-1)=A P(k-1|k-1) A’+Q ……… (2)

式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的covariance,A’表示A的转置矩阵,Q是系统过程的covariance。式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。

现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):

X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)

其中Kg为卡尔曼增益(Kalman Gain):

Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……… (4)

到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:

P(k|k)=(I-Kg(k) H)P(k|k-1) ………………………… (5)

根据这5个公式,可以很容易的实现计算机的程序。

KALMAN滤波器入门总结 课上提到了KALMAN滤波器,稍微入个门,总算懂了点皮毛,总结了一下,如有错误欢迎指正 参考资料http://www.innovatia.com/software/papers/kalman.htm 不同于FIR、IIR经典频域滤波器KALMAN滤波器是时域滤波器,是通过时域上的包含噪声的测量数据,计算出最接近实际值的方法 几个关键公式如下 预测 更 阅读详情

相关推荐

Kalman滤波器的原理与实现

Kalman滤波器是一种用于估计系统状态的算法,其可以通过融合系统的动态模型和传感器测量值来提高状态估计的精度。其原理基于线性系统理论和最优估计准则,主要用于处理具有高斯噪声的线性系统。:首先需要建立系统的动态模型,通常使用线性动态方程描述系统状态的演变。这个模型用于预测系统下一时刻的状态。:系统通常会通过传感器获取观测值,传感器测量通常包含噪声。建立传感器测量模型,描述测量值与系统状态之间的关系。:利用系统的动态模型,通过上一时刻的状态估计值,预测当前时刻的状态。

qq_64919823的博客 1103

micropython版本的一阶卡尔曼滤波器

micropython版本的一阶卡尔曼滤波器

f4t0x的博客 847

【计算机视觉】基于Kalman滤波器的进行物体的跟踪

Kalman(卡尔曼)滤波是一种高效率的递归滤波器(自回归滤波器), 它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。Kalman滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。 Kalman滤波器的基本思想是,若有一组强而合理(合理的意思是“限制非常宽松使得这种方法对真实世界中出现的相当多的实际问题都有用”)的假设,给出系统的历史测量值,则可以建立最大化这些早前测量值的后验概率的系统状态模型。 另外,无需存储很长的早前测量历史,我

Jason Ding的专栏 9266

卡尔曼滤波器的模型

其中,x̂ₖ⁻ 是状态在时间步 k 的先验估计,Fₖ₋₁ 是状态转移矩阵,xₖ₋₁ 是在时间步 k-1 的后验状态估计,Bₖ₋₁ 是控制输入矩阵,uₖ₋₁ 是控制输入向量。上述方程中,Fₖ₋₁、Bₖ₋₁、Hₖ 是矩阵,uₖ₋₁、yₖ 是向量。Pₖ⁻、Pₖ、Qₖ₋₁、Rₖ 是协方差矩阵。其中,Kₖ 是卡尔曼增益,Hₖ 是观测矩阵,Rₖ 是观测噪声协方差矩阵。其中,Pₖ⁻ 是状态估计协方差矩阵,Qₖ₋₁ 是过程噪声协方差矩阵。其中,x̂ₖ 是状态在时间步 k 的后验估计,yₖ 是观测向量。

故事就酒的博客 911

卡尔曼滤波(Kalman Filter)概念介绍及详细公式推导

卡尔曼滤波(Kalman filter)是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。卡尔曼滤波会根据各测量量在不同时间下的值,考虑各时间下的联合分布,再产生对未知变数的估计,因此会比只以单一测量量为基础的估计方式要准。卡尔曼滤波得名自主要贡献者之一的鲁道夫·卡尔曼。​ 卡尔曼滤波的算法是二步骤的程序。

泽渊的博客 9万+

什么是卡尔曼滤波,卡尔曼增益怎么来的--通俗易懂

卡尔曼滤波(Kalman filtering)是一种用于估计系统状态的递归滤波器。它是基于线性动态系统和高斯噪声假设,通过结合系统模型和测量信息,提供最优估计值和最小均方误差的状态估计方法。卡尔曼滤波器的核心思想是将先验信息(系统模型)和后验信息(测量信息)进行融合,从而获得对系统状态的最优估计。预测和更新。在预测步骤中,卡尔曼滤波器使用系统的状态转移模型来预测当前时刻的状态。这个预测基于先前的状态估计和系统的动态方程。预测步骤输出两个重要的结果:预测状态和预测协方差。

NosONE 1451

Kalman滤波器的C++实现

1、原理介绍 kalman滤波在状态估计和多传感器融合等方面应用广泛,典型的应用有无人机的飞行姿态估计,汽车的行驶状态估计,无人驾驶中的激光雷达和其他传感器之间的融合等。至于Kalman滤波的数学推导,比较复杂,需要数学功底比较好,我看了很多次书还是不会推导,放弃了,拿过来用就行了。有点儿拿来主义了。还是的介绍下kalman滤波所涉及的系统微分方程和几个核心公式。kalman滤波分为预测和更新两...

Alexon Xu的博客 2万+

Kalman滤波器学习

概率图+时间=动态系统 ​ 对概率图模型考虑其时间序列,可以得到动态系统。根据动态系统的隐状态的连续性和分布可以把系统大致分为三类: 若隐状态离散,不要求分布,则为隐马尔可夫模型 如果隐状态连续、线性且服从高斯分布,则为Kalman滤波器(线性高斯模型) 如果隐状态连续且非线性,作为得到粒子滤波器 本节主要来介绍kalman滤波器...

GuoBen_的博客 580

Kalman滤波器从原理到实现

目录包括:Kalman滤波器的历史渊源、从牛顿到卡尔曼、一场递推的游戏、均方误差中的门道、Matlab程序看过来、Kalman滤波C程序、参考资料

xiahouzuoxin 14万+

kalman滤波器各项参数及矩阵的设置

参考博客:https://blog.csdn.net/baimafujinji/article/details/50646814简单来说,卡尔曼滤波器的实现是一个迭代过程,使用上一次的结果预测当前的值,同时使用观测值修正当前值,得到最优结果。几个重要的公式如下:这里主要是参考一篇论文:Fully Automatic, Real-Time Vehicle Tracking for Surveilla...

tttabcgy的博客 1万+

基于FPGA设计的kalman滤波器——QMJ

基于Verilog设计的kalman滤波器 本设计将通过matlab和verilog分别编写的kalman程序,对同一组数据进行处理,将数据处理效果对比,分析verilog的kalman滤波效果。 一、仿真软件 本文kalman滤波仿真使用的软件包括:Quartus II,ModelSim,Matlab。 Quartus II仿真设备选择5CSEMA5F31C6。 二、Kalman滤波介绍 1,Kalman滤波用途: 用于机器人导航,控制,传感器数据融合以及军事方面的雷达系统、导弹追踪等等。近年来多应用于计

微核实控的博客 5186

无人驾驶技术——初探Kalman滤波器

文章目录高斯分布高斯公式将两个Gaussian相乘计算新的高斯的均值和方差卡尔曼滤波器预测函数一维kalman 实现多维卡尔曼滤波器多维高斯分布 或者 多元高斯多维卡尔曼滤波器多维 Kalman 实现 Kalman滤波器在物体跟踪,机器人和无人驾驶领域有很重要的作用,这篇文章主要是从实战方面对Kalman滤波器学习的一个总结和记录。 卡尔曼滤波(Kalman filtering)一种利用线性系统...

xiao_lxl的专栏 1472

基于C#的Kalman滤波器

最近项目用到了kalman滤波器,由于是.NET平台的,原来的OpenCV的那套东西不能用了,还好灵光乍现,开源就是好啊!花了一个小时将CvKalman用C#进行实现,解决了!其中的Matrix运算采用了CSDN下载频道的“C#矩阵库”。 using System;using System.Collections.Generic;using System.Text;

csdnbao的专栏 1万+

α-β滤波器(一种1维稳态Kalman滤波器)详解

本文属于控制系统最优滤波,介绍了一种经典的1维数据滤波器。一.α-β滤波器推导、 二.作为稳态滤波器Kalman滤波的比较、 三.α-β的参数设置及其最优性、 四.MATLAB/Simulink仿真演示、 五.总结

MSysのCSDN 1万+

matlab关于 Kalman滤波器的设计

Kalman滤波器的设计         这一节将讨论如何使用控制系统工具箱进行Kalman滤波器的设计和仿真。 考虑下面的离散系统:     x[n+1]=Ax[n]+B(u[n]+w[n])     (5.9)      y[n]=Cx[n]                       (5.10)     其中, w[n]是在输入端加入的高斯噪声。 状态矩阵参数分别为 A =

有塔耶奥多的专栏 2006

Kalman滤波器的应用解释

前言:在看了R.E.Kalman关于线性滤波器的原文,以及网上关于Kalman滤波器的各种解释后,我来写写我理解的Kalman滤波器及工程上怎么应用它! Kalman滤波器通俗解释:这个滤波器其实相当于一个信息融合方法。 我现在要知道时刻k系统的状态X(k),我可以建立一个模型,这个模型根据时刻k-1系统的状态估算出时刻k系统的状态X(k),当然这个状态并不准确(假定我们建立不了那么准确的模型.........

kissgoodbye2012的博客 1760

kALMAN滤波器的理解

1.Kalman滤波器从原理到实现 原来网址:http://blog.csdn.net/xiahouzuoxin/article/details/39582483                       http://xiahouzuoxin.github.io/notes 2.卡尔曼滤波器漫谈与MATLAB   原文网址:http://foundy.blog.163.com/

ldj1208的博客 753

kalman 滤波器 推导

super_mice的专栏 1485
上一篇: 国内外从事CV相关的企业
下一篇: camShift跟踪算法介绍
ChenLee_1
博客等级 码龄17年 6200粉丝 179原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值