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

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

3天内不再提示

详解卡尔曼滤波器的工作原理

新机器视觉 来源:古月居 作者:古月居 2022-03-21 13:37 次阅读

原理

卡尔曼滤波器是一种基础预测定位算法。原理非常简单易懂。核心过程可以用一个图说明:

本质上就是这两个状态过程的迭代,来逐步的准确定位。

预测:当前状态环境下,对下一个时间段t的位置估计计算的值。

更新:更具传感器获取到比较准确的位置信息后来更新当前的预测问位置,也就是纠正预测的错误。

你可能要问为什么有传感器的数据了还要进行更新?因为在现实世界中传感器是存在很多噪声干扰的,所以也不能完全相信传感器数据。卡尔曼算法依赖于线性计算,高斯分布,我们以一维定位来介绍算法的实现。

接下来我们开更新,预测后我们获取到传感器数据,表示目前传感器发现小车的位置应该是在26这个位置,在这种情况下,我们肯定是觉得传感器的准确度比我之前的预测瞎猜要来的准确。

所以方差自然会比较小,最终我们觉得真是的小车位置应该是更靠近传感器数据的,而且方差会缩小,以至于,想想也很清楚,我猜了一个预测值,现在有个专家告诉了我相对比较靠谱的数据,那我对小车的位置的自信度肯定会上升啊。

最终小车的位置经过这个时间段t的更新就是下图红色的高斯图:

就这样不停的移动更新,最终小车的位置就会越来越准确。

一维模型下的Kalman公式:

预测

更新

参考代码:

#include #include #include 
using namespace std;
double new_mean, new_var;
tuple<double, double> measurement_update(double mean1, double var1, double mean2, double var2){  new_mean = (var2 * mean1 + var1 * mean2) / (var1 + var2);  new_var = 1 / (1 / var1 + 1 / var2);  return make_tuple(new_mean, new_var);}
tuple<double, double> state_prediction(double mean1, double var1, double mean2, double var2){  new_mean = mean1 + mean2;  new_var = var1 + var2;  return make_tuple(new_mean, new_var);}
int main(){  //Measurements and measurement variance  double measurements[5] = { 5, 6, 7, 9, 10 };  double measurement_sig = 4;    //Motions and motion variance  double motion[5] = { 1, 1, 2, 1, 1 };  double motion_sig = 2;    //Initial state  double mu = 0;  double sig = 1000;
  for (int i = 0; i < sizeof(measurements) / sizeof(measurements[0]); i++) {    tie(mu, sig) = measurement_update(mu, sig, measurements[i], measurement_sig);    printf("update: [%f, %f]
", mu, sig);    tie(mu, sig) = state_prediction(mu, sig, motion[i], motion_sig);    printf("predict: [%f, %f]
", mu, sig);  }
  return 0;}

原文标题:基础卡尔曼滤波

文章出处:【微信公众号:机器视觉智能检测】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红


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

    关注

    161

    文章

    7795

    浏览量

    177993
  • 算法
    +关注

    关注

    23

    文章

    4607

    浏览量

    92835
  • 原理
    +关注

    关注

    4

    文章

    550

    浏览量

    44891
收藏 人收藏

    评论

    相关推荐

    卡尔滤波器介绍

    卡尔滤波器介绍卡尔滤波器介绍Greg Welch1and Gary Bishop2TR 95
    发表于 07-14 13:06

    卡尔滤波器介绍

    卡尔滤波器介绍
    发表于 08-17 12:06

    卡尔滤波器通俗讲解

    卡尔滤波器通俗讲解
    发表于 08-17 12:06

    卡尔滤波器的使用原理

    [开发工具] STM32算法的翅膀之MATLAB基于加速度计与气压计的三阶卡尔滤波计算加速度、速度及高度主要介绍了卡尔
    发表于 08-17 07:02

    卡尔滤波器是什么

    一、前言卡尔滤波器是一种最优线性状态估计方法(等价于“在最小均方误差准则下的最佳线性滤波器”),所谓状态估计就是通过数学方法寻求与观测数据最佳拟合的状态向量。在移动机器人导航方面,
    发表于 11-16 09:10

    卡尔滤波器原理

    离散卡尔滤波器1960年,卡尔发表了他著名的用递归方法解决离散数据线性滤波问题的论文[Kal
    发表于 07-14 13:03 0次下载

    卡尔滤波器参数分析与应用方法研究

    介绍卡尔滤波器及其各种衍生方法。首先给出卡尔滤波器的算法流程以及所有参数的含义,并对影响
    发表于 06-21 17:56 6次下载

    图解卡尔滤波器

     卡尔滤波器是一种由卡尔(Kalman)提出的用于时变线性系统的递归滤波器。这个系统可用包含
    发表于 02-07 18:06 4892次阅读
    图解<b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波器</b>

    详细了解卡尔滤波器工作原理

    与我的朋友交谈时,我经常听到:“哦,卡尔(Kalman)滤波器……我经常学它,然后我什么都忘了”。好吧,考虑到卡尔
    的头像 发表于 05-05 08:25 9732次阅读
    详细了解<b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波器</b>的<b class='flag-5'>工作原理</b>

    基于卡尔滤波器的PID设计教程

    基于卡尔滤波器的PID设计教程
    发表于 06-03 10:27 37次下载

    卡尔滤波器及其应用基础.敬喜编

    卡尔滤波器及其应用基础.敬喜编
    发表于 10-18 10:14 0次下载

    卡尔滤波器的基本原理

    卡尔滤波器是一种基础预测定位算法。原理非常简单易懂。
    的头像 发表于 03-21 13:47 6028次阅读

    如何理解卡尔滤波器卡尔滤波器状态方程及测量方程

    卡尔滤波的最终输出是,真实的状态为,令 对误差的平方求最小值,同样可以推导出公式(1-5)到公式(1-7)。因此卡尔
    发表于 12-15 10:45 2862次阅读

    用于定位的实用卡尔滤波器

    电子发烧友网站提供《用于定位的实用卡尔滤波器.zip》资料免费下载
    发表于 06-16 10:07 0次下载
    用于定位的实用<b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波器</b>

    卡尔滤波器的特性及仿真

    我们前一篇关于人物识别跟踪的文章《视频连续目标跟踪实现的两种方法和示例(更新)》里讲到,视频图像中物体的识别和跟踪用到了卡尔滤波器(KF)。这里对这个话题我们稍微对这个卡尔
    的头像 发表于 11-04 11:36 319次阅读
    <b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波器</b>的特性及仿真