浅谈滤波中Q和R的调整——KF第三篇笔记

前段时间收到私信和email,问我关于Q和R怎么取、如何调。前面说过p0和x0怎么找的问题,Q和R怎么找还没有说过,这里就简单探讨一下。

Q和R的意义

Q值为过程噪声,越小系统越容易收敛,表示对模型预测的值信任度越高;但是太小则容易发散,如果Q为零,那么我们只相信预测值;Q值越大表示对于预测的信任度就越低,而对测量值的信任度就变高;如果Q值无穷大,那么则表示信任测量值。
R值为测量噪声。R太大,滤波的响应(此处响应特指对量测值的响应)会变慢,因为它对新测量的值的信任度降低;越小系统收敛越快,但过小则容易出现震荡。
如果Q和R选择不对,确实很影响滤波效果。可以做这样的实验:把R后面多加几个0,设10000吧,Q设为0,试试看,输出的结果应该跟不加观测量的时候是一样的,这是因为Q=0,R=10000几乎代表只相信系统预测的值,而不相信观测值了。如果系统输入是惯导,现在应该已经发散了。

选取(试错的起点)

Q和R的具体数值应该由过程噪声和测量噪声的外积期望决定,如果我们了解这些噪声的大小,那可以直接把Q和R算出来,做仿真的时候这是完全可以算出来的,算出来按道理就是最优估计了,后面的就不用看了。但实际情况大多是噪声大小知道大概是什么范围,但又不是特别了解,那就选一个心目中觉得最有可能的大小,先算出来一下Q换R,带进去。
这就是是错的起点。

调参

后面就可以慢慢调参了。
以我的经验,当Q过小时,易发散,当R过小时,误差会变大,同时如果搭配观测量同时看,R过小时滤波输出会趋近于观测量。
调试时可以先将Q从小往大调整,将R从大往小调整;先固定一个值去调整另外一个值,看收敛速度与波形输出。
在允许多次尝试时,编过一个程序,用几个for循环嵌套,github的链接:https://github.com/evandworld/findPQ

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MATLAB卡尔曼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值