无迹卡尔曼滤波(UKF)推导

2024-04-03 13:52

本文主要是介绍无迹卡尔曼滤波(UKF)推导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pdf和图片链接:

链接:https://pan.baidu.com/s/1q8tIy1q5gqlhYEKH1l8frg 
提取码:yyds

1.1概述

无迹卡尔曼滤波(Unscented Kalman Filter),最初由JulierUhlmann提出,使用了一种不同的方法来计算误差协方差矩阵。它不使用(连续时间)黎卡提方程(Riccati Equations,形如 的一类非线性方程)或(离散时间)协方差传播和更新规律。关键的思想是基于一组特殊的样本点来估计误差协方差,这些点被称为 点(Sigma Points),这些点直接通过原始非线性模型传播。

1.2 无迹变换

以一维高斯分布为例,随机变量为X,其中高斯分布的数学表达式为:

其中均值为 ,方差为 ,其分布函数如图1所示:

无迹变换表示有三个特殊样本点的高斯分布,称为 点,三个点分别为:

             

        

        

其中, 是需要调整的 点的参数, 是用于计算均值和方差的第 点的权值。

通过计算三个 点的加权均值,得出三个 点的加权均值与高斯分布的真实均值一致:

通过计算三个 点的加权方差,三个 点的加权方差与方差的真实值一致:

因此, 点的均值和方差提供了任意参数 值的真实高斯分布的正确均值和方差。

如图所示,现在有一个从xy的非线性变换:

其中函数 是解析函数。

y的分布不再是高斯分布,但其均值 和方差 可以表征该分布。

我们可以证明通过非线性函数变换后的加权均值可以逼近三阶的真实均值。

其中 是一个4阶以上的小量。

进一步,我们可以证明加权方差可以近似真实方差到二阶。

1.3例子

如图所示,有 的分段线函数(为了可微性,两条线用光滑曲线连接)。

x的均值变换为 ,这并不是y分布的真实均值,通过检验我们可以看到:

点的加权平均值可以给出较好的平均值:

                                                                   

1.4 多元高斯分布的

1) 一般来说,对于n维高斯分布,我们使用2n+1个 点。

注意协方差矩阵 是实数、对称和正定的。因此,它可以对角化。

其中

2) 点沿单位长度的单个特征向量取 .

 

                    

          

         

3) 和以前一样,所有的 点通过一个非线性解析函数传播, ,属于多元函数。

4) 对于这些传播点,计算加权平均值:

加权协方差为:

我们可以证明加权均值可以近似三阶真实均值,加权协方差可以近似二阶真实均值。这种采样方法称为无迹变换。

1.5无迹卡尔曼滤波

考虑一个非线性离散时间动态系统:

  

在不丢失一般性的情况下,我们将u设置为零,

过程噪声和测量噪声是零均值、不相关(白)噪声,协方差为

  

在时刻t-1,后验估计 和后验误差协方差是可用的:

问题是使用无迹变换找到递归公式:

1)状态和协方差的传播:从 中求 ;

2)状态和协方差的更新:从 中找到

1.6 状态传播

1) 找到协方差 的特征值和特征向量,生成2n+1个点;

2) 通过状态方程传播 点,注意过程噪声为零均值:

3) 对于这些2n+1个 点,计算加权平均值:

1.7 协方差传播

先验协方差计算为:

 

是未知的因为我们不知道 的确切状态。但是,加权平均值 近似于三阶。因此,我们将 替换为加权均值,并使用2n+1个 点计算先验协方差。

注意,预测的协方差在二阶前是正确的。为简便起见,下标“sample”将在下文中省略。

1.8利用新的协方差获得卡尔曼增益

我们的目标是使用 点更新状态和协方差。然而,标准卡尔曼增益和协方差更新法不适用于无迹变换。相反,我们将考虑一种新的替代方法。卡尔曼增益为 ,但 矩阵对我们的非线性系统是不可用的。相反,我们使用下面的公式,

对于一个线性时变系统,这个新公式可以用结构证明。

结合上述两点,证明了卡尔曼增益的新公式。输出y的协方差称为“创新协方差”。

1.9 状态更新

通过对先验协方差 应用无迹变换可以更新状态和协方差。

1) 通过检验通过测量方程产生的输出,并通过分布来获得新协方差;

2) 计算先验协方差的特征值和特征向量:

3) 然后生成2n+1个 点,并估计输出y的分布与 点的均值和协方差;

4) 利用测量函数的确定性部分,将 点映射到:

5) 点的加权均值:

6) 结合创新协方差得到:

7) 用 点计算第一项:

同理,交叉协方差由:

8) 卡尔曼增益是

9) 状态更新为:

1.10协方差更新

1) 协方差更新公式中包含测量矩阵 ,需要替换。

我们可以使用创新协方差:

