EKF之雅克比矩阵(一)

2023-05-16

扩展卡尔曼滤波 (EKF)

EKF之雅克比矩阵


文章目录

  • 扩展卡尔曼滤波 (EKF)
  • 前言
  • 一、什么是线性化?
  • 二、雅克比矩阵
    • 1.矩阵的几何含义
    • 2.非线性矩阵与基底的关系
    • 3.雅克比矩阵
  • 三、工程中雅克比矩阵如何应用
  • 总结


前言

一般的卡尔曼滤波(KF),是假设系统模型是线性的,即系统的输入输出满足齐次性和叠加性。标准卡尔曼滤波的前提条件之一,就是高斯分布的x_k 预测后仍服从高斯分布,高斯分布的x_k 变换到观测空间后仍服从高斯分布因此标准卡尔曼滤波只适合线性系统的处理。

但是实际工程中,卡尔曼滤波一般用于对传感器,电机等电子器件。这些期间由于电子性质,自身特性,基本都是非线性的,那么在这个系统之上建立的所有模型,都符合非线性系统。

如何将一个非线性系统线性化,就是EKF改进的部分。


一、什么是线性化?

请大家看下面这个圆:
在这里插入图片描述
一个平平无奇的圆,其方程一般式如下:
在这里插入图片描述
其方程式是一个明显的非线性函数,看圆的形状也能看出来。图中也画出来了几个红色箭头,指向的方向圆在某一点的切线方向。这个方向没有弯曲,笔直的打出去,那么在这个切线处,圆是一条直线?我们随意找一个切线然后放大:

在这里插入图片描述
原谅我这个放大倍率已经是OneNote的极限的,可以明显看到,放大后的圆,在切线处这一小段直线,貌似是线性的。那么是否只要求出这个小小的线段的方程式,我们就能把圆在这个点局部线性化了!

这个方法直接告诉大家,就是求圆在这个点处的导数,即可得出这个小小的线段的方程式了。这就是一种局部线性化的方式。

而在卡尔曼滤波中,一切数据传递,计算,更新都是通过矩阵来完成,怎么把一个矩阵线局部线性化呢?通过求该矩阵的雅克比矩阵即可。

二、雅克比矩阵

雅克比矩阵的概念我是从可汗学院看来的,有兴趣大家可以移步b站看熟肉:
可汗学院 雅克比矩阵
下面介绍下我印象比较深的几个点:

1.矩阵的几何含义

已知一个矩阵 A =
[ 1 0 0 1 ] (1) \left[ \begin{matrix} 1 & 0 \\ 0 & 1 \\ \end{matrix} \right] \tag{1} [1001](1)

他在笛卡尔坐标系下的几何含义为:
在这里插入图片描述
一个小矩形,沿x方向和沿y方向均有分量。

假设有另一个矩阵 B =
[ 3 1 0 2 ] (2) \left[ \begin{matrix} 3 & 1 \\ 0 & 2 \\ \end{matrix} \right] \tag{2} [3012](2)
通过矩阵行列式可以算出该矩阵的标量,其几何含义为向量[3,0]和向量[1,2]所围成的面积
我们将矩阵B做一个线性变化:

del(B) = 3 * 2 - 1 * 0 = 6

在这里插入图片描述
如果把上面的矩阵 A 的面积为1,如果我们把矩阵 A看做是基底,那么矩阵B就是基底的6倍,这样,我们就可以把不同矩阵的几何意义联系在了一起。

但是我们能看出来,矩阵A到矩阵B是一个很标准的线性关系,那如果存在一组多元函数,且该函数呈现非线性关系,那么如何从几何层面理解这个多元函数与基底的关系呢?

2.非线性矩阵与基底的关系

假设有一个矩阵C =

[ f 1 ( x , y ) f 2 ( x , y ) ] (3) \left[ \begin{matrix} f1(x,y) \\ f2(x,y) \\ \end{matrix} \right] \tag{3} [f1(x,y)f2(x,y)](3)

=

[ x + s i n ( y ) y + s i n ( x ) ] (4) \left[ \begin{matrix} x + sin(y) \\ y + sin(x) \\ \end{matrix} \right] \tag{4} [x+sin(y)y+sin(x)](4)

这个矩阵是个非常典型的非线性矩阵,下面将坐标系中的所有(x,y)均乘以该矩阵,即将该坐标系中的所有点均转换成矩阵C下的点,抓住其中一个小矩形放大:
在这里插入图片描述
这里怎么理解呢?就是维持原有坐标系不变,将坐标系中每个点通过矩阵C转移到新的地方,矩阵C可以当成一个状态转移矩阵。转移后把每个点可视化出来,即可得到上图扭曲的图形,看起来和线性化根本不搭。

