卡尔曼滤波增益推导

该文章主要是记录温习卡尔曼滤波算法理论时的一些理解,重点讲解卡尔曼增益的推导过程。其中忽略了部分基础知识和详细的推导过程,阅读该文章需要本身已具备卡尔曼滤波基础。文章内容摘取自网络博客的部分内容,因为原文章的逻辑不是很通顺,所以这里根据自己的理解进行整理。

前置概念:

1)正态分布

2)期望:对随机变量可能取值的加权平均值,其中权重是取值的概率。用期望去理解均值的计算就是均值计算中可能取值的概率均为1。

3)服从正态分布的随机变量,其期望为均值。

4)服从正态分布的随机变量,其方差为

5)先验估计:根据上一时刻的最优估计(先验值)得到当前时刻的估计值。

6)后验估计:根据先验估计,当前时刻的测量值,卡尔曼增益计算当前最优估计值。

7)协方差矩阵:用来度量估计值的不确定性,代表这个估计值的误差。其对角线是单个变量的方差。先验估计和后验估计都对应一个协方差矩阵。

首先通过数据融合的例子来理解卡尔曼增益:设目标真实值为Z,GPS测量值为 Z1 ,加速度计测量值为 Z2。两传感器都受噪声的影响,不失一般性,让两个测量信号的误差都服从正态分布:

通过组合两个测量值来得到真实值的最优估计:

其中K是需确定的权重因子,为求得最优K,尝试最小化估计误差的方差。

真实值为z ,那么估计误差为:

估计误差的方差为:

展开方差:

最小化方差,我们对K求导数并令其等于零:

得到最优K值:

最后通过最优K值计算得到最优估计值。当K=0时表示只相信GPS的测量值,当K=1时表示加速度计测量值。对应到卡尔曼滤波中,卡尔曼增益就是预测值与观测值之间的权重因子,卡尔曼滤波的原理就是利用卡尔曼增益和测量值来修正预测值,使其逼近真实值。

根据上面的例子来考虑线性卡尔曼滤波增益的推导。先回顾一下卡尔曼滤波的整体步骤,总体有两步(预测和校正),具体的步骤如下图:

类比上面叙述的数据融合的思想将预测值和测量值表示出来。预测值为:

(1)

其中k表示当前时刻,k-1表示上一时刻。这个式子的意义就是利用上一时刻的最优估计预测当前时刻的状态量。测量值为:

(2)

H矩阵是将预测向量与测量向量的转换矩阵,这个式子代表的意思是将当前时刻的测量值转成状态空间的状态向量。

融合两个数据计算当前最优估计值:

G是权重因子,取值在[0, 1]之间,要想得到最优估计,只需要找到最优G值。

为方便计算引入卡尔曼增益K:

则K的取值为:

将K代入上式以消除H逆矩阵:

(3)

所以要想求得最优估计,则需要找到最优K值。思路是通过构建最优估计误差方程,将K引入误差方程,然后求误差方程的协方差矩阵,对协方差矩阵求K的偏导,偏导等于0时即表示误差最小,此时导数方程含有K值,即可求得最优K值。具体如下:

1)引入测量噪声并计算估计误差

上面对于预测值和测量值的表示没有引入误差,实际中测量值和预测值均存在噪声。

将式子(2)变换到测量空间并引入测量噪声得到新的测量方程:

(4)

求得最优估计即表示最优估计与真实值的误差最小,即后验估计误差最小,如下:

(5)

同理先验估计误差为:

(6)

其中Xk表示当前时刻的真实值(这个是不知道的),表示当前最优估计(后验估计)。

2)消除误差方程中的中间值,得到误差传递方程,计算误差的协方差矩阵

将式子(3)代入式子(5)中消除,接着继续将式子(4)代入其中消除Zk,得到后验估计误差方程:

(7)

该方程是误差传递方程,根据该方程可以得到其后验估计误差的协方差矩阵:

(8)

其中R是测量噪声的协方差矩阵。该协方差矩阵表示后验估计误差的不确定性。

3)求协方差矩阵的迹

考虑后验估计误差的协方差矩阵的迹,如下:

(9)

其等于后验估计状态变量的各个元素方程的和,所以它的值就表示了后验估计的准确性,其值越小表示后验估计误差越小。那么求解目标就变成了寻找最优的卡尔曼增益K从而使得(9)最小。式子(9)的展开式为:

4)求K的偏导,得到K的表达式

求K的偏导,得到目标函数J:

令J=0得到卡尔曼增益:

参考文章:

卡尔曼滤波:基本原理、算法推导、实践应用与前沿进展 - 知乎

相关推荐
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
爱敲代码的憨仔1 小时前
《线性代数的本质》
线性代数·算法·决策树
yigan_Eins1 小时前
【数论】莫比乌斯函数及其反演
c++·经验分享·算法
阿史大杯茶2 小时前
AtCoder Beginner Contest 381(ABCDEF 题)视频讲解
数据结构·c++·算法
დ旧言~2 小时前
【高阶数据结构】图论
算法·深度优先·广度优先·宽度优先·推荐算法
张彦峰ZYF2 小时前
投资策略规划最优决策分析
分布式·算法·金融
The_Ticker2 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
爪哇学长3 小时前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法
Dola_Pan3 小时前
C语言:数组转换指针的时机
c语言·开发语言·算法
繁依Fanyi3 小时前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse