1 滤波算法:经典卡尔曼滤波-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

射频问问 来源:射频问问 2023-02-16 09:47 次阅读

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

44a3dd00-ad20-11ed-bfe3-dac502259ad0.png

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

假设我们能够得到被测物体的位置和速度的测量值44be82cc-ad20-11ed-bfe3-dac502259ad0.png,在已知上一时刻的最优估计值44da2d24-ad20-11ed-bfe3-dac502259ad0.png以及它的协方差矩阵44f0586a-ad20-11ed-bfe3-dac502259ad0.png的条件下(初始值可以随意取,但协方差矩阵应为非0矩阵),则有450a72ae-ad20-11ed-bfe3-dac502259ad0.png45218c82-ad20-11ed-bfe3-dac502259ad0.png,即:

45344340-ad20-11ed-bfe3-dac502259ad0.png                                             (1)

而此时,

4547ae62-ad20-11ed-bfe3-dac502259ad0.png                   (2)

如果我们加入额外的控制量,比如加速度45587dbe-ad20-11ed-bfe3-dac502259ad0.png,此时456f21b8-ad20-11ed-bfe3-dac502259ad0.png45877a24-ad20-11ed-bfe3-dac502259ad0.png,则此时:

45999448-ad20-11ed-bfe3-dac502259ad0.png                                (3)

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

45f3c21a-ad20-11ed-bfe3-dac502259ad0.png                                                        (4)

460b17da-ad20-11ed-bfe3-dac502259ad0.png                                                       (5)

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

461b68a6-ad20-11ed-bfe3-dac502259ad0.png                                                            (6)

462f7e40-ad20-11ed-bfe3-dac502259ad0.png                    (7)

我们假设观测值为463f25ca-ad20-11ed-bfe3-dac502259ad0.png。同时由于观测数据同样会存在噪声干扰问题,比如传感器噪声等,我们将这种噪声的分布用协方差465bb316-ad20-11ed-bfe3-dac502259ad0.png表示。此时,观测值4677e158-ad20-11ed-bfe3-dac502259ad0.png与估计值4691246a-ad20-11ed-bfe3-dac502259ad0.png处于相同的状态空间,但具有不同的概率分布,如图2所示:

46acde26-ad20-11ed-bfe3-dac502259ad0.jpg

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

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

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

46c82866-ad20-11ed-bfe3-dac502259ad0.png                                                            (8)

46db5b48-ad20-11ed-bfe3-dac502259ad0.png                                                        (9)

46f545e4-ad20-11ed-bfe3-dac502259ad0.png                                                                  (10)

式中:470f2716-ad20-11ed-bfe3-dac502259ad0.png描述高斯分布的协方差,47280970-ad20-11ed-bfe3-dac502259ad0.png表示高斯分布的均值,矩阵473e298a-ad20-11ed-bfe3-dac502259ad0.png称为卡尔曼增益矩阵。

那么,将估计值47551b9a-ad20-11ed-bfe3-dac502259ad0.png以及观测值4771af8a-ad20-11ed-bfe3-dac502259ad0.png代入式(8)至式(10),可以得到:

47820592-ad20-11ed-bfe3-dac502259ad0.png               (11)

47960466-ad20-11ed-bfe3-dac502259ad0.png                                              (12)

47b32802-ad20-11ed-bfe3-dac502259ad0.png               (13)

式中,473e298a-ad20-11ed-bfe3-dac502259ad0.png称为卡尔曼增益。

将式(11)至式(13)中约去47dbe3d2-ad20-11ed-bfe3-dac502259ad0.png,并化简可得:

47f2d93e-ad20-11ed-bfe3-dac502259ad0.png                                                     (14)

480bb8c8-ad20-11ed-bfe3-dac502259ad0.png                                                         (15)

482382e6-ad20-11ed-bfe3-dac502259ad0.png                                                                  (16)

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

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

2. 算法实现

function output = kalmanFilter(data, Q, R, N)
 
if ~exist('Q', 'var')
    Q = 0.01;
