非线性卡尔曼滤波及可观测性、观测度

2023-05-16

一、非线性系统的滤波方法

对于非线性系统,一种常见的解决思路是先进行泰勒级数展开,略去高阶项后近似为线性系统,再做线性Kalman滤波估计。这种处理非线性系统的Kalman滤波方法称为扩展Kalman滤波(EKF)。

1、雅可比矩阵:

在向量微积分中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近。因此,雅可比矩阵类似于多元函数的导数。

从n维空间映射到m维空间,即状态量为n维,函数个数为m维;则雅可比矩阵为:m\times n

雅可比矩阵

2、海森矩阵

黑塞矩阵(Hessian Matrix),又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。

黑塞矩阵常用于牛顿法解决优化问题,利用黑塞矩阵可判定多元函数的极值问题。
在工程实际问题的优化设计中,所列的目标函数往往很复杂,为了使问题简化,常常将目标函数在某点邻域展开成泰勒多项式来逼近原函数,此时函数在某点泰勒展开式的矩阵形式中会涉及到黑塞矩阵。

海森矩阵

3、EKF滤波

离散时间状态空间模型:

其中:

X_{k}n维状态向量,;

f(X_{k})n维非线性向量函数;

Z_{k}m维量测向量;

h(X_{k})m维非线性向量函数;

--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--

若已知k-1时刻状态X_{K-1}的一个参考值/初始值(泰勒展开的初始值)记为:X_{k-1}^{n}

其中,真实值与参考值/初始值的偏差为:

\delta X_{k-1}=X_{k-1}-X_{k-1}^{n}

<1>通过EKF状态方程对k时刻进行预测,可得:

X_{k/k-1}^{n}=f(X_{k-1}^{n}):

状态预测的偏差为:

\delta X_{k}=X_{k}-X_{k/k-1}^{n}

<2>通过EKF量测方程和状态预测值X_{k/k-1}^{n}对量测进行预测:

Z_{k/k-1}^{n}=h(X_{k/k-1}^{n})

量测预测的偏差为:

\delta Z_{k}=Z_{k}-Z_{k/k-1}^{n}

<3>将偏差量\delta X_{k}\delta X_{k-1}当作新的状态,且将\delta Z_{k}当作新的量测,则可构成一个新的系统,并且是线性的;

 

 则可直接用标准线性kalman滤波方法进行偏差状态估计,公式如下:

 二、随机系统的可观、可控及稳定性和可观测度

1、可控、可观和稳定性

一维线性定常系统:

 其中,W_{k}V_{k}均为零均值白噪声,方差分别为Q\geq 0R> 0,且两者不想关,根据kalman滤波方程:

 2、状态估计的误差分配和可观测度分析 

<1>误差分配

当系统模型参数\Phi _{k/k-1}\Gamma _{k-1}H_{k}确定后,标准kalman滤波的均方误差阵P_{k}仅与P_{0}Q_{k}R_{k}有关,而与状态初值X_{0}及量测Z_{k}无关。

因此,状态估计误差分配问题是P_{0}Q_{k}R_{k}P_{k}的影响。

kalman滤波均方误差阵的预测及量测更新公式重写如下:

 将上述两式中,第一个式带入第二个式子,可得:

 最终得:

 kalman滤波咋黄台估计的误差分配列表:

 <2>可观测度分析

如果系统建模准确,Kalman滤波均方误差阵P_{k}反映了各状态之间的协方差,其中对角线元素为对应状态分量的估计均方误差。

因此,从P_{k}随时间的变化过程中可以看出状态估计误差的变化情况,对角线元素的变化幅度,正好定量描述了对应状态分量估计效果的强弱程度。

针对状态向量中的每一个分量X_{k(j)} (j=1,2,…,n),定义它的可观测度如下:

 可观测度是针对某一状态分量在某一时刻而言的,其含义是某一状态分量的0时刻初始设置误差的标准差与同一状态分量在k时刻的滤波误差标准差的比值

可观测度为无因次数量,在数值上越大,表明在经过Kalman滤波后,相应状态分量的估计误差下降程度越显著,或者说精度提升效果就越明显。

--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--

根据经验,可人为设置如下阈值大致判断状态分量X_{k(j)}的可观测度强弱:

 两种绘制曲线方式:

<1>绘制可观测度\delta _{k(j)}相对于时间k的对数曲线k - log(\sigma _{k(j)}),则能够直观地显示出状态估计地可观测度变化趋势;

<2>绘制出各状态分量误差的标准差曲线k - sqrt(P_{k(jj)}),能够表示出状态估计误差的绝对大小变化情况;

--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--%%--

