卡尔曼滤波简介

原创 2017年11月06日 16:32:03

卡尔曼滤波是一种在不确定状况下组合多源信息得到所需状态最优估计的一种方法。本文将简要介绍卡尔曼滤波的原理及推导。

这里写图片描述

什么是卡尔曼滤波

首先定义问题:对于某一系统,知道当前状态Xt,存在以下两个问题:

  1. 经过时间t后,下个状态Xt+1如何求出?
  2. 假定已求出Xt+1,在t+1时刻收到传感器的非直接信息Zt+1,如何对状态Xt+1进行更正?

这两个问题正是卡尔曼滤波要解决的问题,形式化两个问题如下:

  1. 预测未来
  2. 修正当下

下面,将以机器人导航为例,从预测未来修正当下两个角度介绍卡尔曼滤波器。

卡尔曼滤波的原理

问题场景如下:一个机器人,我们想知道它实时的状态x⃗ ,同时也想做到预测未来修正当下这两件事。

其状态x表示为一维大小为2的向量,元素分别表示位置信息与速度信息:

x⃗ =[pv]

可是状态x不一定是精准的,其不确定性用协方差表示:

Pk=[ΣppΣvpΣpvΣvv]

预测未来

只考虑自身状态

只考虑自身状态的情况下,根据物理公式,可得:

pkvk=pk1+Δt=vk1vk1

用矩阵表示如下:

x̂ k=[10Δt1]x̂ k1=Fkx̂ k1

在状态变化的过程中引入了新的不确定性,根据协方差的乘积公式可得:

Cov(x)Cov(Ax)=Σ=AΣAT

x̂ kPk=Fkx̂ k1=FkPk1FTk

考虑外部状态

外部状态,这里以加速度为例,引入变量a (uk)。

pkvk=pk1+Δt=vk1+vk1+12aΔt2aΔt

x̂ k=Fkx̂ k1+Δt22Δta=Fkx̂ k1+Bkuk

同时,环境仍然存在我们无法刻画的误差,以Qk表示,最终的预测公式如下:

x̂ kPk=Fkx̂ k1+Bkuk=FkPk1FTk+Qk

从上述式子可见:

  1. 的预测加上的修正。
  2. 加上

修正当下

我们已得到x̂ k,Pk,下面要通过观测到的测量值zkx̂ k,Pk进行更新。

因为x̂ k,Pkzk的数据尺度不一定相同,例如x̂ k,Pk包含了的坐标信息,使用radar得到的zk则包含信息。所以首先应该把两者放在相同的尺度下去比较,尺度转换使用Hk将预测信息转化为测量信息的尺度。

μ⃗ expectedΣexpected=Hkx̂ k=HkPkHTk

这样一来,便得到测量尺度上的两个分布:

  1. 测量值的分布(x,μ1,σ1)
  2. 预测值变换后的分布(x,μ0,σ0)

下面一个问题就是如何用这个两个分布组成新的分布。

(x,μ0,σ0)(x,μ1,σ1)=?(x,μ,σ)

这里写图片描述

简单的一维情况如下:

k=σ20σ20+σ21

高维情况下,针对测量值分布(μ1,Σ1)=(zk,Rk)与预测值的变化分布(μ0,Σ0)=(Hkx̂ k,HkPkHTk)组合的高斯分布如下:

x̂ kPk=x̂ k=Pk+K(zkHkx̂ k)KHkPk

K=PkHTk(HkPkHTk+Rk)1

总结

预测未来

  • 输入:过去的最优状态(x̂ k1Pk1)、外界对过程的影响uk,环境的不确定度Qk
  • 输出:预测的最优状态(x̂ kPk)。
  • 其他:对过程的描述(FkBk)跟时间有关。

x̂ kPk=Fkx̂ k1+Bkuk=FkPk1FTk+Qk

