联邦卡尔曼滤波

2023-05-16

联邦Kalman滤波

利用Kalman滤波技术对多传感器数据进行最优融合有两种途径:集中式Kalman滤波和分散化滤波。集中式Kalman滤波利用一个滤波器来集中处理所有子系统的信息。分散化滤波利用子滤波器处理子系统的信息通过全局滤波器实现所有子系统的信息融合。

联邦滤波器一般结构

在这里插入图片描述

各子滤波器的估计不相关时的融合算法

定理1:若有 N N N个局部状态估计 X 1 ^ \hat{X_1} X1^, X 2 ^ \hat{X_2} X2^, . . . ... ..., X N ^ \hat{X_N} XN^和相应的估计误差协方差阵 P 11 P_{11} P11, P 22 P_{22} P22, . . . ... ..., P N N P_{NN} PNN,且各局估计互不相关,即 P i j = 0 ( i ≠ j ) P_{ij}=0(i\neq j) Pij=0(i=j),则全局最优估计可表示为:
X g ^ = P g ∑ i = 1 N P i i − 1 X i ^ \hat{X_g}=P_{g} \sum_{i=1}^{N}P_{ii}^{-1} \hat{X_i} Xg^=Pgi=1NPii1Xi^
其中
P g = ( ∑ i = 1 N P i i − 1 ) − 1 P_g=(\sum_{i=1}^{N}P_{ii}^{-1})^{-1} Pg=(i=1NPii1)1
P i i − 1 X i ^ P_{ii}^{-1} \hat{X_i} Pii1Xi^知,当 X i ^ \hat{X_i} Xi^的估计精度差,即 P i i P_{ii} Pii大时, X i ^ \hat{X_i} Xi^在全局估计的作用比较小。

各子滤波器估计相关条件下的联邦滤波算法

在一般情况下,各子滤波器是估计是相关的。为了解决这个问题,采用方差上界技术,对滤波过程进行适当的改造,使得局部估计实际上不相关,从而进行滤波。

假设各子滤波器的状态估计表示为:
X i ^ = [ X a i ^ X b i ^ ] \hat{X_i}=\begin{bmatrix}\hat{X_{ai}}\\\hat{X_{bi}}\end{bmatrix} Xi^=[Xai^Xbi^]
其中, X a i ^ \hat{X_{ai}} Xai^是各子滤波器的公共状态 X c X_c Xc的估计,如导航中的位置,速度,和姿态等误差状态的估计; X b i ^ \hat{X_{bi}} Xbi^是第 i i i个滤波器专有的状态估计,如GPS误差状态的估计。这里只对公共状态估计进行融合以得到其全局估计。

信息分配原则

系统中有两类信息

  • 状态运动方程信息

    状态方程的信息量是与系统噪声的方差成反比的,因此可用 Q − 1 Q^{-1} Q1表示状态状态方程信息量;

  • 量测方程信息

    量测方程的信息可用量测噪声协方差的逆 R − 1 R^{-1} R1表示。

将系统噪声总的信息 Q − 1 Q^{-1} Q1分配到各个子滤波器和主滤波中:
Q − 1 = ∑ i = 1 N Q i − 1 + Q m − 1 Q^{-1}=\sum_{i=1}^{N}Q_i^{-1}+Q_m^{-1} Q1=i=1NQi1+Qm1
其中 Q i = β i − 1 Q Q_i=\beta_i^{-1}Q Qi=βi1Q, Q m = β m − 1 Q Q_m=\beta_m^{-1}Q Qm=βm1Q

由信息守恒原理可知:
∑ i = 1 N β i + β m = 1 \sum_{i=1}^N\beta_i+\beta_m=1 i=1Nβi+βm=1
由子滤波器与主滤波器合成的全局估计值 X g ^ \hat{X_g} Xg^及其相应的估计误差方差阵 P g P_g Pg β i − 1 P g \beta_i^{-1}P_g βi1Pg后再反馈到子滤波器,重置子滤波器的估计值。
X i ^ = X g ^ \hat{X_i}=\hat{X_g} Xi^=Xg^

P i i = β i − 1 P g P_{ii}=\beta_i^{-1}P_g Pii=βi1Pg

其中 β i − 1 \beta_i^{-1} βi1表示信息分配系数。

为了使 P i j ( i ≠ j ) P_{ij}(i\neq j) Pij(i=j)恒等于零,则需要对滤波过程进行改造。先构造一个增广系统,它的状态向量由 N N N个局部滤波子系统和主滤波子系统的状态组合而成:
X = [ X 1 ⋮ X N ˉ ] X=\begin{bmatrix}X_1\\\vdots\\ X_{\bar{N}}\end{bmatrix} X=X1XNˉ
式中: N ˉ = N + 1 \bar{N}=N+1 Nˉ=N+1

