卡尔曼滤波器理论推导

卡尔曼滤波器理论推导包括对数据融合、协方差矩阵和状态空间方程的讨论。文中详细介绍了卡尔曼增益的计算、协方差矩阵的定义以及如何通过状态空间方程描述系统的状态变化。总结指出卡尔曼滤波器在处理预测数据和传感器观测数据时的核心思想,即根据传感器的精度调整卡尔曼增益K的值,以平衡对预测和观测的信任程度。

type
status
date
slug
summary
tags
category
icon
password

Part 0: 参考内容

参考B站UP主:Math talk、DR_CAN
参考链接:
21. 卡尔曼滤波器详解--从零开始(1) Kalman Filter from Zero
接下来的几篇从零开始介绍 Kalman filter系列的文章花费了我许多时间整理。这个话题我一直不想开始讲,是因为真的要讲好这一块,并且从基础开始讲,是非常不容易的。这就是控制的难学之处,内容庞杂! Kalman Filter既是控制设计方面学习者的 需知常识,也是 传感器系统设计和优化, 信号处理,系统辨识等领域的实践者的 必备知识 。理解Kalman filter需要大概四块领域的知识: 概率和随机过程理论(Probability and Random Process Theory) 统计学和最优估计理论(Statistics and optimal estimation) 信号处理 (Signal Proccessing) 动力学系统常识(Dynamic Systems) 我会以 5门本书 的内容(见reference)为基础从最基础的知识开始讲,把必须知道的一些东西讲清楚,而不是上来便抛出一系列公式和符号。主要基于前4本书来讲解,第5本中文教材可以说是一个以上4本教材内容的一些简短总结。同样的,名词我会用中英文交替书写,以便你习惯以后阅读其他英文资料。 说是从0开始,你需要对控制和信号的基本知识有个大概了解。这一系列文章本来是作为 LQG 控制(Linear Quadratic Gaussian Control) 的一点前奏,后来想好好写一写也算是给读者们的一点福利。由于filtering是一块非常庞大的知识体系,我只挑基础的必要知识来讲,以及基础的Kalman filter理论。 Kalman filter有很多改进版本,这里作为关于控制的系列文章,我就不花时间列举了。作为现代控制理论系列文章的一块核心内容,但愿能帮助到你们学习控制理论。多 点赞和 推荐 给你挣扎中的朋友,也算支持我抽空出来创作吧。 关于私信和咨询啊,做题写paper什么的术业有专攻,我就不回应这些诉求了。老实说很多知友抛出的问题我也不是一下子就能完全解答的,也得花费时间去找资料阅读和思考。我也没打算靠那点咨询费去赚钱,要的高了,知道很多人都是学生,也没那个经济能力。以我目前的工作状态,只能满足抽空来总结一些控制基础知识了,一方面是给自己的阅读留下一点笔记,另一方面给自己的一些要学习控制的学术界朋友和学生留点干货。我能保证的就是,既然写了,就一定要写好,不是截个图,连自己都没搞懂就来误人子弟。 本篇目录: What is Kalman Filter and its use?
21. 卡尔曼滤波器详解--从零开始(1) Kalman Filter from Zero
参考书籍:
  • 概率机器人
  • 机器人学中的状态估计

Part 1: Recursive Algorithm 递归算法

Optimal Recursive Data Processing Algorithm——最优化递归数字处理算法
更像是观测器而不是一般的滤波器
系统的不确定性:
  1. 不存在完美的数学模型
  1. 系统的扰动不可控,也很难建模
  1. 测量传感器存在误差
例:
对某个物体进行测量,记第k次测量结果为
估计真实数据 → 取平均值
其中,为k-1次时的平均值
则原式可合并为如下
可得到
随着k的增加,测量结果不再重要
k值小的时候,较大,作用较大
,则上式化为
当前的估计值 = 上一次的估计值 + 系数 *(当前测量值 - 上一次的估计值)
:Kalman Gain 卡尔曼增益/因数
估计误差:
测量误差:
则卡尔曼滤波器的核心公式为:
讨论:在k时刻:
    1. k-1时的估计误差远大于k时的测量误差