end
if ~exist('R', 'var')
    R = 1;
end
if ~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

3. 算法分析

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

4897daba-ad20-11ed-bfe3-dac502259ad0.jpg

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

48c146d4-ad20-11ed-bfe3-dac502259ad0.jpg

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

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

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波
    +关注

    关注

    10

    文章

    667

    浏览量

    56633
  • 算法
    +关注

    关注

    23

    文章

    4607

    浏览量

    92821
  • 卡尔曼滤波
    +关注

    关注

    3

    文章

    165

    浏览量

    24648
  • 滤波算法
    +关注

    关注

    2

    文章

    88

    浏览量

    13718
  • 输入信号
    +关注

    关注

    0

    文章

    455

    浏览量

    12547

原文标题:滤波算法:经典卡尔曼滤波

文章出处:【微信号:射频问问,微信公众号:射频问问】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    卡尔滤波

    卡尔滤波的估计值能很好的逼近真实值,我的疑惑是,这和滤波有什么关系,请高手介绍下卡尔
    发表于 07-04 22:57

    图书分享:卡尔滤波算法的几何解释

    网上搜到一篇关于卡尔滤波算法的论文,对低维卡尔滤波
    发表于 06-11 15:28

    卡尔滤波算法

    已知测量值和原始值,但测量噪声和观测噪声未知,如何进行卡尔滤波。之前看了好像可以用自适应卡尔,但不是很懂,求例子,最好有注释的
    发表于 03-23 19:12

    LabVIEW一维卡尔滤波算法

    最近正在学习卡尔滤波算法,用LabVIEW仿照C语言写了个一维的卡尔
    发表于 10-21 21:15

    卡尔滤波简介

    希望这篇笔记可以帮助到你。卡尔滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
    发表于 02-28 14:24

    卡尔滤波算法对比其他的滤波算法有什么优点?

    卡尔滤波算法对比其他的滤波算法有什么优点
    发表于 10-11 06:42

    卡尔滤波算法的改进方案

    卡尔滤波 算法具有收敛平稳、速度快、精度高的优点,在信号处理中受到广泛应用。但由于卡尔
    发表于 06-14 16:36 0次下载
    <b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波</b><b class='flag-5'>算法</b>的改进方案

    卡尔滤波学习及应用

    卡尔滤波的学习与应用。
    发表于 04-13 15:15 7次下载

    卡尔滤波算法

    卡尔滤波算法
    发表于 12-17 17:22 52次下载

    一种基于增量式卡尔滤波器的PMSM转速滤波算法_肖曦

    一种基于增量式卡尔滤波器的PMSM转速滤波算法_肖曦
    发表于 01-08 11:28 5次下载

    扩展卡尔滤波的原理

    在很多实际工程问题当中,非线性系统占大多数,而卡尔提出来的卡尔滤波器是一种针对线性系统的估计算法
    的头像 发表于 08-12 10:06 5632次阅读
    扩展<b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波</b>的原理

    浅析卡尔滤波

    在 飞行器姿态计算 中,卡尔滤波是最常用的姿态计算方法之一。今天就以目前的理解讲以下卡尔滤波
    的头像 发表于 06-14 10:44 2045次阅读

    MPU6050使用互补滤波卡尔滤波算法进行姿态解算

    MPU6050使用互补滤波卡尔滤波算法进行姿态解算
    发表于 08-07 15:46 10次下载

    什么是卡尔滤波?卡尔滤波的作用是什么

    一、什么是卡尔滤波? 你可以在任何含有不确定信息的动态系统中使用卡尔滤波,对系统下一步的走向
    的头像 发表于 08-08 09:39 6977次阅读
    什么是<b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波</b>?<b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波</b>的作用是什么

    卡尔滤波算法c语言实现方法

    卡尔滤波(Kalman Filter)是一种用于估计状态的算法,最初由R.E. Kalman在1960年提出。它是一种线性高斯滤波器,常用
    的头像 发表于 01-17 10:51 2919次阅读