离散卡尔曼滤波的使用方法

离散KF介绍

KF作为一个迭代算法,所以它是离散的,虽然有连续KF这个说法,但是还是需要把模型打成离散化的形式才可以用于计算。
• 状态方程是微分形式的,需要根据不同的情况进行离散化处理
• 观测方程不是微分形式,而只是简单的线性变化,其内部又不含有采样时间等与时间有关的参数,所以不需要进行离散化(或者说离散形式和连续形式相同)

参数

  • 滤波参数的意义

方程中:x是状态量,z是观测量,φ换h是转移矩阵,ω是系统噪声,ν是观测噪声。这里忽略两个噪声的转移矩阵。
噪声是已知的、系统自带的、不可调的。如果可以调节,我们当然希望噪声为0,因为那样的话得到的结果最好;当然,如果噪声为0,滤不滤波似乎也没有意义了。。。
我们需要调节的参数就是R/Q/P这三个。在正常的卡尔曼滤波中,R和Q不变,P只需要提供一个初值。所以总结来说R/Q/P全都只需要确定一次,后面就不用管了。
• R代表的是观测误差(方差),R越大,表示观测值越不可靠。
• Q代表的是系统的误差(方差),Q越大,表示系统的估计值越不可靠。
• P代表目前迭代值的误差(方差),P越大,也表示系统的估计值越不可靠。
但是书上并没有说过寻找R和Q的方法。。。
为什么呢?因为R可以根据ν的数学参数确定,Q可以根据ω的数学参数确定。所以他们的意思是已经可以通过噪声的形式100%确定了,为什么还要寻找呢?直接搜就行了。可是很多时候我不知道ν和ω的方差啊!有没有一个好的方法可以迅速理解这些值的意义,然后像PID调参一样调节他们呢?
这个时候就需要上公式了:
x ̂_k=x ̂_k^−+K_k (z_k−H_k x ̂_k^−)
这张图也可以便于理解:

所以当观测值不可靠时,K就应该减小,如果K为0 ,则x ̂_k=x ̂_k^−,即滤波值完全由状态估计而来,与观测无关。如果系统的估计值不可靠时 ,K应该变大,K越大表示观测值越被接受。
通常,系统的估计是很不准、有累积误差的,而观测的累积误差几乎没有,但是噪声比较大(某些时候可能延迟还比较高)。当看到这样的滤波结果时,滤波器过于注重系统预测(即Q小了,要调大一点):

这样的结果表示太注重观测值了(即R小了,要调大一点):

一个自动调参的方向
见这个:卡尔曼自动调参(自适应)

使用方法

  • 确定初值

这里的初值指的是:x0-和P0-
三种取值方法:真值、期望、随机
真值:这是一个非常理想的角度,但是真值几乎没有办法取到,如果特定的系统真的可以取得真值,那不用看下面的了,取真值总没错。
期望:对于有些系统,可能x和P的初值不知道,但是根据之前的状态,大致可以知道期望,即使有一点偏差也无所谓,因为知道一个带有少量偏差的期望来滤波,偏差总不会太大。对于期望需要稍加处理。
随机:关于随机取值我的理解是:如果知道初值的大致区间,在这个区间内随机取,基于卡尔曼滤波的强大能力,一般情况下都不会发散的。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值