卡尔曼滤波算法_滤波算法:经典卡尔曼滤波

本文详细介绍了卡尔曼滤波算法的基本原理和实现步骤,通过实例展示了其在信号滤波中的优秀效果,特别适用于输入信号平稳或系统运动学模型已知的场合。卡尔曼滤波能有效去除高斯噪声和非高斯噪声,但在系统模型不精确时,可通过增加采样频率改善滤波效果。
摘要由CSDN通过智能技术生成

欢迎FPGA工程师加入官方微信技术群

点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群

afe0211ff09967e047a876de9d1f21b2.png

卡尔曼滤波实质上就是基于观测值以及估计值二者的数据对真实值进行估计的过程。预测步骤如图1所示:

f40c591e4fed06c14eab1398593d58c0.png

图1 卡尔曼滤波原理流程图

假设我们能够得到被测物体的位置和速度的测量值075bebf824e075d3739939433a8e24c8.png,在已知上一时刻的最优估计值c1e69a34e5b4d5c9435dd993859dc456.png以及它的协方差矩阵69e0f4d9f333d1296297f8047559523f.png的条件下(初始值可以随意取,但协方差矩阵应为非0矩阵),则有0b2f5a2e977a13450d300a19e894a702.pngdd12d1c4e851539906c91490ace9bdaa.png,即:

c4450b6aaa871cca0fb93fb2cfc299e5.png                                             (1)

而此时,

3cf476e32e579895cd34a9825e07f6e9.png                   (2)

如果我们加入额外的控制量,比如加速度ca9b8d5e653d777bb230a4c1dc398e34.png,此时a8ca3a09151584c337bf214bdd009d07.pngadeaa22d5da99fbe845db58624d8b87e.png,则此时:

9dde6365523cefa12599107215675fe9.png                                (3)

同时,我们认为我们对系统的估计值并非完全准确,比如运动物体会突然打滑之类的,即存在一个协方差为2ebab9f7e9aa09834e57558c5af57536.png的噪声干扰。因此,我们需要对7489d06a8bbffc483e05f56ec17033ef.png加上系统噪声fa6e13baca48f10ee47f53b26b74e9d1.png来保证描述的完备性。综上,预测步骤的表达如下所示:

2b8ad65bba4f605c84ace1d2ebee5d7a.png                                                        (4)

ba64dd24234c640d2a0f17e066dfccd9.png                                                       (5)

由于误差累积的作用,单纯对系统进行估计会导致估计值越来越离谱,因此我们以传感器的观测数据对我们的估计进行修正。我们可以用与预测步骤类似的方法将估计值空间映射至观测值空间,如下式所示:

54f421ef3ac992747ef7026f38729876.png                                                            (6)

5ff7270a0dd24ddb3c2120b9f62005ea.png                    (7)

我们假设观测值为ee8b8408269eb5a28ef47fb331b47705.png。同时由于观测数据同样会存在噪声干扰问题,比如传感器噪声等,我们将这种噪声的分布用协方差da4bff7b1454c57ec049745480bd915f.png表示。此时,观测值8b4058ea5268c7d214c3792880b3bdf7.png与估计值fcc58a6d3ab1989f5b4fdd6ff454f0fe.png处于相同的状态空间,但具有不同的概率分布,如图2所示:

b76be9ab192fdea0a26a9d0e46447b97.png

图2 估计值与观测值概率分布示意图

我们可以认为,这两个概率分布的重叠部分,会更加趋近系统的真实数据,即有更高的置信度,比如我们估计汽车速度是5~10km/h,传感器反馈的速度是8~12km/h,那我们有理由认为汽车的实际速度更趋近于8~10km/h这个区间。

这里将观测值与估计值两个分布的高斯分布相乘,其结果的高斯分布描述如下:

400d0410bcc62fbbec8ace6d55524c74.png                                                            (8)

b31f86c7f49aaf2758ad35d747d87563.png                                                        (9)

4533026bb35eab205be368232b47ca66.png                                                                  (10)

式中:455a89f3946cbe373a8d8aa15a410954.png描述高斯分布的协方差,22b294d9f7f08a4503bef64609e2d5cb.png表示高斯分布的均值,矩阵5427178a00677a244db93f5fa9a68947.png称为卡尔曼增益矩阵。

那么,将估计值f379d09d78f64b7cd263697dd8be57de.png以及观测值0348c07d5d94afc8b15a554532fbe207.png代入式(8)至式(10),可以得到:

a5fa106a2bda6ca4f0499cfeebd82d03.png               (11)

54a32c6e8cd9d95d153a01a0cedf15ca.png                                              (12)