但是当对某一个区域放大时,可以看到虽然新图形围城的小矩形不那么方正,但是也没有变得特别扭曲,这个小矩形和基底之间的关系,就是其非线性化的程度。把这个区域再放大,那么其形状越接近基底。这就说明新图形的整体是非线性的,但是对局部而言,仍可以看做是线性的。放大倍率越大,其线性化程度越好。

在这里插入图片描述
(如上图经过局部放大后∂x默认为无穷小,对x求偏导就可以把这个无穷小量化成正常的函数在x这个方向上的变化率。上图的基底是正交坐标系,放大以后,朝着x方向的伸缩能够正交分解成两个维度的变化率,同理y方向也是一样的,由此性质,可以推出矩阵C的雅可比矩阵D)

3.雅克比矩阵

根据上面对圆的局部线性化的推导,我们只要求出矩阵C导数,就可以得出矩阵C的雅克比矩阵D了。一个矩阵是多维度的,我们对这个矩阵的每一个维度求偏导,如矩阵C存在二维(x,y),那么只需要求矩阵C对于x的偏导,对于y的偏导,即可推出雅克比矩阵。

CSDN打公式太麻烦了,下面直接上图:
在这里插入图片描述

三、工程中雅克比矩阵如何应用

卡尔曼滤波中,需要对系统建模,根据模型推导状态转移矩阵F和更新矩阵H,通常还有个控制矩阵U不过这个不常用,一般通过状态空间对系统建模,太细就先不讲。

EKF中需要非线性化的就是矩阵F和矩阵H,这两个矩阵分别用于协方差矩阵Pk的更新和卡尔曼系数Kk的更新。
前面说了,矩阵有多个维度,对卡尔曼这个系统而言,每个状态向量X = [x1,x2,x3,x4, … , xn]都是一个维度,那么就需要矩阵F对于矩阵X求偏导,矩阵H对于矩阵X求偏导。

F(x1,x2,x3,x4) =

[ f 1 ( x 1 , x 2 , x 3 , x 4 ) f 2 ( x 1 , x 2 , x 3 , x 4 ) f 3 ( x 1 , x 2 , x 3 , x 4 ) f 4 ( x 1 , x 2 , x 3 , x 4 ) ] (5) \left[ \begin{matrix} f1(x1,x2,x3,x4) \\ f2(x1,x2,x3,x4) \\ f3(x1,x2,x3,x4) \\ f4(x1,x2,x3,x4) \\ \end{matrix} \right] \tag{5} f1(x1,x2,x3,x4)f2(x1,x2,x3,x4)f3(x1,x2,x3,x4)f4(x1,x2,x3,x4)(5)

JF =
[ ∂ f 1 / ∂ x 1 ∂ f 1 / ∂ x 2 ∂ f 1 / ∂ x 3 ∂ f 1 / ∂ x 4 ∂ f 2 / ∂ x 1 ∂ f 2 / ∂ x 2 ∂ f 2 / ∂ x 3 ∂ f 2 / ∂ x 4 ∂ f 3 / ∂ x 1 ∂ f 3 / ∂ x 2 ∂ f 3 / ∂ x 3 ∂ f 3 / ∂ x 4 ∂ f 4 / ∂ x 1 ∂ f 4 / ∂ x 2 ∂ f 4 / ∂ x 3 ∂ f 4 / ∂ x 4 ] (6) \left[ \begin{matrix} ∂f1/∂x1 & ∂f1/∂x2 & ∂f1/∂x3 & ∂f1/∂x4 \\ ∂f2/∂x1 & ∂f2/∂x2 & ∂f2/∂x3 & ∂f2/∂x4 \\ ∂f3/∂x1 & ∂f3/∂x2 & ∂f3/∂x3 & ∂f3/∂x4 \\ ∂f4/∂x1 & ∂f4/∂x2 & ∂f4/∂x3 & ∂f4/∂x4 \\ \end{matrix} \right] \tag{6} f1/x1f2/x1f3/x1f4/x1f1/x2f2/x2f3/x2f4/x2f1/x3f2/x3f3/x3f4/x3f1/x4f2/x4f3/x4f4/x4(6)


