基本原理

  • 1.局部线性化过程
  • 2.线性kalman滤波

同一般的卡尔曼滤波器(KF)不同的是,扩展卡尔曼滤波器(EKF)是为了解决 在非线性系统中,状态噪声和测量噪声均为高斯分布时,进行最优的状态估计的问题

  • 基本思想:将非线性系统滤波问题近似化为线性系统的滤波问题。具体做法是将非线性的状态方程f(∗)f(*)f(∗)和测量方程h(∗)h(*)h(∗)在状态值Xk^\hat{X_k}Xk​^​处进行泰勒展开,并且忽略掉二阶及以上项。转化为线性系统滤波,最后用Kalman滤波进行状态估计。
  • 用途:导弹,卫星,飞机等系统的状态估计问题。

1.局部线性化过程

一般的离散非线性系统大概可以表示成下面的式子:
X(k+1)=f[X(k),k]+G(k)W(k)(1)Z(k)=h[X(k),k]+V(k)(2)X(k+1) = f[X(k),k]+G(k)W(k) \ \ (1)\\Z(k)=h[X(k),k]+V(k) \ \ (2)X(k+1)=f[X(k),k]+G(k)W(k)  (1)Z(k)=h[X(k),k]+V(k)  (2)
其中W(k)W(k)W(k)为状态噪声,V(k)V(k)V(k)为观测噪声,其状态噪声的协方差矩阵为QQQ,观测噪声的协方差矩阵为RRR。
对于(1)在先验估计Xk^\hat{X_k}Xk​^​处进行一阶泰勒展开:
X(k+1)=f(k,Xk^)+∂f∂Xk^(Xk−Xk^)+G(k)W(k)X(k+1)=f(k,\hat{X_k})+\frac{\partial{f}}{\partial{\hat{X_k}}}(X_k-\hat{X_k})+G(k)W(k) X(k+1)=f(k,Xk​^​)+∂Xk​^​∂f​(Xk​−Xk​^​)+G(k)W(k)在这里我们设:
Φ(k+1∣k)=∂f∂Xk^=∂f∂X∣X=Xk^ϕ(k)=f(k,Xk^)−∂f∂XkXk^\Phi(k+1|k)=\frac{\partial{f}}{\partial{\hat{X_k}}}=\frac{\partial{f}}{\partial{X}}|_{X=\hat{X_k}}\\ \phi(k)=f(k,\hat{X_k})-\frac{\partial{f}}{\partial{X_k}}\hat{X_k}Φ(k+1∣k)=∂Xk​^​∂f​=∂X∂f​∣X=Xk​^​​ϕ(k)=f(k,Xk​^​)−∂Xk​∂f​Xk​^​因此可以将状态方程化为:
X(k+1)=Φ(k+1∣k)X(k)+ϕ(k)+G(k)W(k)X(k+1)=\Phi(k+1|k)X(k)+\phi(k)+G(k)W(k)X(k+1)=Φ(k+1∣k)X(k)+ϕ(k)+G(k)W(k)其中Φ(k+1∣k)\Phi(k+1|k)Φ(k+1∣k)被称为状态转移矩阵:Φ(k+1∣k)=∂f∂Xk^=(∂f1∂x1∂f1∂x2∂f1∂x3...∂f1∂xn∂f2∂x1∂f2∂x2∂f2∂x3...∂f2∂xn...∂fn∂x1∂fn∂x2∂fn∂x3...∂fn∂xn)∣X=Xk^\Phi(k+1|k)=\frac{\partial{f}}{\partial{\hat{X_k}}}=\begin{pmatrix} \frac{\partial{f_1}}{\partial{x_1}} & \frac{\partial{f_1}}{\partial{x_2}} & \frac{\partial{f_1}}{\partial{x_3}}...& \frac{\partial{f_1}}{\partial{x_n}}\\ \frac{\partial{f_2}}{\partial{x_1}} & \frac{\partial{f_2}}{\partial{x_2}} & \frac{\partial{f_2}}{\partial{x_3}}...& \frac{\partial{f_2}}{\partial{x_n}} \\...\\ \frac{\partial{f_n}}{\partial{x_1}} & \frac{\partial{f_n}}{\partial{x_2}} & \frac{\partial{f_n}}{\partial{x_3}}...& \frac{\partial{f_n}}{\partial{x_n}} \end{pmatrix}|_{X=\hat{X_k}} Φ(k+1∣k)=∂Xk​^​∂f​=⎝⎜⎜⎜⎛​∂x1​∂f1​​∂x1​∂f2​​...∂x1​∂fn​​​∂x2​∂f1​​∂x2​∂f2​​∂x2​∂fn​​​∂x3​∂f1​​...∂x3​∂f2​​...∂x3​∂fn​​...​∂xn​∂f1​​∂xn​∂f2​​∂xn​∂fn​​​⎠⎟⎟⎟⎞​∣X=Xk​^​​同样的,将(2)在Xk^\hat{X_k}Xk​^​处同样可以进行一阶泰勒展开,得到:Z(k)=H(k)X(k)+y(k)+V(k)Z(k)=H(k)X(k)+y(k)+V(k)Z(k)=H(k)X(k)+y(k)+V(k)其中:H(k)=∂h∂Xk^=(∂h1∂x1∂h1∂x2∂h1∂x3...∂h1∂xn∂h2∂x1∂h2∂x2∂h2∂x3...∂h2∂xn...∂hn∂x1∂hn∂x2∂hn∂x3...∂hn∂xn)∣X=Xk^H(k)=\frac{\partial{h}}{\partial{\hat{X_k}}}=\begin{pmatrix} \frac{\partial{h_1}}{\partial{x_1}} & \frac{\partial{h_1}}{\partial{x_2}} & \frac{\partial{h_1}}{\partial{x_3}}...& \frac{\partial{h_1}}{\partial{x_n}}\\ \frac{\partial{h_2}}{\partial{x_1}} & \frac{\partial{h_2}}{\partial{x_2}} & \frac{\partial{h_2}}{\partial{x_3}}...& \frac{\partial{h_2}}{\partial{x_n}} \\...\\ \frac{\partial{h_n}}{\partial{x_1}} & \frac{\partial{h_n}}{\partial{x_2}} & \frac{\partial{h_n}}{\partial{x_3}}...& \frac{\partial{h_n}}{\partial{x_n}} \end{pmatrix}|_{X=\hat{X_k}}H(k)=∂Xk​^​∂h​=⎝⎜⎜⎛​∂x1​∂h1​​∂x1​∂h2​​...∂x1​∂hn​​​∂x2​∂h1​​∂x2​∂h2​​∂x2​∂hn​​​∂x3​∂h1​​...∂x3​∂h2​​...∂x3​∂hn​​...​∂xn​∂h1​​∂xn​∂h2​​∂xn​∂hn​​​⎠⎟⎟⎞​∣X=Xk​^​​

