服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

卡尔曼滤波的理解、推导和应用

日期: 来源:新机器视觉收集编辑:氢键H-H

点击下方卡片,关注“新机器视觉”公众号

重磅干货,第一时间送达

文章转载古月居

1. 卡尔曼滤波简介


目的 :对线性系统状态的估计

卡尔曼滤波(Kalman filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。

由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。

斯坦利·施密特(Stanley Schmidt)首次实现了卡尔曼滤波器。卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。


2. 卡尔曼滤波原理


方法 :利用状态过程中的噪声ω 和 观测噪声υ ,给予合理的权重,对状态x 进行估计

详解的原文链接:
http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/

对此,进行一些简单的描述,只求通俗易懂:

假如想开发了一个可以在树林里到处跑的小机器人,那么需要知道它实时所在的位置,才能导航。

可以在机器人上装GPS定位装置,精度大约为10米,但树林里有很多沟壑和悬崖,如果机器人走错了一步,就有可能掉下悬崖,所以这远远不够。

此时还可以获取一些运动的信息:

添加里程计和惯性惯性测量单元记录运动的过程,判断出机器人的姿势和行走距离。

获取发送给电机的指令,知道机器人是否在朝一个方向移动并且没有人干预,预测在下一个状态,机器人很可能朝着相同的方向移动。

但由于传感器的精度、树林里的坑坑洼洼和自然界的风等影响,里程计和惯性测量单元实际并不能非常精确表示机器人实际姿势和行走距离,预测也不是很完美。

GPS 、里程计和惯性测量单元等传感器告诉了我们一些状态信息,我们的预测告诉了我们机器人会怎样运动,但都只是间接的,并且伴随着一些不确定和不准确性。

但是,如果使用所有对我们可用的信息,根据其本身的噪声,分配一定的权重,就能得到一个比任何依据自身估计更好的结果,这就是卡尔曼滤波的用处。


3. 卡尔曼滤波的公式


3.1. 五个公式

先了解一下卡尔曼滤波的五个公式:


3.2. 公式作用

公式(一):计算预测状态值
公式(二):计算预测值和真实值之间的预测误差协方差矩阵
公式(三):在公式一和公式二的条件下,求得卡尔曼增益
公式(四):计算估计值
公式(五):计算估计值和真实值之间的误差协方差矩阵


4. 卡尔曼滤波的公式推导


4.1. 符号说明

在推导前,为了在推导过程中混淆,先做一个符号说明:


4.2. 概念说明

4.2.1 高斯分布

通过概率密度函数来定义高斯分布:

高斯分布的概率密度函数是:
均值为μ,标准差为σ

而上述的过程噪声ω 和 观测噪声υ皆服从高斯分布。

4.2.2 协方差矩阵

方差:各个样本与样本均值的差的平方和的均值,度量一组数据的分散程度。

协方差:两个变量总体误差的期望,度量两个变量线性相关性程度。

当两个变量是相同的情况,协方差就是方差。

如果两个变量的变化趋势相反,其中一个变量大于自身的期望值时,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

两者之间的联系或者关系,关系越大,协方差越大。

协方差矩阵:数据集中两两变量的协方差组成,每个元素是各个向量元素之间的协方差

噪声协方差矩阵越小说明噪声的误差越小,可信度越高,其对角线上的值就是方差。

误差协方差矩阵越小说明过程噪声和量测噪声的关系越小,用比例分开过程噪声ω 和 观测噪声υ,如果关系越小,分开的越精确。

比如一堆白砂糖和盐,如果两种混合的很均匀,说它关系很大,也就越难用比例的方法将其分开。

4.3. 更新优化的状态估计值

假定k时刻的系统状态与k-1时刻有关,并且内部有噪声,则


4.4. 求优化预测状态

在无噪声情况下的预测


观测新息反应了预测噪声ω和观测噪声υ对状态的综合影响

将过程噪声ωk 看作一个 新息 * 比例,则


其中公式(6),仅卡尔曼增益Kk为未知

4.5. 求卡尔曼增益

来看误差协方差矩阵:


而卡尔曼增益Kk应该使误差协方差矩阵Pk最小

状态新息(状态 - 预测状态):


假设在无噪声情况下,状态新息:


则误差协方差矩阵:


此时,来看看预测误差协方差矩阵:


此时,再把误差协方差矩阵展开:


若使用T表示误差协方差矩阵的对角线,则


对T[Pk ]求导,就可找到最小的均方差,使T[Pk ]最小,就能得到卡尔曼增益Kk

对T[Pk ]求导:


令其为0,则卡尔曼增益:


其中观测矩阵H和观测噪声协方差矩阵R为常数,所以卡尔曼增益Kk与预测误差协方差矩阵Pk’ 有关

4.6. 求预测误差协方差矩阵

假设观测矩阵 H = 1,那么卡尔曼增益:


则Pk’ 越大,Kk越大,权重重视反馈测量
则Pk’ 越小,Kk越小,权重重视预测值

此时,来看看下一状态的预测误差协方差矩阵:


因为状态x 和过程噪声ωk是独立的,所以再简化


其中状态转移矩阵A和预测噪声协方差矩阵Q为常数,所以预测误差协方差矩阵Pk’与上一状态的误差协方差矩阵Pk-1有关

4.7 求误差协方差矩阵


4.8. 加入外界对系统的作用

在加入外界对系统的作用时,可整理出卡尔曼滤波的五个公式:



5. 卡尔曼滤波应用


用python来简单说明

import numpy as npimport matplotlib.pyplot as plt
delta_t = 0.1                               # 每秒钟采一次样end_t = 7                                   # 时间长度time_t = end_t * 10                         # 采样次数t = np.arange(0, end_t, delta_t)            # 设置时间数组
u = 1                                       # 定义外界对系统的作用 加速度x = 1 / 2 * u * t ** 2                      # 实际真实位置
v_var = 1                                   # 测量噪声的方差# 创建高斯噪声,精确到小数点后两位v_noise = np.round(np.random.normal(0, v_var, time_t), 2)
X = np.mat([[0], [0]])                      # 定义预测优化值的初始状态v = np.mat(v_noise)                         # 定义测量噪声z = x + v                                   # 定义测量值(假设测量值=实际状态值+噪声)A = np.mat([[1, delta_t], [0, 1]])          # 定义状态转移矩阵B = [[1 / 2 * (delta_t ** 2)], [delta_t]]   # 定义输入控制矩阵P = np.mat([[1, 0], [0, 1]])                # 定义初始状态协方差矩阵Q = np.mat([[0.001, 0], [0, 0.001]])        # 定义状态转移(预测噪声)协方差矩阵H = np.mat([1, 0])                          # 定义观测矩阵R = np.mat([1])                             # 定义观测噪声协方差X_mat = np.zeros(time_t)                    # 初始化记录系统预测优化值的列表
for i in range(time_t):    # 预测    X_predict = A * X + np.dot(B, u)        # 估算状态变量    P_predict = A * P * A.T + Q             # 估算状态误差协方差    # 校正    K = P_predict * H.T / (H * P_predict * H.T + R)     # 更新卡尔曼增益    X = X_predict + K * (z[0, i] - H * X_predict)       # 更新预测优化值    P = (np.eye(2) - K * H) * P_predict                 # 更新状态误差协方差    # 记录系统的预测优化值    X_mat[i] = X[0, 0]
plt.rcParams['font.sans-serif'] = ['SimHei']    # 设置正常显示中文plt.plot(x, "b", label='实际状态值')             # 设置曲线数值plt.plot(X_mat, "g", label='预测优化值')plt.plot(z.T, "r--", label='测量值')plt.xlabel("时间")                               # 设置X轴的名字plt.ylabel("位移")                               # 设置Y轴的名字plt.title("卡尔曼滤波示意图")                     # 设置标题plt.legend()                                    # 设置图例plt.show()                                      # 显示图表

运行上面的卡尔曼滤波,得到下图:


可以看出,尽管测量值波动很大,但最终的预测优化值与实际状态值相差不大。

[1] python的代码地址:
https://github.com/JoveH-H/A-simple-explanation/blob/master/Kalman_filtering.py
[2] jupyter notebook的代码地址:
https://github.com/JoveH-H/A-simple-explanation/blob/master/ipynb/Kalman_filtering.ipynb

版权声明:本文为CSDN博主「氢键H-H」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/qq_32618327/article/details/89669062


本文仅做学术分享,如有侵权,请联系删文。

—THE END—

相关阅读

  • ​详细剖析模板匹配

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达模板匹配介绍我们需要2幅图像:原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域模板 (T): 将和原图像
  • 棋手被指控电话作弊后被驱逐出罗马尼亚锦标赛

  • 一名国际象棋选手被罗马尼亚国际象棋锦标赛开除,因为在洗手间发现了一部手机,手机上的国际象棋应用程序显示了他在第15步之后的棋局情况。尽管手机上的某些信息强烈表明这
  • 国际棋联:“尼曼作弊争议”调查状态更新!

  • 2022年9月初美国辛克菲尔德杯赛爆发尼曼作弊争议,在棋界引起轩然大波。9月底,国际棋联公平竞赛委员会成立调查小组,调查作弊争议。三个月后的12月20日,国际棋联曾发布调查进展,表
  • 国际棋联出题(11):卡尔森的漏杀

  • 2023年Pro Chess League正在chess.com平台火热进行中。2月22日,世界棋王卡尔森在与印度特级大师维迪特一战中,获得了如下的局面:此时,执白的世界棋王卡尔森有杀棋,但钟面还剩30秒
  • 当一个孩子被诊断为“无价值” | 人间

  • 斯皮格朗地的格罗斯医生“走上前,指着我们当中某些人,说:‘你,你,你,还有你。’那些孩子就从人群中被带出来。他们最早选出的孩子要么总尿床,要么患有兔唇,或是思维迟钝的人”。配图
  • 2023塔塔钢铁大赛今晚开战 丁立人参加

  • 历史悠久的著名赛事塔塔钢铁大赛今晚打响,日程表(北京时间):Round 1 2023年1月14日 下午9:15 Round 2 2023年1月15日 下午9:15 Round 3 2023年1月16日 下午9:15
  • 1亿+粉丝后,小杨哥「疯狂」开小号!

  • 关注「电商老高」公众号并转发本文凭截图免费领取仓储宝典中大型电商仓储供应链必做布局直播短视频的格局一天一个样,中腰部们还在苦思冥想不得要领的时候,顶流们随便一个决定
  • 再见了,大主播

  • 潮水的流向,已经发生了转变。来源 |首席电商观察(微信ID:EC-guancha)作 者 | 李 迎排 版 | 群 响01美ONE打造主播“选秀”综艺在《所有女生的offer》爆火,引领了一波带
  • SEO精准引流2万+,低成本引流获客经验分享

  • 引流,不管做什么项目,流量都是至关重要的一环,怎么实现精准引流呢?这里核心会有两个关键问题:1.如何选择一个性价比高的渠道先进行引流?2.不同渠道如何精准引流?全文共9000多字,生财

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 卡尔曼滤波的理解、推导和应用

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达文章转载古月居1. 卡尔曼滤波简介目的 :对线性系统状态的估计卡尔曼滤波(Kalman filtering)一种利用线性系统状态方
  • 总结 | 六大路径规划算法

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达来源 | 搬砖的旺财@知乎来源 | https://zhuanlan.zhihu.com/p/51372134编辑 | 焉知智能汽车1.自主机器人近距离
  • 七大机器视觉应用!

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达资料来源:IoT Analytics物联网智库 编译导读机器视觉是一项令人兴奋的技术,在toC领域,我们已经看到了体验到了它的
  • 2022工业机器人排行榜

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达工业互联网周刊发布“2022工业机器人排行榜”。一直以来,工业机器人都被视作“制造业皇冠顶端的明珠”,其研发、制
  • 关于ChatGPT八个技术问题的猜想

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达文 | 张家俊@知乎看到ChatGPT的华丽诞生,心情很复杂,既高兴、惊喜,也感到恐慌,高兴和惊喜的是没有预料到这么快就见
  • 光学系统的坐标系统、结构参数和光学特性参数

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达来源:3d tof为了计算光学系统的像质评价指标,必须先明确光学系统的坐标系统、结构参数和光学特性参数的表示方法。