修正当下

  • 输入:预测的最优状态(x̂ kPk),测量的状态分布(zk,Rk),预测到测量的变换矩阵Hk
  • 输出:经过测量修正的最优状态(x̂ kPk)。

x̂ kPk=x̂ k=Pk+K(zkHkx̂ k)KHkPk

K=PkHTk(HkPkHTk+Rk)1

卡尔曼滤波需要内存少,计算速度快,适合实时性情况与嵌入式设备的需要。

参考

  1. How a Kalman filter works, in pictures
  2. Kalman Filter For Dummies

能够给Intel公司造成威胁的风险企业Transmeta公司--Crusoe处理器设计的两位天才

发信人:D_J (疯言疯语,何必在意)  版面名称:Embedded(875)标 题:Crusoe处理器设计的两位天才发信站:中国科大BBS站 (Tue, 14 Nov 2000 22:55:11 )...
  • Virtual
  • Virtual
  • 2000-12-26 21:11:00
  • 1599

<em>卡尔曼滤波简介</em>

一位仁兄翻译的,文章介绍了离散卡尔曼理论和实用方法,包括<em>卡尔曼滤波</em>器及其衍生:扩展<em>卡尔曼滤波</em>器的描述和讨论,并给出了一个相对简单的带图实例。...
  • 2017年12月16日 00:00

卡尔曼滤波简介

卡尔曼滤波是一种在不确定状况下组合多源信息得到所需状态最优估计的一种方法。本文将简要介绍卡尔曼滤波的原理及推导。...
  • Young_Gy
  • Young_Gy
  • 2017-11-06 16:32:03
  • 522

卡尔曼滤波资料分享

想深入了解Kalman滤波,在网上寻找了一些资料,有些理解其由来了。在此将该过程中找到的资料分享一下,希望对其他学习者有帮助。 Kalman滤波是通过后验状态估计与实际状态值得偏差最小的目标得到的预...
  • eric41050808
  • eric41050808
  • 2014-07-02 08:49:50
  • 2873

深入理解卡尔曼滤波

卡尔曼滤波卡尔曼滤波的作用不用多说,就是根据前面已知的信息,预测将来可能发生的情况。对于一个系统来说,以跟踪系统为例,如果视频中待跟踪物体按静止不动,或者按照一定的规律运动时,那在当前帧便可以预测下一...
  • autocyz
  • autocyz
  • 2016-02-25 16:00:25
  • 2368

卡尔曼滤波

转自:http://blog.csdn.net/lanbing510/article/details/40936343 1.简介(Brief Introduction) 在学习...
  • lulu_god
  • lulu_god
  • 2014-12-14 16:57:32
  • 1168

卡尔曼滤波简介+ 算法实现代码

http://www.cnblogs.com/jason-jiang/archive/2007/01/13/619643.html 最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科...
  • OnafioO
  • OnafioO
  • 2016-08-02 12:11:23
  • 793

卡尔曼滤波原理

过程方程: X(k+1) =  A X(k) + B U(k) + W(k)               >>>>式1 量测方程: Z(k+1) =  H X(k+1)+ V(k+1)     ...
  • NewThinker_wei
  • NewThinker_wei
  • 2013-09-17 13:27:57
  • 66132

卡尔曼滤波示例

卡尔曼滤波5个公式,看起来简单,但想弄明白并不容易。从直接理解上,个人感觉比较有帮助的是这篇博客:http://blog.csdn.net/u013453604/article/details/503...
  • foreseerwang
  • foreseerwang
  • 2017-08-23 11:18:37
  • 346

<em>卡尔曼滤波</em>实例

<em>卡尔曼滤波简介</em>及其算法实现代码(C++/C/MATLAB) 卡尔曼滤波算法实现 立即下载 ...您因违反<em>CSDN</em>下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@<em>csdn</em>.net!...
  • 2018年04月17日 00:00
收藏助手
不良信息举报
您举报文章:卡尔曼滤波简介
举报原因:
原因补充:

(最多只允许输入30个字)