2.线性kalman滤波

将非线性的方程转化成线性之后就可以进行kalman滤波了:
X^k−=f(X^k−1)P^k−=Φ(k∣k−1)P^kΦT(k∣k−1)+Gk−QkGk−TKk=P^k−HkT(HkP^k−HkT+Rk)−1X^k=X^k−+Kk(zk−h(X^k−))Pk^=(I−KkHk)P^k−\hat{X}_{k}^-=f(\hat{X}_{k-1})\\ \hat{P}_k^-=\Phi(k|k-1)\hat{P}_k\Phi^T(k|k-1)+G_{k}^-Q_kG_{k}^{-T}\\ K_k=\hat{P}_k^-H_k^T(H_k\hat{P}_k^-H_k^T+R_k)^{-1} \\ \hat{X}_k=\hat{X}_{k}^-+K_k(z_k-h(\hat{X}_k^-)) \\ \hat{P_k}=(I-K_kH_k)\hat{P}_k^-X^k−​=f(X^k−1​)P^k−​=Φ(k∣k−1)P^k​ΦT(k∣k−1)+Gk−​Qk​Gk−T​Kk​=P^k−​HkT​(Hk​P^k−​HkT​+Rk​)−1X^k​=X^k−​+Kk​(zk​−h(X^k−​))Pk​^​=(I−Kk​Hk​)P^k−​以上就是其推导的总过程。