2) 协方差更新公式中插入协方差更新公式中插入 :

式中,利用卡尔曼增益消去测量矩阵

3) 利用 点,可以这样计算:

1.11无迹卡尔曼滤波器的递归算法

1) 给定 ,通过计算 的特征值和向量对 点进行抽样;

2) 将 点通过非线性模型传播得到 ;

3) 用2n+1个 点计算均值和方差:

4) 对 再次采样2n+1个 点;

5) 根据非线性测量方程,将传播的 点变换为输出估计 ,并计算输出估计:

6) 利用2n+1个点的传播输出估计来评估创新协方差和交叉协方差,得到卡尔曼增益:

7) 用卡尔曼增益更新状态估计:

8) 更新后验协方差:

9) 设 ,重复上述过程。

不需要雅可比矩阵,不需要偏导。用标准差点估计协方差比用雅可比矩阵估计协方差更精确。

警告!随机变量通过非线性方程 , 变换后的分布不再是高斯分布,虽然原来的分布是高斯分布。

无迹卡尔曼滤波器将此分布近似为高斯分布,并以均值和协方差为特征。虽然该近似值精确到2阶,但随着过程的重复,与完全高斯分布的差异可能会增大。

这篇关于无迹卡尔曼滤波(UKF)推导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/873090

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

【无线通信发展史⑧】测量地球质量?重力加速度g的测量?如何推导单摆周期公式?地球半径R是怎么测量出来的?

前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢? 首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的来源以及在每一个时代的发展进程。 为什么会从头开始写通信? 我最早是学习了中华上下五千年,应该说朝代史,这个算个人兴趣,从夏

CF #278 (Div. 2) B.(暴力枚举+推导公式+数学构造)

B. Candy Boxes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/488/problem/B There

HDU2524(规律推导)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2524 解题思路: 暴力推出矩阵,以n = 2 , m = 4为例: 1 3  6  10 3 9 18 30 可以发现第一行和第一列都是有规律的,彼此相差2、3、4·····,其他元素为相应行第一个元素乘以第一列元素的积。预处理之后,我们O(1)就可以输出g[n][m]的值。 另外,

Ural1209(数学推导)

题目链接:点击打开链接 解题思路: 此题甚好。推导公式,首先观察序列110100100010000·····,我们把为1的下标单独拿出来看。依次为1、2、4 、7、 11·····,可以分解为1+(0) 、1+(0+1)、1+(0+1+2)、1+(0+1+2+3)、1+(0+1+2+3+4),可以推导出规律1 + x * (x - 1) / 2。 那么对于每个n,我们只要判断是否存在x

Python中如何实现列表推导式(List Comprehension)

Python中的列表推导式(List Comprehension)是一种简洁且高效的方式来创建列表。它不仅让代码更加简洁,而且通常比使用循环和条件语句生成列表更快。列表推导式的基本形式允许你从现有的列表或其他可迭代对象中创建新的列表,同时应用过滤和转换操作。下面我将详细解释列表推导式的概念、基本语法、高级用法以及其在实际应用中的优势。 一、列表推导式的基本概念 列表推导式是Python中的一种

对极约束及其性质 —— 公式详细推导

Title: 对极约束及其性质 —— 公式详细推导 文章目录 前言1. 对极约束 (Epipolar Constraint)2. 坐标转换 (Coordinate Transformations)3. 像素坐标 (Pixel Coordinates)4. 像素坐标转换 (Transformations of Pixel Coordinates)5. 本质矩阵 (Essential Matr

【Python基础】Python推导式

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、列表推导式三、元组推导式(生成器表达式)四、字典推导式五、集合推导式六、总结 一、前言 Python推导式(Comprehensions)是Python语言中一种独特且强大的语法特性,用于从已有的可迭代对象(如列表、元组、字典、集合)快速创建

《机器学习》 基于SVD的矩阵分解 推导、案例实现

目录 一、SVD奇异值分解 1、什么是SVD 2、SVD的应用         1)数据降维         2)推荐算法         3)自然语言处理 3、核心         1)什么是酉矩阵         2)什么是对角矩阵 4、分解过程 二、推导 1、如何求解这三个矩阵         1)已知:          2)根据酉矩阵的特点即可得出:

从“法线贴图的意义”到“切线空间公式的推导与验证”

目录 目标1. 法线贴图1.1 “法线”的意义1.2 “法线贴图”的意义 2. 切线空间2.1 法线贴图中数据的含义2.2 “切线空间”的定义 3. 切线空间计算公式3.1 构造几何关系等式3.2 切线空间计算公式 4. 代码5. 验证——与其他美术软件计算的结果进行比较总结 目标 本篇的重点是 讨论法线贴图的意义讨论切线空间的意义推导切线空间的计算公式根据公式编写代码将其计算