计算步骤如下:
  1. 计算卡尔曼增益:
  1. 计算:
  1. 更新:
例:长度测量
实际长度:
第一次估计长度:
第一次估计误差:(假设估计误差不变)
第一次的测量值:
第一次的测量误差:
测量次数
z_{k}
e_{MEA_{k}}
\hat{x_{k}}
k_{k}
e_{EST_{k}}
0
40
5
1
51
3
46.88
0.625
1.875
2
48
3
47.31
0.385
1.154
3
上述表格画为曲线
notion image
递归思想:随着数据的不断迭代,测量值会逐渐靠近真实值

Part 2: Data Fusion, Covariance Matrix, State Space, Observation

参考如下链接:

Data Fusion 数据融合

为标准差,服从正态分布
估计真实值
求k使得最小 方差最小
由于独立:
由上式可知当时,最小,因此有:
最后解得:
表示当K取此值时,估计值最小。至此可以看到卡尔曼增益的雏形了。
卡尔曼增益——数据融合结果

Covariance Matrix 协方差矩阵

协方差描述的是两个变量之间的相关性,对于两个变量x,y 可将二者的协方差表达为:
上式可理解为当高于平均值时,如果相应的每个也高于平均值,则,表示二者成正相关;反之当高于平均值时,相应的每个低于平均值,则,表示二者负相关。
并且我们将变量x的方差表示为。因此规定对于两个变量x, y, 可将二者的协方差表达为:
对于三个变量x,y,z的协方差矩阵则表示为:
对于任意变量的协方差矩阵也可以此类推。
对于协方差矩阵的求取可用如下方法(以求取拥有n个样本的三个变量x,y,z的协方差矩阵为例):
Step1:设样本矩阵s:
Step2:求过渡矩阵(注意式中第二项为元素全为1的方阵,而不是单位阵):
Step3:最后求协方差矩阵P:
注:MATLAB函数
方差函数:varp
协方差函数:covar

State Space, Observation 状态空间方程以及观测器

现代控制理论中,除了有传统的输入输出作为描述系统的概念意外,还引入状态变量这一概念标识系统的状态。由输入、输出和状态标量组成,描述系统变化的方程称为状态空间方程(也叫状态空间表达式)。状态空间方程由状态方程和输出方程组成。对于离散系统和连续系统,状态空间方程有着各自的表达方法。由于卡尔曼滤波较多适用于离散系统,所以本节主要讲解离散系统的状态空间方程。
notion image
假设地面上有一辆车向前行驶,因为人类都是控制油门前进的,因此将加速度来设为输入量u对这辆车进行控制。我们可以把这辆车的位移l,速度v和加速度a设置为状态变量,则由其三者组成的状态空间向量为:
每隔一段时间t,空中的卫星就会对小车的速度v和加速度a进行一次测量,对于K时刻来说,本时刻的状态变量:位移,速度和加速度与上一时刻的状态变量有如下关系:
因此我们可将上述公式总结成状态转移方程(上式)和测量方程(下式):
其中:
为过程噪音
上式组成离散系统的状态空间方程。
对于上式来说有两点值得讨论:
  1. 在测量和计算的过程中都会有各种各样的误差。比如状态转移方程中是假设汽车在采样时间t中一直以加速度在运动,但实际可能不是这样的;又或者对于卫星传感器来说测得的观测值可能带有一定的误差。因此我们以表示过程噪音加在状态转移方程的后面,以代表测量噪音加在测量方程后面:
    1. 后面的卡尔曼滤波算法会对上式的两个噪音进行处理,达到滤波的效果。
  1. 对于状态空间方程两个式子中的两个的取值是有冲突的:状态转移方程中的是我们根据系统计算出来的;而测量方程中的其实属于未知的,因为在测量方程中我们先得到的是带有噪音的测量值。因此对于两个的置信问题就需要我们用到第一节提到的数据融合思想了。这也是卡尔曼滤波解决的问题。

第三章到第五章参考电子书手写笔记内容

二维实例MATLAB代码