总结

  • EKF(扩展卡尔曼滤波)是KF(卡尔曼滤波)的扩展,使其可以用于非线性系统,在实际工程中很有用。
  • EKF线性化非线性系统的方式,是求矩阵的雅克比矩阵,是一种局部线性化策略,但仍会有转移误差。
  • 另一种KF的改进UFK(无迹卡尔曼),通过对局部连续采样,得出局部的信息用于卡尔曼滤波。只针对符合高斯分布的系统。
  • PF(粒子滤波)也是对局部连续采样,但并不要求系统符合高斯分布。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EKF之雅克比矩阵(一) 的相关文章

  • 扩展卡尔曼滤波算法 EKF

    扩展卡尔曼滤波的仿真案例 xff0c 参考书为北航宇航学院王可东老师的Kalman滤波基础及Matlab仿真 一 状态模型 xff1a 二 测量模型 xff1a 状态方程和测量方程中的噪声均为期望为零的白噪声 三 状态模型和测量模型的线性化
  • 滤波学习理解----EKF(一)

    最近回到slam方向了 xff0c 所以有时间整理一下最近的收获 最复杂也是最简单的模块 滤波 引入 那么滤波是什么呢 xff1f 滤波就是由于观测observation xff08 OB xff09 天生具备的误差和噪声 当有多个信号源观
  • CDKF、UKF和EKF滤波算法

    转载自 xff1a https mp weixin qq com s umv72zAB i3luzyIvXpvYw CDKF UKF和EKF滤波算法 凌拓智能TBUS TBUS社区 今天 之前一直和大家探讨在TSLAM室内定位算法中 xff
  • 任何的卡尔曼滤波器的研究都要紧紧围绕状态与方差的传播特性。 让我想起MSCKF是误差状态的EKF模型。

    任何的卡尔曼滤波器的研究都要紧紧围绕状态与方差的传播特性 让我想起MSCKF是误差状态的EKF模型 传播特性应该就是指预测方差或者递推方程 xff1f https blog csdn net sinat 16643223 article d
  • EKF_SLAM一般过程

    SLAM xff0c 同步定位与地图构建 xff0c 本文将介绍基于EKF的SLAM的整体过程 1 EKF SLAM Overview 当机器人处在个未知环境中时 xff0c 他最想知道的就是他在当前环境中的位置 环境不知道咋办 xff0c
  • 高斯滤波知识点总结——KF、EKF、UKF以及IF、EIF等

    高斯滤波知识点总结 KF EKF UKF以及IF EIF等 1 引言 本文是我在学习 Probabilistic Robotics 这本书中第三章 高斯滤波过程中的一些知识总结 本文主要是整理高斯滤波算法的知识点和一些讨论 xff0c 具体
  • PX4 EKF中的多传感器融合方法

    文章目录 1 滤波方法及状态预测1 1 EKF 滤波方程1 2 KF 滤波方程1 3 PX4中的状态量及其预测1 3 1 状态量1 3 2 姿态四元数一步预测1 3 3 速度 位置一步预测1 3 4 协方差阵预测 2 磁三轴数据融合2 1
  • ros入门(六)--imu融合里程计robot_pose_ekf扩展卡尔曼融合包

    IMU 一般具有两个基本器件 xff1a 加速计和陀螺仪 主要用于测量自身位姿 xff0c 位姿包括位置和姿态 最近在研究imu 融合里程计方面的内容 xff0c 初学一些内容 xff0c 总结一下 xff1a 环境信息 xff1a Ubu
  • 扩展卡尔曼滤波(EKF)

    本篇文章是看完http blog csdn net adamshan article details 78265754这篇文章后再加上自己的理解写的 xff0c 如果侵权可以联系我删除 xff0c 如果有不对的地方请您不啬赐教 xff01
  • 关于EKF和ErKF的理解

    EKF和ErKF的区别 大概6 20写完 快捷键 加粗 Ctrl 43 B 斜体 Ctrl 43 I 引用 Ctrl 43 Q插入链接 Ctrl 43 L插入代码 Ctrl 43 K插入图片 Ctrl 43 G提升标题 Ctrl 43 H有
  • (11)EKF - (2.7) EKF2调参参数

    系列文章目录 11 EKF 2 EKF2估算系统 文章目录 系列文章目录 前言 7 1 EK2 ENABLE
  • EKF SLAM 以及MSCKF 学习

    参考 xff1a https zhuanlan zhihu com p 21381490 https citeseerx ist psu edu viewdoc download jsessionid 61 FA1024834F74311E
  • 了解卡尔曼滤波器4--非线性状态估算器(EKF,UKF,PF)

    一般来说 xff0c 我们希望我们的生活是线性的 xff0c 就像这条线 xff0c 这可能表示成功 收入或者幸福 但实际上 xff0c 生活并不是线性的 xff0c 它充满了起伏 xff0c 有时甚至更复杂 如果您是工程师 xff0c 您
  • 从程序中学习EKF-SLAM(一)

    在一次课程的结课作业上 xff0c 作业要求复写一个EKF SLAM系统 xff0c 我从中学到了好多知识 作为一个典型轻量级slam系统 xff0c 这个小项目应该特别适合于slam系统入门 xff0c 可以了解到经典卡尔曼滤波器在sla
  • 寻找APM中EKF的五大公式

    EKF核心代码位置 AP NavEKF2 cpp 进入该函数 进入该函数 xff0c 然后可以看到关键部分 xff0c 也即卡尔曼五个公式的地方 下面介绍每个公式的具体位置 28状态值 首先要知道选用的状态值有哪些 xff0c 28状态值
  • 控制算法学习 四、扩展卡尔曼滤波EKF

    控制算法学习 四 扩展卡尔曼滤波EKF 前言非线性系统状态 观测方程线性化扩展卡尔曼滤波EKF后记 前言 经典卡尔曼滤波的使用场景是线性系统 xff0c 但现实应用时 xff0c 大多数系统都是非线性的 扩展卡尔曼滤波 xff08 Exte
  • ekf pose使用方法 ros_【ROS-Gazebo】为什么选择SDF?

    前言 这是一个系列小文章 xff0c 主要介绍在ROS Gazebo中如何更好地使用SDF格式建模与仿真 众所周知 xff0c URDF是ROS的原生支持格式 xff0c 但在某些情况下 xff08 尤其是Gazebo仿真时 xff09 x
  • CKF MCSCKF UKF EKF滤波性能对比

    CKF MCSCKF UKF EKF滤波性能对比 在非线性滤波中 比较了CKF MCSCKF UKF EKF 几种非线性滤波的性能 用MATLAB进行仿真 八维非线性滤波中 CKF MCSCKF 比较稳定 EKF UKF 表现不好 MATL
  • EKF SLAM

    EKF 方法是解决 SLAM 问题的一种经典方法 xff0c 其应用依赖于运动模型和观测模型的高斯噪声假设 在 SLAM 问题首次提出不久后 xff0c Smith 和 Cheesman 及 Durrant Whyte对机器人和路标间的几何
  • EKF的通俗理解

    导 xff1a ekf xff0c 扩展卡尔曼滤波简称 xff0c 应用非常广泛 xff1b 1 五个黄金公式 2 应用场合 1 xff09 找清楚模型 2 xff09 对准五个公式的公式 3 xff09 实现 xff1a 求革新值 xff

