最近学习了一些预测算法

卡尔曼滤波

具体推导可以查看B站的教程:贝叶斯滤波与卡尔曼滤波第一讲 很有必要的绪论_哔哩哔哩_bilibili

建议从第一讲开始看

看上述教程花不了多少时间,可能看一个电影的时间就可以学会了

本文章不涉及任何推导过程(想看推导的可以退出了)

假设现在有一个信息为X(假设是一维的高斯分布)

Xe : X_evaluate即对X的估计值(卡尔曼滤波的结果)

Xp : X_predict即对X的预测(假设后一个状态至于前一个状态有关,且是线性关系)

Y:Y是对X的观测值(假设X的位置与观测到的Y也是一个线性关系)

预测方程:

,F是Xp与Xelas的线性关系的系数,Q是这种预测方式的误差

观测方程:

,H是Y与Xp的线性关系的系数,R是这种观测方式的误差

由于X是正态分布,我们只关心它的均值和方差

由卡尔曼滤波可得:

Xpnow的均值=Xelas的均值*F

Xpnow的方差=Xelas的方差*F*F+Q

设K=H*(Xpnow的方差)/ (H*H*(Xpnow的方差)+ R)

Xenow的均值=Xpnow的均值+K*(观测值Y - Xpnow的均值*H)

Xenow的方差=(1-K*H)*(Xpnow的方差)

若X是n维的向量信息,此时F,H,Q,R都是矩阵

对应的预测方程和观测方程也会改变了

那么就由矩阵形式的卡尔曼滤波:

Xpnow的均值=F*(Xelas的均值)

Xpnow的协方差矩阵=F*(Xelas的协方差矩阵)*(F的转置)+ Q

设K=(Xpnow的协方差矩阵)*(H的转置)/ (H*(Xpnow的协方差矩阵)*(H的转置)+ R)

Xenow的均值=Xpnow的均值+K*(观测值Y - H*(Xpnow的均值))

Xenow的协方差矩阵=(I - K*H)*(Xpnow的协方差矩阵)

如果调用了<Eigen/Dense>库的话,代码是很好写的

关于Eigen库在ubuntu下的安装,就是去官网下载最新版本,然后解压,把里面的Eigen文件夹和unsupported文件夹用sudo cp复制到usr/local/include即可

扩展卡尔曼滤波

还是一样的定义

只不过不是线性关系了,F矩阵和H矩阵变成了f(x)函数和h(x)函数了

但是没关系,我们可以求出雅克布矩阵,用一阶偏导来拟合f(x)和h(x)函数

所以,还是一样的式子,只不过在带入的时候略有区别

设F是f(x)的雅克布矩阵,H是h(x)的雅克布矩阵

Xpnow的均值=f(Xelas的均值)————可以直接带

Xpnow的协方差矩阵=F*(Xelas的协方差矩阵)*(F的转置)+ Q

设K=(Xpnow的协方差矩阵)*(H的转置)/ (H*(Xpnow的协方差矩阵)*(H的转置)+ R)

Xenow的均值=Xpnow的均值+K*(观测值Y - h(Xpnow的均值))

Xenow的协方差矩阵=(I - K*H)*(Xpnow的协方差矩阵)

雅克布矩阵是什么?

一个函数y=f(x),传进去是一个n维向量,传出来是一个m维向量

那么它的雅克布矩阵就是一个m*n的一阶偏导矩阵

(来自百度百科)

怎么用计算机求雅克布矩阵?

调用<ceres/jet.h>库,使用Jet类型进行运算,带入函数y=f(x)即可

关于jet.h的求导方法

其实就是给运算的对象加一个极小值标记  ,可以进行相加运算,两个  乘在一起则等于0

原理类似微积分发展初期的牛顿使用的求导方法,以及忽略二阶无穷小量的策略

关于ceres库在ubuntu下的安装

去官网,一个一个指令复制粘贴即可

代码:

自己写

upd2022.1.18:NX上竟然用不了ceres库,所以能手动求偏导就手动求偏导吧

