0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

经典卡尔曼滤波算法步骤

FPGA之家 来源:FPGA之家 作者:FPGA之家 2021-01-07 10:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

假设我们能够得到被测物体的位置和速度的测量值04e04082-507a-11eb-8b86-12bb97331649.png,在已知上一时刻的最优估计值051226a6-507a-11eb-8b86-12bb97331649.png以及它的协方差矩阵0535ab80-507a-11eb-8b86-12bb97331649.png的条件下(初始值可以随意取,但协方差矩阵应为非0矩阵),则有05510588-507a-11eb-8b86-12bb97331649.png057d8324-507a-11eb-8b86-12bb97331649.png,即:

059a407c-507a-11eb-8b86-12bb97331649.png

而此时,

05e0f79c-507a-11eb-8b86-12bb97331649.png

如果我们加入额外的控制量,比如加速度060bca6c-507a-11eb-8b86-12bb97331649.png,此时063a5c56-507a-11eb-8b86-12bb97331649.png06581d68-507a-11eb-8b86-12bb97331649.png,则此时:

067349e4-507a-11eb-8b86-12bb97331649.png

同时,我们认为我们对系统的估计值并非完全准确,比如运动物体会突然打滑之类的,即存在一个协方差为068fa4cc-507a-11eb-8b86-12bb97331649.png的噪声干扰。因此,我们需要对06b3c1a4-507a-11eb-8b86-12bb97331649.png加上系统噪声06e66e4c-507a-11eb-8b86-12bb97331649.png来保证描述的完备性。综上,预测步骤的表达如下所示:

07053ee4-507a-11eb-8b86-12bb97331649.png

073d2ade-507a-11eb-8b86-12bb97331649.png

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

0769792c-507a-11eb-8b86-12bb97331649.png

07865100-507a-11eb-8b86-12bb97331649.png

我们假设观测值为079fb15e-507a-11eb-8b86-12bb97331649.png。同时由于观测数据同样会存在噪声干扰问题,比如传感器噪声等,我们将这种噪声的分布用协方差07be8c0a-507a-11eb-8b86-12bb97331649.png表示。此时,观测值07f1e406-507a-11eb-8b86-12bb97331649.png与估计值081663c6-507a-11eb-8b86-12bb97331649.png处于相同的状态空间,但具有不同的概率分布,如图2所示:

083c33a8-507a-11eb-8b86-12bb97331649.jpg

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

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

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

0886fcbc-507a-11eb-8b86-12bb97331649.png

08b0cdbc-507a-11eb-8b86-12bb97331649.png      

08e1e000-507a-11eb-8b86-12bb97331649.png

式中:08fdc04a-507a-11eb-8b86-12bb97331649.png描述高斯分布的协方差,092d918a-507a-11eb-8b86-12bb97331649.png表示高斯分布的均值,矩阵0954485c-507a-11eb-8b86-12bb97331649.png称为卡尔曼增益矩阵。

那么,将估计值097719f4-507a-11eb-8b86-12bb97331649.png以及观测值09a08a82-507a-11eb-8b86-12bb97331649.png代入式(8)至式(10),可以得到:

09b2d0d4-507a-11eb-8b86-12bb97331649.png

09dc3e88-507a-11eb-8b86-12bb97331649.png

09f6da7c-507a-11eb-8b86-12bb97331649.png

式中,0954485c-507a-11eb-8b86-12bb97331649.png称为卡尔曼增益。

将式(11)至式(13)中约去0a5650f6-507a-11eb-8b86-12bb97331649.png,并化简可得:

0a761f44-507a-11eb-8b86-12bb97331649.png

0a8f45f0-507a-11eb-8b86-12bb97331649.png

0aaaf21e-507a-11eb-8b86-12bb97331649.png

0abdb552-507a-11eb-8b86-12bb97331649.png即为我们所得到的最优估计值,同时0adca610-507a-11eb-8b86-12bb97331649.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. 算法分析

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

0b4eaae4-507a-11eb-8b86-12bb97331649.jpg

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

0b7593ca-507a-11eb-8b86-12bb97331649.jpg

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

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

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