随机推荐

  • 记一个万金油开源框架JHipster

    本文地址 xff1a http blog csdn net sushengmiyan article details 53190236 百搭代码生成框架 体验新技术汇总 xff1a Spring BootSpring SecurityAng
  • SQLServer触发器创建、删除、修改、查看...适用于级联删除

    一 触发器是一种特殊的存储过程 它不能被显式地调用 而是在往表中插入记录 更新记录或者删除记录时被自动地激活 所以触发器可以用来实现对表实施复杂的完整性约束 二 SQL Server为每个触发器都创建了两个专用表 Inserted表和Del
  • 工薪族巧理财之定期存款中整存整取、零存整取、存本取息之间的微妙区别

    银行的官方术语先给大家普及一下 xff1a 定期存款是在存款时约定存储时间 一次或按期分次 在约定存期 存入本金 xff0c 整笔或分期平均支取本金利息的一种储蓄 按存取方式定期存款分为整存整取定期存款 零存整取定期存款 存本取息定期存款
  • CentOS防火墙相关命令

    目录 1 开放端口2 查看防火墙所有开放的端口3 关闭防火墙4 查看防火墙状态5 查看监听的端口6 检查端口被哪个进程占用7 查看进程的详细信息 1 开放端口 firewall cmd zone span class token opera
  • no module named win32com.client错误解决

    无论什么时候 xff0c 你在运行的时候发现有importError no module named win32com client这个提示 你都可以这么解决 xff1a 请下载http sourceforge net projects p
  • java.util.concurrent同步框架(AQS论文中文翻译)

    java util concurrent同步框架 摘要目录和主题描述一般条款关键字1 介绍 xff1a 需求设计实现4 使用方式5 性能6 结论7 致谢 Doug Lea SUNY Oswego Oswego NY 13126 dl 64
  • POJ2287 田忌赛马---贪心算法

    田忌赛马 题目详见http poj org problem id 61 2287 田忌赛马大家都听过 xff0c 可是如果不是上中下三等马 xff0c 而是很多匹马 xff0c 优劣有很多种分类 xff0c 就不仅仅是321的问题了 这个很
  • 贪心算法详解

    之前讲过动态规划DP xff0c 现在来说说贪心 贪心算法在解决问题的策略上目光短浅 xff0c 只根据当前已有的信息就做出选择 xff0c 而且一旦做出了选择 xff0c 不管将来有什么结果 xff0c 这个选择都不会改变 也就是说贪心对
  • 搜索智能提示suggestion,附近点搜索

    第三十六 三十七章 搜索智能提示suggestion xff0c 附近地点搜索 作者 xff1a July 致谢 xff1a caopengcs 胡果果 时间 xff1a 二零一三年九月七日 题记 写博的近三年 xff0c 整理了太多太多的
  • 多重继承及虚继承中对象内存的分布

    多重继承及虚继承中对象内存的分布 这篇文章主要讲解G 43 43 编译器中虚继承的对象内存分布问题 xff0c 从中也引出了dynamic cast和static cast本质区别 虚函数表的格式等一些大部分C 43 43 程序员都似是而非
  • 【Google】25匹马的角逐

    问题是这样的 xff1a 一共有25匹马 xff0c 有一个赛场 xff0c 赛场有5个赛道 xff0c 就是说最多同时可以有5匹马一起比赛 假设每匹马都跑的很稳定 xff0c 不用任何其他工具 xff0c 只通过马与马之间的比赛 xff0
  • HDOJ 1058 Humble Numbers解题报告【DP】

    Humble Numbers 题目详见http acm hdu edu cn showproblem php pid 61 1058 开始拿到这个题目的时候还纠结了半天 xff0c 英语很差的话这个题是不可能AC的 而我就是其中之一 Hum
  • 背包问题详解

    背包问题 背包问题 Knapsack problem 是一种组合优化的NP完全问题 问题可以描述为 xff1a 给定一组物品 xff0c 每种物品都有自己的体积和价值 xff0c 在限定的总体积内 xff0c 我们如何选择 xff0c 才能
  • 楼教主男人必解八题之 Coins 解题报告

    楼教主男人必解八题之 Coins 解题报告 题目详见http acm hdu edu cn showproblem php pid 61 2844 这个题目和POJ1742是一个题目 xff0c 也是楼教主的男人八题之一 说的是给出N种硬币
  • CentOS7安装MySQL5.7过程以及常用需要修改操作,安装mysqlclient,安装mysql-devel报错问题以及卸载MySQL

    目录 Docker安装运行命令mysql配置 Centos安装下载安装启动修改root用户密码修改远程访问权限1 改表法2 授权法 MySQL密码验证mysqlclient时候报错 OSError mysql config not foun
  • 如何证明程序的正确性?

    什么样的程序才是正确的 xff1f 如何来保证程序是正确的 xff1f 测试 xff1f NO xff01 采用测试方法确实可以发现程序中的错误 xff0c 但却不能保证和证明程序中没有错误 xff01 先来看一些概念 xff0c 有关 程
  • 平摊分析

    平摊分析 我们经常在处理数据结构的时间复杂度的时候 xff0c 大多数操作代价很低 xff0c 可是由于某些个别操作的代价较高 xff0c 导致最后求得时间复杂度的上界不是那么的紧凑 在平摊分析中 xff0c 执行一系列数据结构操作所需要的
  • java中用FTPClient,执行到ftp.storeFile(fileName, inputFile);无反应

    package com aa test import cn hutool core util StrUtil import com nuctech platform tip constant TipConstant import lombo
  • SpringMVC拦截去之HandlerInterceptorAdapter的使用

    定义 HandlerInterceptorAdapter是SpringMVC中的拦截器 xff0c 它是用于拦截URL请求的 xff0c 主要是为了请求的预处理和后续处理 使用方法 编写代码 我们只需要自定义一个拦截器去继承HandlerI
  • EKF之雅克比矩阵(一)

    扩展卡尔曼滤波 EKF EKF之雅克比矩阵 文章目录 扩展卡尔曼滤波 EKF 前言一 什么是线性化 xff1f 二 雅克比矩阵1 矩阵的几何含义2 非线性矩阵与基底的关系3 雅克比矩阵 三 工程中雅克比矩阵如何应用总结 前言 一般的卡尔曼滤