卡尔曼滤波KF与扩展卡尔曼滤波EKF算法相关推荐

  1. ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***

    ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)*** ## 1 研究背景 电池的荷电状态(SOC)代表的是电池当前的剩余容量,数值定义是电池剩余电量与电池额 ...

  2. 状态估计3(扩展卡尔曼滤波)

    1 简述 卡尔曼滤波适用于线性高斯系统,然而这是一个强假设:对于大部分机器人系统而言,非线性系统才是常态,如此卡尔曼滤波就不太适用了,那么该如何解决这个问题?这引出了扩展卡尔曼滤波. 2 扩展卡尔曼滤 ...

  3. 始卡尔曼滤波算法(KF)、扩展卡尔曼滤波算法(EKF)以及无迹卡尔曼滤波算法(UKF)三者之间的区别?

    原始卡尔曼滤波算法(KF).扩展卡尔曼滤波算法(EKF)以及无迹卡尔曼滤波算法(UKF)三者之间的区别? 原文:https://www.zhihu.com/question/22714163/answ ...

  4. 卡尔曼滤波(KF)和扩展卡尔曼滤波(EKF)相应推导

    从上个世纪卡尔曼滤波理论被提出,卡尔曼滤波在控制论与信息论的连接上做出了卓越的贡献.为了得出准确的下一时刻状态真值,我们常常使用卡尔曼滤波.扩展卡尔曼滤波.无迹卡尔曼滤波.粒子滤波等等方法,这些方法在 ...

  5. 扩展卡尔曼滤波(EKF)算法详细推导及仿真(Matlab)

    前言 扩展卡尔曼滤波算法是解决非线性状态估计问题最为直接的一种处理方法,尽管EKF不是最精确的"最优"滤波器,但在过去的几十年成功地应用到许多非线性系统中.所以在学习非线性滤波问题 ...

  6. 初学卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)以及无迹卡尔曼滤波(UKF)

    由于研究需要,最近在看卡尔曼滤波,做个小总结. 最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论.从理论上说,维纳滤波的最大 ...

  7. 自动驾驶算法-滤波器系列(二)—— 卡尔曼滤波简介及其变种(EKF、UKF、PF)介绍

    KF&EKF&UKF&PF 1. 基础知识概要 协方差矩阵 多维高斯分布 状态空间表达式 2. 什么是卡尔曼滤波器 3. 五个重要的公式 公式介绍 公式推导过程 4. 卡尔曼滤 ...

  8. 扩展卡尔曼滤波(EKF)理论讲解与实例(matlab、python和C++代码)

    扩展卡尔曼滤波(EKF)理论讲解与实例(matlab.python和C++代码) 文章目录 扩展卡尔曼滤波(EKF)理论讲解与实例(matlab.python和C++代码) 理论讲解 KF和EKF模型 ...

  9. 扩展卡尔曼滤波EKF与多传感器融合

    Extended Kalman Filter(扩展卡尔曼滤波)是卡尔曼滤波的非线性版本.在状态转移方程确定的情况下,EKF已经成为了非线性系统状态估计的事实标准.本文将简要介绍EKF,并介绍其在无人驾 ...

最新文章

  1. [转] C#中绘制矢量图形
  2. 深入理解ByteBuffer
  3. ML之DT:基于简单回归问题训练决策树(DIY数据集+三种深度的二元DT性能比较)
  4. 一文带你了解mysql sql model的only_full_group_by模式含Error 1055问题分析
  5. Java SpringMVC实现PC端网页微信扫码支付完整版
  6. 密码学专题 序列号文件
  7. fedora yum 安装mysql
  8. Google code android开源项目(五)
  9. 计算机用键盘能干什么,年轻人的第一块智能键盘-半台MBP能干什么?
  10. dll注入之SetWindowsHookEx 键盘消息钩子
  11. android手机界面分区,Android手机fastboot 刷机命令(示例代码)
  12. 解决word2019复制卡顿
  13. 算法笔记 —— 汉诺塔详解
  14. (姊妹仨)BlazePalm: 先检手掌再检骨架,虚拟合成数据助力 2.5D 信息输出
  15. jQuery动画函数
  16. 2021秋招CVTE面经
  17. c语言的int型运算符,C语言运算符
  18. 台式您想使用系统还原计算机吗,系统还原功能已关闭。如果继续安装,将不能使用系统还原随您的计算机运行的Windows操作系统提供的Windows - Microsoft Community...
  19. 【欧拉计划第 13 题】 大数之和 Large sum
  20. woocommerce对接paypal如何进行沙盒测试?

热门文章

  1. jade学习系列之一
  2. vba 跨工作簿运行模块
  3. C#模拟登录普联TP-LINK的AP设备(数据分析之登录篇)
  4. MathType中输入空格的方法
  5. 08弹性哈希供应加剧了自私挖矿攻击
  6. Abaqus-python-二次开发学习笔记-单向长纤维RVE
  7. Okio原理分析之简介
  8. libGDX游戏开发之打包游戏(十二)
  9. 关于知识、技能、能力的理解?(个人理解)
  10. 180922MELO基础知识汇总