责任编辑:xj

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

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

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

    关注

    10

    文章

    711

    浏览量

    58070
  • 算法
    +关注

    关注

    23

    文章

    4806

    浏览量

    98564
  • 卡尔曼滤波
    +关注

    关注

    3

    文章

    167

    浏览量

    25491

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

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    JY901S 9轴姿态角度传感器模块

    模块集成高精度的陀螺仪、加速度计、地磁场传感器,采用高性能的微处理器和先进的动力学解算与卡尔动态滤波算法,能够快速求解出模块当前的实时运动姿态。
    的头像 发表于 04-11 16:40 769次阅读
    JY901S 9轴姿态角度传感器模块

    单片机ADC采样算法-中位值平均滤波

    ); printf( "B%drn", val1 ); } } 主程序中循环读取AD口的采样值,并将采样值通过中位值平均滤波算法进行滤波,通过串口分别打印原始采样值
    发表于 01-22 06:17

    1+1>2”的融合哲学,组合导航如何进行数据融合

    一个核心东西—卡尔滤波器 数据融合的根本—以卡尔滤波器为核心的智慧大脑       如果组合
    的头像 发表于 12-18 16:16 349次阅读

    ADC的采样滤波算法利用卡尔滤波算法

    , text{δ2为测量噪声} end{cases} { Xk+1​=Xk​+δ1​,Zk+1​=Xk+1​+δ2​,​δ1​为系统噪声δ2​为测量噪声​ 2 卡尔滤波算法 我们知道
    发表于 12-01 07:44

    基于E203 RISC-V的音频信号处理系统 -ANC算法简介

    。20世纪30年代,德国波恩大学L. Paul首次提出了主动噪声控制的概念。20世纪80年代初期,J. C. Morgan和D. R. Burgress时提出经典滤波-x最小均方(Filtered-x
    发表于 10-28 07:50

    数据滤波算法的具体实现步骤是怎样的?

    (高频电磁、瞬时脉冲等),选择适配的滤波算法并落地。以下以电能质量监测中最常用的 IIR 低通滤波(抗高频干扰)、滑动平均滤波(抗瞬时脉冲)、卡尔
    的头像 发表于 10-10 16:45 1013次阅读

    哪些数字滤波算法适用于电能质量在线监测装置?

    在电能质量在线监测装置中,数字滤波算法的核心作用是 抑制干扰噪声、提取有效信号(如基波、谐波、暂态分量)、消除测量误差 ,最终确保电压 / 电流的幅值、频率、相位、谐波含量及暂态事件(暂升 / 暂降
    的头像 发表于 09-18 11:28 1003次阅读

    基于卡尔滤波的无刷电机转矩脉动抑制研究

    数据处理算法卡尔滤波器同时具备良好的滤波特性。因此文章在分析永磁无刷直流电动机数学模型的基础上,提出了一种基于
    发表于 07-29 16:13

    无位置传感器无刷直流电机最大转矩控制

    摘要:超前或滞后换相会造成无刷直流电机(BLDCM)输出转矩的减小和系统效率的降低。以平均电磁转矩最大化为目标,提出了一种基于扩展卡尔滤波算法的无刷直流电机最佳换相时刻估算方法。该方
    发表于 07-10 16:41

    基于Matlab与FPGA的双边滤波算法实现

    前面发过中值、均值、高斯滤波的文章,这些只考虑了位置,并没有考虑相似度。那么双边滤波来了,既考虑了位置,有考虑了相似度,对边缘的保持比前几个好很多,当然实现上也是复杂很多。本文将从原理入手,采用Matlab与FPGA设计实现双边滤波
    的头像 发表于 07-10 11:28 4829次阅读
    基于Matlab与FPGA的双边<b class='flag-5'>滤波</b><b class='flag-5'>算法</b>实现

    粗糙度的滤波值是怎么设置的?

    引言 在表面粗糙度测量中,滤波处理是分离表面轮廓中不同频率成分的关键步骤,而滤波值的设置直接影响粗糙度参数计算的准确性。合理设置滤波值,能够有效剔除表面轮廓中的形状误差和波纹度成分,保
    的头像 发表于 07-03 09:46 1128次阅读
    粗糙度的<b class='flag-5'>滤波</b>值是怎么设置的?

    常用的数字滤波算法及其特性

    常用的软件滤波器有限幅滤波法、中位值滤波法、算数平均滤波法、递推平均滤波法、中位值平均滤波法、限
    的头像 发表于 06-18 09:04 1390次阅读

    感应电机智能调速

    转矩控制,感应电机的积分模型,基于积分模型和神经网络的参数估计方法,扩展卡尔滤波器的无速度传感器控制,遗传算法优化的随机脉冲宽度调制(PWM)策略,感应电机智能控制实验系统、实验及实
    发表于 05-28 15:53

    滤波电路(多种设计方案+原理图)

    包含下面这几个及其经典的资料相对会对大家详细深入的了解滤波有很大的帮助: *滤波电路及其设计 *常见的滤波电路 *电源滤波电路 纯分享贴
    发表于 05-16 14:31

    蓝牙信标RSSI滤波算法

    蓝牙信标RSSI滤波算法‌主要用于处理RSSI值的不稳定性和噪声,以提高距离估计的准确性。RSSI(接收信号强度指示)是蓝牙信标中常用的参数,用于评估设备之间的距离或信号质量。然而,RSSI值的测量
    的头像 发表于 05-12 19:45 1192次阅读
    蓝牙信标RSSI<b class='flag-5'>滤波</b><b class='flag-5'>算法</b>