卡尔曼滤波器理论推导
卡尔曼滤波器理论推导包括对数据融合、协方差矩阵和状态空间方程的讨论。文中详细介绍了卡尔曼增益的计算、协方差矩阵的定义以及如何通过状态空间方程描述系统的状态变化。总结指出卡尔曼滤波器在处理预测数据和传感器观测数据时的核心思想,即根据传感器的精度调整卡尔曼增益K的值,以平衡对预测和观测的信任程度。
type
status
date
slug
summary
tags
category
icon
password
Part 0: 参考内容Part 1: Recursive Algorithm 递归算法Part 2: Data Fusion, Covariance Matrix, State Space, ObservationData Fusion 数据融合Covariance Matrix 协方差矩阵State Space, Observation 状态空间方程以及观测器第三章到第五章参考电子书手写笔记内容二维实例MATLAB代码扩展卡尔曼滤波器总结
Part 0: 参考内容
参考B站UP主:Math talk、DR_CAN
参考链接:
参考书籍:
- 概率机器人
- 机器人学中的状态估计
Part 1: Recursive Algorithm 递归算法
Optimal Recursive Data Processing Algorithm——最优化递归数字处理算法
更像是观测器而不是一般的滤波器
系统的不确定性:
- 不存在完美的数学模型
- 系统的扰动不可控,也很难建模
- 测量传感器存在误差
例:
对某个物体进行测量,记第k次测量结果为
估计真实数据 → 取平均值
其中,为k-1次时的平均值
则原式可合并为如下
可得到
随着k的增加,测量结果不再重要
k值小的时候,较大,作用较大
令,则上式化为
当前的估计值 = 上一次的估计值 + 系数 *(当前测量值 - 上一次的估计值)
:Kalman Gain 卡尔曼增益/因数
估计误差:
测量误差:
则卡尔曼滤波器的核心公式为:
讨论:在k时刻:
k-1时的估计误差远大于k时的测量误差
计算步骤如下:
- 计算卡尔曼增益:
- 计算:
- 更新:
例:长度测量
实际长度:
第一次估计长度:
第一次估计误差:(假设估计误差不变)
第一次的测量值:
第一次的测量误差:
测量次数 | 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 | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ |
上述表格画为曲线
递归思想:随着数据的不断迭代,测量值会逐渐靠近真实值
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 状态空间方程以及观测器
现代控制理论中,除了有传统的输入输出作为描述系统的概念意外,还引入状态变量这一概念标识系统的状态。由输入、输出和状态标量组成,描述系统变化的方程称为状态空间方程(也叫状态空间表达式)。状态空间方程由状态方程和输出方程组成。对于离散系统和连续系统,状态空间方程有着各自的表达方法。由于卡尔曼滤波较多适用于离散系统,所以本节主要讲解离散系统的状态空间方程。
假设地面上有一辆车向前行驶,因为人类都是控制油门前进的,因此将加速度来设为输入量u对这辆车进行控制。我们可以把这辆车的位移l,速度v和加速度a设置为状态变量,则由其三者组成的状态空间向量为:
每隔一段时间t,空中的卫星就会对小车的速度v和加速度a进行一次测量,对于K时刻来说,本时刻的状态变量:位移,速度和加速度与上一时刻的状态变量有如下关系:
因此我们可将上述公式总结成状态转移方程(上式)和测量方程(下式):
其中:
为过程噪音
上式组成离散系统的状态空间方程。
对于上式来说有两点值得讨论:
- 在测量和计算的过程中都会有各种各样的误差。比如状态转移方程中是假设汽车在采样时间t中一直以加速度在运动,但实际可能不是这样的;又或者对于卫星传感器来说测得的观测值可能带有一定的误差。因此我们以表示过程噪音加在状态转移方程的后面,以代表测量噪音加在测量方程后面:
后面的卡尔曼滤波算法会对上式的两个噪音进行处理,达到滤波的效果。
- 对于状态空间方程两个式子中的两个的取值是有冲突的:状态转移方程中的是我们根据系统计算出来的;而测量方程中的其实属于未知的,因为在测量方程中我们先得到的是带有噪音的测量值。因此对于两个的置信问题就需要我们用到第一节提到的数据融合思想了。这也是卡尔曼滤波解决的问题。
第三章到第五章参考电子书手写笔记内容
二维实例MATLAB代码
扩展卡尔曼滤波器
对于线性系统,状态方程和观测方程如下:
其中
预测方程
校正方程
对于非线性系统,有以下表达形式:
f, h 为非线性函数
正态分布的随机变量通过非线性系统后就不再是正态分布了
如果对于以上系统使用卡尔曼滤波,则需进行线性化(泰勒线性近似)
采用方法:泰勒展开
以上展开式对于二维函数采用求导方式,对于高维函数采用求 Jacobian 矩阵方式
(这部分参考 DR_CAN 的工程数学基础——线性化与泰勒级数)
已知问题:系统有误差,无法在真实点线性化
因此,过程方程函数在(k-1处的后验估计)处线性化
为误差项,此处假设为0
令
(求 k-1 点处的 Jacobian 矩阵)
A矩阵随k的变化而不断变化
对于噪声方程:
观测函数在处线性化
为误差项,此处假设为0
将和非线性系统函数在 k-1 处线性化,得出
对于噪声函数:
综上所述,对于非线性系统来说
非线性预测方程为
非线性校正方程为
总结
卡尔曼主要来处理如下两个来源的数据:
- 根据模型来预测出的数据。(预测)
- 传感器观测到的数据。(观测)
核心:
K越小越相信你的预测(1)中的估计,
K越大越相信你的观测(2)中的观测。
K的值与传感器的精度有关。它取决于哪个传感器更可靠。
Loading...