每个子系统的状态向量为:
X i = [ X c X b i ] X_i=\begin{bmatrix}X_c\\X_{bi}\end{bmatrix} Xi=[XcXbi]
其中, X c X_c Xc是公共状态向量; X b i X_{bi} Xbi是第 i i i个子系统的专有状态。

在这个增广系统的状态向量中含有公共状态,但是不影响理论分析。增广系统的状态方程为
[ X 1 ⋮ X N ˉ ] k + 1 = [ ϕ 11 ⋱ ϕ N ˉ N ˉ ] k [ X 1 ⋮ X N ˉ ] k + [ G 1 ⋮ G N ˉ ] W k {\begin{bmatrix}X_1\\\vdots\\ X_{\bar{N}}\end{bmatrix}}_{k+1}=\begin{bmatrix}{\phi_{11}}&&\\&{{\ddots}}&\\&&{\phi_{\bar{N}{\bar{N}}}}\end{bmatrix}_k{\begin{bmatrix}X_1\\\vdots\\ X_{\bar{N}}\end{bmatrix}}_{k}+{\begin{bmatrix}G_1\\\vdots\\ G_{\bar{N}}\end{bmatrix}}W_k X1XNˉk+1=ϕ11ϕNˉNˉkX1XNˉk+G1GNˉWk

E [ W i W i T ] = Q E{\begin{bmatrix}W_iW_i^T\end{bmatrix}}=Q E[WiWiT]=Q

增广系统总体滤波误差方差阵一般可表示为
P = [ P 11 ⋯ P 1 N ˉ ⋮ ⋮ P N ˉ 1 ⋯ P N ˉ N ˉ ] P={\begin{bmatrix}P_{11}&\cdots&P_{1\bar{N}}\\\vdots&&\vdots\\P_{\bar{N}1}&\cdots&P_{\bar{N}\bar{N}}\end{bmatrix}} P=P11PNˉ1P1NˉPNˉNˉ
式中: P j i ( j , i = 1 , 2 , ⋯   , N ˉ ) P_{ji}(j,i=1,2,\cdots,\bar{N}) Pji(j,i=1,2,,Nˉ)表示局部滤波之间的相关性。

考虑到集中滤波的时间更新,由状态方程可知
P j i = ϕ j j P j i ∗ ϕ i i T + G j Q G i T P_{ji}=\phi_{jj}P_{ji}^*\phi_{ii}^T+G_jQG_i^T Pji=ϕjjPjiϕiiT+GjQGiT
由上式知,由于公共噪声 Q Q Q的存在,即使 P j i ∗ = 0 P_{ji}^*=0 Pji=0 P j i P_{ji} Pji也不会等于0,即时间更新过程将引入各子滤波器的估计相关。因此需要利用方差上届技术来进行消除。将过程噪声改写为
[ G 1 ⋮ G N ˉ ] Q [ G 1 T ⋯ G N ˉ T ] = [ G 1 ⋱ G N ˉ ] [ Q ⋯ Q ⋮ ⋮ Q ⋯ Q ] [ G 1 T ⋱ G N ˉ T ] \begin{bmatrix}G_1\\\vdots\\G_{\bar{N}}\end{bmatrix}Q\begin{bmatrix}G_1^T&\cdots&G_{\bar{N}}^T\end{bmatrix}=\begin{bmatrix}G_1&&\\&\ddots&\\&&G_{\bar{N}}\end{bmatrix}\begin{bmatrix}Q&\cdots&Q\\\vdots&&\vdots\\Q&\cdots&Q\end{bmatrix}\begin{bmatrix}G_1^T&&\\&\ddots&\\&&G_{\bar{N}}^T\end{bmatrix} G1GNˉQ[G1TGNˉT]=G1GNˉQQQQG1TGNˉT
由矩阵理论可知:
[ Q ⋯ Q ⋮ ⋮ Q ⋯ Q ] ≤ [ γ 1 Q ⋯ 0 ⋮ ⋮ 0 ⋯ γ N ˉ Q ] \begin{bmatrix}Q&\cdots&Q\\\vdots&&\vdots\\Q&\cdots&Q\end{bmatrix}\leq\begin{bmatrix}\gamma_1Q&\cdots&0\\\vdots&&\vdots\\0&\cdots&\gamma_{\bar{N}}Q\end{bmatrix} QQQQγ1Q00γNˉQ

1 γ 1 + ⋯ + 1 γ N ˉ = 1 , 0 ≤ 1 γ i ≤ 1 \frac{1}{\gamma_1}+\cdots+\frac{1}{\gamma_{\bar{N}}}=1,0\leq\frac{1}{\gamma_i}\leq1 γ11++γNˉ1=1,0γi11

