卡尔曼滤波简介

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

这里写图片描述

什么是卡尔曼滤波

首先定义问题:对于某一系统,知道当前状态 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 ,下面要通过观测到的测量值 zk x̂ k,Pk 进行更新。

因为 x̂ k,Pk zk 的数据尺度不一定相同,例如 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̂ k1 Pk1 )、外界对过程的影响 uk ,环境的不确定度 Qk
  • 输出:预测的最优状态( x̂ k Pk )。
  • 其他:对过程的描述( Fk Bk )跟时间有关。

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

修正当下

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

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
  • 56
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
扩展卡尔曼滤波(Extended Kalman Filter,EKF)和卡尔曼滤波(Kalman Filter,KF)是两种常用的滤波算法,它们在处理非线性系统时有所不同。 卡尔曼滤波是一种递归滤波算法,用于估计线性系统的状态。它基于系统的动力学模型和观测模型,通过最小化预测状态与观测值之间的误差来估计系统的状态卡尔曼滤波假设系统的噪声是高斯分布的,并且系统的动力学模型和观测模型都是线性的。因此,卡尔曼滤波在处理线性系统时表现良好。 扩展卡尔曼滤波是对卡尔曼滤波的扩展,用于处理非线性系统。与卡尔曼滤波不同,扩展卡尔曼滤波通过线性化非线性系统的动力学模型和观测模型来近似处理非线性问题。具体而言,扩展卡尔曼滤波使用泰勒级数展开来近似非线性函数,并通过线性卡尔曼滤波来处理近似后的线性系统。这样,扩展卡尔曼滤波可以在一定程度上处理非线性系统,但由于线性化的误差,其性能可能不如卡尔曼滤波在处理线性系统时的表现。 总结一下: - 卡尔曼滤波适用于线性系统,扩展卡尔曼滤波适用于非线性系统。 - 卡尔曼滤波假设系统的动力学模型和观测模型都是线性的,扩展卡尔曼滤波通过线性化非线性系统来近似处理非线性问题。 - 扩展卡尔曼滤波的性能可能不如卡尔曼滤波在处理线性系统时的表现,因为线性化的误差会影响估计结果的准确性。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值