75d4aa94b8907608e39d46bc31ab2bf6.png               (13)

式中,5427178a00677a244db93f5fa9a68947.png称为卡尔曼增益。

将式(11)至式(13)中约去57d022c5be5998f447e170825767a874.png,并化简可得:

d6f9dfb91ea57ee0b4ce7d3c5e112e75.png                                                     (14)

39978ba6cfeef4bb07101c653419068b.png                                                         (15)

21deba29efda5f02dd62231a2915568f.png                                                                  (16)

ac3d4145d7f7b637fd8d3054b56bb89e.png即为我们所得到的最优估计值,同时095a1c5bebc44e0063dabd273ad3e810.png为其对应的协方差矩阵。在实际应用中,只需要使用式(4)、式(5)以及式(14)至式(16)这5个方程即可实现完整的卡尔曼滤波过程。

在对单一信号源滤波的场合,由于测量值与估计值具备几乎完全相同的概率分布,为了更好的实现去噪效果,在假定被测对象变化不显著的情况下,可以将之前(1~N)个时间节点的测量值随机作为当前时间节点的测量值,以实现更好的去噪效果。原则上,N取值越大滤波效果越好,但也会导致滤波结果滞后越严重。

2. 算法实现

e185a7e4296db29923271c4342eee571.png

function output = kalmanFilter(data, Q, R, N)if ~exist('Q', 'var')
Q = 0.01;
endif ~exist('R', 'var')
R = 1;
endif ~exist('N', 'var')
N = 0;
end
X = 0;
P = 1;
A = 1;
H = 1;
output = zeros(size(data));for ii = N + 1 : length(data)
X_k = A * X;
P_k = A * P * A' + Q;
Kg = P_k * H' / (H * P_k * H' + R);
z_k = data(ii - round(rand() * N));
X = X_k + Kg * (z_k - H * X_k);
P = (1 - Kg*H) * P_k;
output(ii) = X;
end
end

e185a7e4296db29923271c4342eee571.png

3. 算法分析

采用经典卡尔曼滤波对虚拟信号及真实信号进行滤波,结果如下图所示:

437aaf693406894bf7f03de56841d50a.png

图3 经典卡尔曼滤波对虚拟信号滤波结果

dbfeeefc03af7c4516e25c63e531aa66.png

图4 经典卡尔曼滤波对真实信号滤波结果

从滤波结果中可以看出,经典卡尔曼对信号的滤波效果较为优秀,实时性相对较好,计算量需求极小,能够有效去除高斯噪声以及非高斯噪声,基本不受脉冲信号影响。在对被测系统的建模较为精确的条件下,其性能还能够进一步提升。其缺点主要在于需人为给定系统模型,当系统模型不精确时滤波效果会有所下降,但可以通过增加采样频率解决此问题。

建议应用场合:输入信号相对平稳或已知被测系统运动学模型,同时要求运算量极小的场合。

33da3c9df890233bd86804dbe7ce8041.png

欢迎FPGA工程和嵌入式等工程师关注公众号

0e1d88e04cecc9f9e235ef12db5bfc3e.png

全国第一大FPGA微信技术群

欢迎大家加入全国FPGA微信技术群,这个群体拥有数万工程师、一群热爱技术的工程师,这里的FPGA工程师相互帮助,相互分享,技术氛围浓厚!赶紧叫上小伙伴一起加入吧!

52de2ac987dac8ecba55c814426eb922.png

用手指按住就可以加入FPGA全国技术群哦

FPGA之家元器件芯城

优势元器件服务,有需求请扫码联系群主:金娟 邮箱:293580331@qq.com 欢迎推荐给采购

ACTEL、AD部分优势订货(经营全系列):

a2e81079e686b4f0b5c22db3b63b27bb.png

XILINX、ALTERA优势现货或订货(经营全系列):

d1471bd169fabe3653e193b95091f8ac.png

(以上器件为部分型号,更多型号请咨询群主金娟)

服务理念:FPGA之家元器件自营芯城,旨在方便工程师快速方便购买器件服务,经过数年竭诚服务,我们的客服遍布国内大型上市公司、军工科研单位、中小企业、最大的优势是强调服务至上的理念、并且做到快速交货、价格优惠!

直营品牌:Xilinx ALTERA ADI TI NXP ST E2V、镁光 等百余元器件品牌,尤其擅长欧美对华禁运器件,欢迎工程师朋友把我们推荐给采购或者亲自咨询我们!我们将一如既往提供业内最佳服务!

69155760bf22fa1e2f39b93653deda58.png

FPGA技术群官方鸣谢品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值