在实际应用中, 如果针对某一问题, 设计了全面描述系统动力学行为的复杂高维滤波系统,可观测度分析和前述误差分配技术可应用于滤波器的优化:
(1)对于不可观测的状态分量, 宜将其删去, 从而降低系统状态维数,减小滤波计算量;
(2)对于可观测度较弱的状态分量, 与其对应的均方误差阵对角元素的初值不宜设置得太大,否则,对应的均方误差阵设置过大容易引起滤波过程中的估计误差剧烈波动, 在间接滤波中应当慎重使用反馈校正, 反馈时机不当有容易引起滤波发散;
(3)对于可观测度较强的状态分量, 与其对应的均方误差阵对角元素可以设置成较大的初值,即便如此, 在随后滤波过程中也会快速减小收敛;
(4)通过误差分配表,针对可观测的状态分量, 采取恰当措施合理地减小最大误差因素所占的比重,往往能够有效减小相应状态分量的滤波估计误差,即提高滤波估计精度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非线性卡尔曼滤波及可观测性、观测度 的相关文章

  • 根据PCB扫描图反推原理图

    工具 相机 xff08 拍摄电路板正反面 xff0c 记录元器件位置 xff09 扫描仪 xff08 扫描拆掉元器件的电路板 xff0c 作为底图用于对照着绘制PCB xff09 Photoshop xff08 处理扫描出的图片 xff09
  • 链路聚合原理与配置

    文章目录 一 链路聚合简介链路聚合实现条件 二 链路聚合配置三 总结 一 链路聚合简介 链路聚合 xff1a 指将多个物理端口汇聚在一起 xff0c 形成一个逻辑端口 xff0c 以实现出 入流量吞吐量在各成员端口的负荷分担 xff0c 交
  • 防火墙命令

    防火墙命令 https blog csdn net calm programmer article details 124194093 1 查看防火墙的状态 dead代表关闭 running代表已经开启 systemctl status f
  • 国科大机器人作业四:基于线性的扩展卡尔曼滤波器的机器人定位(实验部分)

    文章目录 练习4 xff1a 基于线性的扩展卡尔曼滤波器的机器人定位1 Introduction2 Kalman Filter Localization2 1 状态预测 State Prediction2 2 状态更新 xff1a Stat
  • React - Context的简单使用

    Context 通过组件树提供了一个传递数据的方法 xff0c 从而避免了在每一个层级手动的传递 props 属性 在一个典型的 React 应用中 xff0c 数据是通过 props 属性由上向下 xff08 由父及子 xff09 的进行
  • cppflow加载tensorflow模型

    用tensorflow框架训练的pb模型在C 43 43 环境下使用的时候 xff0c 总是会出现版本不匹配的情况 xff0c 最近在github看到用cppflow来加载 xff0c 不用重新编译tensorflow xff0c 特别是t
  • 书,永远的朋友

    我自己认为我是一个不大喜欢看书的人 xff0c 相对于书 xff0c 我可能跟喜欢看视频和同高手一起讨论交流 但是 xff0c 真正静下心来 xff0c 想着这么多年来 xff0c 对我影响很大的一些书 xff0c 也能想到一些 索性 xf
  • 我的2013

    今天是2013年的最后一天 xff0c 天气格外的晴朗 xff0c 站在公司的写字楼上 xff0c 能够看到远处的山水 一直都习惯在一年的最后总结一下 xff0c 总结自己哪些地方在成长 xff0c 哪些地方有收获 xff0c 哪些地方需要
  • 项目管理中的TR点

    TR的意思是技术评审 xff0c 是英语Technical Review的简写 一般项目管理中有以下一些技术评审点需要关注 xff1a TR1 概念阶段技术评审点 xff1a 产品需求和概念技术评审 xff08 业务需求评审 xff09 T
  • linux ln 命令使用参数详解(ln -s 软链接)

    这是linux中一个非常重要命令 xff0c 请大家一定要熟悉 它的功能是为某一个文件在另外一个位置建立一个同不的链接 xff0c 这个命令最常用的参数是 s 具体用法是 xff1a ln s 源文件 目标文件 当 我们需要在不同的目录 x
  • 别再让C++头文件中出现“using namespace xxx;”

    在这里 xff0c 我毫不回避地说了这句话 xff1a 引用 我再也不想在任何头文件中看到 using namespace xxx 了 作为一个开发者 团队领导者 xff0c 我经常会去招聘新的项目成员 xff0c 有时候也帮助其他组的人来
  • Linux 查看监听端口的方法

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 一口气说出 OAuth2.0 的四种授权方式

    上周我的自研开源项目开始破土动工了 xff0c 开源项目迈出第一步 xff0c 10 选 1 xff1f 页面模板成了第一个绊脚石 xff0c 密谋很久才付诸行动 xff0c 做这个的初衷就是不想让自己太安稳 xff0c 技术这条路不进步就
  • SVN MERGE 和冲突

    摘要 xff1a 最佳做法是避免冲突 冲突时 xff0c 不要把branch merge到trunk 先由最新版本的trunk得到branch 然后再修改文件 xff0c 直接merge过去就行 这样不会有冲突 先用svn merge dr
  • Linux命令之basename使用

    basename 命令 首先使用 help 参数查看一下 basename命令参数很少 xff0c 很容易掌握 basename help 用法示例 xff1a basename usr bin sort 输出 34 sort 34
  • 各种编码知识简介

    本文主要介绍我们在日常开发中接触到了latin1 xff0c GBK xff0c GB18030 xff0c UTF 8 编码几种 下面首先来看看这几种编码的的区别 latin1 1 先来看看latin1 参考百度百科 Latin1 是IS
  • Linux 技巧:让进程在后台可靠运行的几种方法

    我们经常会碰到这样的问题 xff0c 用 telnet ssh 登录了远程的 Linux 服务器 xff0c 运行了一些耗时较长的任务 xff0c 结果却由于网络的不稳定导致任务中途失败 如何让命令提交后不受本地关闭终端窗口 网络断开连接的
  • nohup命令浅析

    要将一个命令放到后台执行 xff0c 我们一般使用nohup sh command amp amp 都知道是放到后台执行这个命令 xff0c 那么nohup是做什么的 xff1f 这就要从unix的信号说起 xff0c unix的信号机制可
  • 《曾国藩家书大全集》读书笔记——励志篇

    曾国藩将立志作为人生第一要义 xff0c 只要能立志 xff0c 便人人都可以做圣贤豪杰 人生不但要立志 xff0c 还要持之以恒 xff0c 持之以恒是人生第一美德 xff0c 人而无恒 xff0c 将一事无成 曾国藩很重视逆境对人心志的

随机推荐