最优估计与卡尔曼滤波基本原理

2023-05-16

一、最优估计

1、估计理论:

估计理论是概率论与数理统计的一个分支,是根据受扰动的观测数据来提取系统某些参数或状态的一种数学方法。

定义估计量\breve{X}的误差为:

 对于随机变量,常用均方误差(Mean Square Error,MSE)来衡量估计量与被估计量之间的误差大小,类似的,对于随机向量定义均方误差阵为:

 特别地,如果估计\breve{X}是无偏的,则均方误差阵就等于其误差的方差阵,即有MSE[\breve{X}]=var[\breve{X}]成立。一般也称标量函数E[\breve{X^{T}\breve{X}}]为均方误差,显然有:

 对两个均方误差阵进行大小比较,通常是指比较均方误差阵之迹的大小,它等价于比较均方误差的大小。

二、卡尔曼滤波方程

1、kalman方程:

<1>随机系统状态空间模型:

其中:

X_{k}是n维的状态向量;

Z_{k}是m维的量测向量;

W_{k-1}l维的系统噪声向量;

V_{k}m维的量测噪声向量;

\Phi _{k/k-1}n维的状态一步转移矩阵;

\Gamma _{k/k-1}n\times l维的系统噪声分配矩阵;

H_{k}m\times n维的量测矩阵;

 <2>kalman滤波的五个公式:

Ⅰ状态一步预测:

Ⅱ 状态一步预测均方误差阵:

Ⅲ 滤波增益:


Ⅳ状态估计:

Ⅴ状态估计均方误差阵:

 注:

Ⅰ:量测一步预测均方误差阵P_{ZZ k/k-1}

Ⅱ:状态一步预测与量测一步预测之间的协均方误差阵P_{XZ k/k-1}

 Ⅲ:滤波增益计算公式,等价:

Ⅳ: K时刻,状态估计均方误差阵:

2、滤波流程框图和滤波初值的选择:

 

量测信息Z_{k}是Kalman滤波的最主要输入,但对于时变系统而言,系统结构参数\Phi _{k/k-1}\Gamma _{k/k-1}H_{k}及噪声Q_{k-1}R_{k}中的全部或部分是时变的,也是为滤波算法的输入,需实时更新。除了状态估计\breve{X}外,状态估计均方误差阵P_{k}也是Kalman滤波输出的重要组成部分,P_{k}评价状态估计的质量发挥着非常重要的作用。

tips:

一般将初始均方误差阵P_{0}设置为对角矩阵,各对角线元素的平方根粗略反映了状态分量初值的不确定度。

(1)对于可观测性较强的状态分量,对应的状态初值和均方误差阵设置偏差容许适当大些, 它们随着滤波更新将会快速收敛,如果均方误差阵设置太小,则会使收敛速度变慢。

(2)对于可观测性较弱的状态, 对应的状态初值和均方误差阵应该设置尽量准确,如果均方误差阵设置过大, 容易引起状态估计的剧烈波动, 反之,如果均方误差阵设置过小,同样会使状态收敛速度变慢,这两种情况下均方误差阵都不宜用于评估相应状态估计的精度。

(3)对于不可观测的状态分量, 其状态估计及其均方误差阵不会随滤波更新而变化, 即不会有滤波效果。 

 3、连续时间随机系统的离散化

<1>系统方程

连续时间线性随机系统(线性随机微分方程):

 离散化如下1:

其中:

注意到Q_{k}=q(t_{k-1})T_{s},它与等效噪声\eta _{k-1}W_{k}X_{k})方差的量纲单位是一致的;

 离散化如下2:

其中:

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

几种典型的连续时间随机过程及其离散化结果:

(1)一阶马尔可夫过程

连续时间:

离散化:

其中:

(2)二阶马尔可夫过程:

连续时间:

离散化:

其中:

 (3)随机游走:

连续时间:

离散化:

其中:

(4)随机常值:

连续时间:

离散化:

 <2>量测方程:

在实际应用中, 大多数系统的量测方程是以离散形式直接给出的, 无需再进行离散化处理。

值得一提的是, 如果在一定量测频率范围内量测噪声的方差大小基本不变,则在量测设备允许的情况下选用较高的量测频率对提高滤波估计精度是有益的;

另一方面,如果系统状态变化比较平缓, 为了减小量测更新频率和计算量,则可将相继多次量测作平均处理, 并相应减少量测噪声大小, 利用平均量测进行滤波量测更新与进行多次量测更新是基本等效的。

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

最优估计与卡尔曼滤波基本原理 的相关文章

  • 求正整数n所有可能的和式的组合

    求正整数n所有可能的和式的组合 xff08 如 xff1b 4 61 1 43 1 43 1 43 1 1 43 1 43 2 1 43 3 2 43 1 43 1 2 43 2 xff09 首先说一下 xff0c 群里面很多人在问这个东东
  • 根据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的信号机制可

随机推荐