扩展卡尔曼滤波器

对于线性系统,状态方程和观测方程如下:
其中
预测方程
校正方程
对于非线性系统,有以下表达形式:
f, h 为非线性函数
正态分布的随机变量通过非线性系统后就不再是正态分布了
如果对于以上系统使用卡尔曼滤波,则需进行线性化(泰勒线性近似)
采用方法:泰勒展开
以上展开式对于二维函数采用求导方式,对于高维函数采用求 Jacobian 矩阵方式
(这部分参考 DR_CAN 的工程数学基础——线性化与泰勒级数)
已知问题:系统有误差,无法在真实点线性化
因此,过程方程函数(k-1处的后验估计)处线性化
为误差项,此处假设为0
(求 k-1 点处的 Jacobian 矩阵)
A矩阵随k的变化而不断变化
对于噪声方程:
观测函数处线性化
为误差项,此处假设为0
非线性系统函数在 k-1 处线性化,得出
对于噪声函数:
综上所述,对于非线性系统来说
非线性预测方程为
非线性校正方程为

总结

关于卡尔曼及卡尔曼增益的理解【精】
提到卡尔曼,不得不说一个故事: 片绿油油的草地上有一条曲折的小径,通向一棵大树.一个要求被提出:从起点沿着小径走到树下. "很简单." A说,于是他丝毫不差地沿着小径走到了树下. 现在,难度被增加了:蒙上眼。 "也不难,我当过特种兵。" B说,于是他歪歪扭扭地走到了树旁。"唉,好久不练,生疏了。" (只凭自己的预测能力) "看我的,我有 DIY 的 GPS!" C说,于是他像个醉汉似地歪歪扭扭的走到了树旁。"唉,这个 GPS 没做好,漂移太大。"(只依靠外界有很大噪声的测量) "我来试试。" 旁边一也当过特种兵的拿过 GPS, 蒙上眼,居然沿着小径很顺滑的走到了树下。(自己能预测+测量结果的反馈) "这么厉害!你是什么人?" "卡尔曼 ! " "卡尔曼?!你就是卡尔曼?" 众人大吃一惊。 "我是说这个 GPS 卡而慢。 总结就是预测+测量更新。 卡尔曼滤波的测量更新部分是由最小二乘推导而来。 今天主要说明卡尔曼增益的Kt如何去理解? 卡尔曼主要来处理如下两个来源的数据: (1)根据模型来预测出的数据。(预测) (2)传感器观测到的数据。(观测) 核心: K越小越相信你的预测(1)中的估计, K越大越相信你的观测(2)中的观测。 K的值和传感器的精度有关。依赖于按个传感器更缺。 20200820 ------------------------------------------------------------------------------我是分割线---------------------------------------------- --------------------- 我们从另一个角度理解卡尔曼滤波算法,假设你的传感器和预测模型的噪声均满足正高斯正态分布,看下面图片: 显然你可以看到两个正态分布相乘,带P下坠的代表预测满足的噪声正态分布,带m下标的表示是传感器测量噪声所满足的正态分布。这两个预测和测量是独立事件。 整理后得到上述的式子。我们会得到如下分析: (1)δp越大时,k越大,这样对于预测来说它的噪音的不确定性变大,所以我们相信更传感器的测量值。 (2) δp越小的时候,k越小,这样对于预测来说它的噪音不确定性变小,所以我们更相信预测的值。 现在,我们把一维推广到高维,用矩阵表示: 比如高维情况下卡尔曼增益K=P*Ht*(R+HPHt)(图中绿框地方),这个式子与正好对应。P是预测的方差,H是观测矩阵,R是传感器测量满组方差。其余也是一一对应的。 20200822
关于卡尔曼及卡尔曼增益的理解【精】
卡尔曼主要来处理如下两个来源的数据:
  • 根据模型来预测出的数据。(预测)
  • 传感器观测到的数据。(观测)
核心:
K越小越相信你的预测(1)中的估计,
K越大越相信你的观测(2)中的观测。
K的值与传感器的精度有关。它取决于哪个传感器更可靠。
Loading...