由此可见,选择等号放大估计误差方差矩阵,
P i i = ϕ i i P i i ∗ ϕ i i T + γ i G i Q G i T P_{ii}=\phi_{ii}P_{ii}^*\phi_{ii}^T+\gamma_iG_iQG_i^T Pii=ϕiiPiiϕiiT+γiGiQGiT

P j i = ϕ j j P j i ∗ ϕ i i T = 0 , P j i ∗ = 0 P_{ji}=\phi_{jj}P_{ji}^*\phi_{ii}^T=0,P_{ji}^*=0 Pji=ϕjjPjiϕiiT=0,Pji=0

通过式中表明,只要将各子滤波器的自身的初始方差矩阵在放大些就可以忽略各子滤波器初始方差之间的相关项。这样得到的局部滤波结果也是保守的。

联邦滤波器的设计步骤

  1. 将子滤波器和主滤波器的初始估计误差方差矩阵设置为组合系统初始估计误差方差的 γ i ( i = 1 , 2 , ⋯   , N ) \gamma_i(i=1,2,\cdots,N) γi(i=1,2,,N)倍。
  2. 将子滤波器和主滤波器的过程噪声方差矩阵设置为组合系统过程噪声方差矩阵的 γ i \gamma_i γi倍。
  3. 各子滤波器处理自己的观测信息,进而获得局部估计。
  4. 在得到各子滤波器的局部估计和主滤波器的估计后,按定理1进行最优合成。
  5. 用全局最优滤波解来重置各子滤波器和主滤波器的滤波值和估计误差方差矩阵。

联邦滤波器的结构

根据信息分配策略不同,联邦滤波算法有4种实现模式:零复位模式;变比例模式;无反馈模式;融合—反馈模式。

  1. 零复位模式( β m = 1 , β i = 0 \beta_m=1,\beta_i=0 βm=1,βi=0零化式重置)

在这里插入图片描述

优缺点:

  • 主滤波器分配到全部信息;
  • 故障检测和隔离能力强;
  • 减少了数据通讯量,计算简单,解算精度不高。
  1. 变比例模式( β m = β i = 1 / ( N + 1 ) \beta_m=\beta_i=1/(N+1) βm=βi=1/(N+1)有重置)

在这里插入图片描述

优缺点:

  • 主滤波器与子滤波器之间平均分配信息;
  • 融合后全局滤波精度高,局部滤波因为有全局滤波反馈,精度也提高了;
  • 一个子系统发生故障后,主滤波器受污染,隔离后必须重新初始化主滤波器。
  1. 无反馈模式( β m = 0 , β i = 1 / N \beta_m=0,\beta_i=1/N βm=0,βi=1/N无重置)

在这里插入图片描述

  • 主滤波器状态方程无信息分配,主滤波器不需要进行滤波,只起简单的融合作用;
  • 各局部滤波器独立滤波,没有反馈重置带来的相互影响提高了容错性能;
  • 由于没有全局估计的反馈重置,局部估计精度不高。
  1. 融合—反馈模式( β m = 0 , β i = 1 / N \beta_m=0,\beta_i=1/N βm=0,βi=1/N有重置)

在这里插入图片描述

优缺点:

  • 具有反馈作用,精度较高;
  • 滤波器的故障检测与隔离能力差。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

联邦卡尔曼滤波 的相关文章

随机推荐

  • windows下PX4飞行日志文件ulog转csv流程

    确保ulg文件可以使用FlightPlot等分析软件正常打开查看安装pyulog包 xff0c 开源地址 先安装anaconda xff0c 下载地址打开anaconda prompt 运行 pip install pyulog可通过在an
  • Windows平台对PX4源码进行编译的步骤

    主要使用到的工具就是PX4 Toolchain 1 首先去github上下载Toolchain安装包 xff0c 是一个 msi文件 xff0c 然后直接照着官网教程双击安装这个文件 注意最后的安装完成页有一个clone the PX4 r
  • ros多传感器融合

    转 xff1a http www rosclub cn post 1030 html 最近实验室老师在做一个多传感器数据采集实验 xff0c 涉及到了消息同步 所以就学习了ROS官网下的消息同步工具message filters http
  • 几种嵌入式RTOS的分析与比较

    1 4种操作系统的介绍 1 1 VxWorks VxWorks是美国WindRiver公司的产品 xff0c 是目前嵌入式系统领域中应用很广泛 xff0c 市场占有率比较高的嵌入式操作系统 VxWorks实时操作系统由400多个相对独立 短
  • 【python】python的命名规范:啥时候用驼峰啥时候用下划线啥时候用大写

    类属性 类方法 xff1b 私有属性 公有属性 xff1b 私有方法 公有方法 xff1b 静态属性 静态方法 xff1b python的命名规范 xx xx xx xff08 自用笔记 xff09
  • 修改Linux启动Logo(总结)

    修改Linux 启动Logo 完美 总结 1 修改启动Logo xff0c 换成自定义的图片 目的 xff1a 开机后显示自定义的图片 xff0c 替代小企鹅 xff08 1 xff09 准备一张 png 图片 xff08 2 xff09
  • 搞懂408数据结构中的结构体的定义

    对于一些跨考408的同学来说 xff0c 是不是经常会出现看见一些结构体的定义却不懂是什么意思 xff0c 或者让你定义一个节点类型时 xff0c 不懂各个部分的具体含义 希望这篇文章能够让你搞懂结构体到底是什么 xff0c 各个部分是什么
  • 无人机集群控制方案

    无人机集群控制方案 集群控制简介 多机器人群体控制系统一般分为集中式控制结构和分布式控制结构 集中式控制结构 xff1a 一个主控单元 xff0c 集中掌握了环境中全局信息和所有机器人的信息 xff0c 进行集中式处理任务与资源分配由主控单
  • 谷粒学院学习知识点汇总-------01

    前言 谷粒学院视频的系列首先先是学习一波理论知识 xff0c 最后跟着视频敲一遍整个项目 xff0c 到部署项目上线 xff0c 给自己定个flag xff0c 一个月之内完成项目部署上线 一 事务 1 1事务是数据库操作最基本单元 xff
  • Ubuntu下vscode的简单配置C/C++环境

    下载vscode并安装 方法1 在ubuntu软件中搜索 vscode下载 xff0c 但是我失败了 方法2 直接去官网下载https code visualstudio com Download xff0c 下载Linux版本的并安装 方
  • ubuntu zip和unzip命令

    zip span class token operator span r myfile span class token punctuation span zip test span class token operator span un
  • 一、ROS2简介

    ros2相关简介 ROS2的前身是ROS xff0c ROS即机器人操作系统 xff08 Robot Operating System xff09 但是ROS本身并不是一个操作系统 xff0c 而是一个软件库和工具集 Ros的出现解决了机器
  • 二、ROS2基本操作

    ROS2节点 ROS2的节点讲究分工合作 xff0c 每个节点负责一个单独的模块化功能 举一个激光雷达的例子 xff0c 一个节点负责获取激光雷达的扫描数据 xff0c 一个节点负责处理激光雷达数据 xff0c 还有一个节点负责控制车轮转动
  • 六、ROS2通信机制(服务)

    一 服务介绍 客户端发送请求给服务端 xff0c 服务端可以根据客户端的请求做一些处理 xff0c 然后返回结果给客户端 这里与话题的主要区别就是 xff1a 话题是没有返回的 xff0c 适用于单向或大量的数据传递 而服务是双向的 xff
  • 作业4-8-5:HBase Shell插入数据:学生表、课程表、选课表

    现有以下关系型数据库中的表和数据 xff0c 要求将其转换为适合于HBase存储的表并插入数据 xff1a 学生表 xff08 Student xff09 keyRow 学号 xff08 S No xff09 姓名 xff08 S Name
  • 树莓派4B连接PCF8591模块

    1 PCF8591是8位的数模 模数转换集成芯片 xff0c 如图 1 xff08 详细介绍可以点击参考 xff09 图 1 PCF8591 2 AIN0 AIN3接模拟输入 xff0c 比如气体传感器 xff0c 能外接三个通道的模拟输入
  • “指定的网络名不再可用”解决办法

    主机操作系统 xff1a win10 linux操作系统 xff1a ubuntu22 04 在Windows下安装ubuntu xff08 wsl xff09 时 xff0c 出现 指定的网络名不再可用 xff0c 解决办法如下 xff1
  • Jetson xavier nx 安装CUDA10.2,和cudnn8.0

    2022 6 16更新 现在Jetson xavier nx 安装CUDA和CUDNN不需要下面那么复杂了 xff0c 可以直接通过刷机将其安装到设备上 在官网下载SDK Manager可以直接将CUDA烧录进设备 xff08 特别注意如果
  • 关于return用法时,return报错。

    在for循环里面return想要跳出全部循环时 xff0c 会报语法错误SyntaxError return outside function 原因是return只能写在def函数里面 没有def n span class token op
  • 联邦卡尔曼滤波

    联邦Kalman滤波 利用Kalman滤波技术对多传感器数据进行最优融合有两种途径 集中式Kalman滤波和分散化滤波 集中式Kalman滤波利用一个滤波器来集中处理所有子系统的信息 分散化滤波利用子滤波器处理子系统的信息通过全局滤波器实现