拓展卡尔曼滤波器(EKF)的数学推导相关推荐

  1. 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二:  一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...

  2. 五.卡尔曼滤波器(EKF)开发实践之五: 编写自己的EKF替换robot_pose_ekf中EKF滤波器

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二:  一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...

  3. Udacity机器人软件工程师课程笔记(三十二) - 卡尔曼滤波器 - 一维卡尔曼滤波器 - 多维卡尔曼滤波器 - 拓展卡尔曼滤波器(EKF)

    卡尔曼滤波器 一.概述 二.一维高斯分布 均值和方差 三.一维卡尔曼滤波器 变量命名约定 卡尔曼滤波循环 1.测量值更新 (1)平均值计算 (2)程序实现 2.位置预测 位置预测公式 3.一维卡尔曼滤 ...

  4. 了解卡尔曼滤波器4--非线性状态估算器(EKF,UKF,PF)

    一般来说,我们希望我们的生活是线性的,就像这条线,这可能表示成功.收入或者幸福.但实际上,生活并不是线性的,它充满了起伏,有时甚至更复杂. 如果您是工程师,您经常会需要处理非线性系统,为了帮助您,我们 ...

  5. 卡尔曼滤波滤波方程_了解卡尔曼滤波器及其方程

    卡尔曼滤波滤波方程 Before getting into what a Kalman filter is or what it does, let's first do an exercise. O ...

  6. 一. 卡尔曼滤波器开发实践之一: 五大公式详解

    既然标题名称是开发实践,本系列文章将主要介绍如何在工程实践中使用卡尔曼滤波器,至于卡尔曼滤波器的五大公式如何推导而来,网上有很多大拿们写的都很精彩,这里不再叙述.可以参考了下面两篇博文: 1. 卡尔曼 ...

  7. 六.卡尔曼滤波器开发实践之六: 无损卡尔曼滤波器(UKF)进阶-白话讲解篇

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二:  一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...

  8. 【信号处理】基于扩展卡尔曼滤波器和无迹卡尔曼滤波器的窄带信号时变频率估计(Matlab代码实现)

    目录 1 概述 2 数学模型 3 运行结果 4 结论 5 参考文献 6 Matlab代码实现 1 概述 本文讲解和比较了基于卡尔曼滤波器的频率跟踪方法的能力,例如扩展卡尔曼滤波器 (EKF) 和无味卡 ...

  9. 无人驾驶算法学习(三):扩展卡尔曼滤波器Extended Kalman Filter

    文章目录 1.引言 2. 扩展卡尔曼滤波数学理论 3. 代码实战 3.1 python实现 3.2结果分析 1.引言 当系统状态方程不符合线性假设时,采用卡尔曼滤波无法获得理想的最优估计.高斯分布在非 ...

最新文章

  1. Exchange工具11—性能监视器
  2. 基于Springboot实现企业人事管理系统
  3. 手机python代码写好了怎么运行-想在手机上编写python代码?手机上玩转python的利器...
  4. 比亚迪高级驾驶辅助系统ADAS 即将推出
  5. android应用兼容报告,手机资讯导报:华为发布国内首份Android7.0应用兼容报告
  6. 【转】补零与离散傅里叶变换的分辨率
  7. android+qq登录测试,对于android的第三方(QQ登录,微信登录等的)测试时的签名配置...
  8. 基于新型存储的大数据存储管理
  9. 机器学习算法总结之K近邻(KNN)
  10. Eclipse启动Tomcat时45秒超时的解决方法
  11. redis安装配置参考
  12. 7-7 mmh学长的大数模板 (20分)
  13. 【Modelsim】下载安装教程
  14. 订单系统:订单生成及其状态机流转介绍
  15. 2021年T电梯修理免费试题及T电梯修理试题及解析
  16. Springboot+vue项目火车订票管理系统
  17. 推广TrustAI可信分析:通过提升数据质量来增强在ERNIE模型下性能
  18. PHP自学教程之PHP语法基础
  19. 校验集装箱号;java校验集装箱号并附解析
  20. 2022 最新版java开发手册 黄山版

热门文章

  1. Anroid开发中常用快捷键
  2. 轻量级ORM框架 Bankinate
  3. SharePoint 取消分享时的默认发邮件
  4. Vue中使用watch来监听数据变化
  5. SQL Server 的索引结构实例
  6. 例子:10秒后同意按钮可点击
  7. iOS:授权用户定位NSLocationManager的使用
  8. ubuntu自动加载硬盘分区
  9. 2018.12.27|区块链技术头条
  10. Dubbo即将毕业,晋升为Apache顶级项目?