卡尔曼滤波Kalman Filter


年少不知记笔记,老来方恨看不懂……本文从三方面进行,首先是卡尔曼滤波的思想,然后对卡尔曼滤波进行公式推导,最后是对卡尔曼滤波进行总结。

核心思想

取自知乎Kent Zeng的回答:点击链接,我对他的回答进行了例子的补充。
1、假设你有两个传感器,测的是同一个信号。可是它们每次的读数都不太一样,怎么办?
取平均。
2、再假设你知道其中贵的那个传感器应该准一些,便宜的那个应该差一些。那有比取平均更好的办法吗?
加权平均。
怎么加权?假设两个传感器的误差都符合正态分布,假设你知道这两个正态分布的方差,用这两个方差值,(此处省略若干数学公式),你可以得到一个“最优”的权重。

Example:比如GPS和IMU测量值,GPS可以测量你走过的路,IMU也可以,它们的误差都满足正态分布,那我们也可以通过它们的误差协方差矩阵调整权重进行融合。

3、接下来,重点来了:假设你只有一个传感器,但是你还有一个数学模型。模型可以帮你算出一个值,但也不是那么准。怎么办?
把模型算出来的值,和传感器测出的值,(就像两个传感器那样),取加权平均。

Example:一个机器人当前状态是5米每秒,做匀速运动,且搭载雷达可测距,当前机器人距离障碍物20米,下一秒我们可以通过数学模型预测得到机器人距离障碍物还有15米(估计值),而此时雷达测距17米(观测值),然后我们就要看估计值和观测值的准确度,其实就是方差(多元的话是协方差矩阵),方差大权重就低,反之则高。

痛苦的证明

又到了痛苦的时候。
首先搞清楚几个概念:
预测值:通过预测方程得到的值,有噪声
观测值:通过观测方程得到的值,有噪声
估计值:最后得到的值,有噪声
标准值:无噪声,不可能得到的值
误差协方差:描述这个值的可信度,越小越好

我们要得到什么?
K时刻刚开始到来的时候,我们拥有K-1时刻的估计值以及它的误差协方差(可信度)。
那么K时刻结束时,我们要求拥有K时刻的估计值以及它的误差协方差(可信度)。

预测

状态转移方程&预测值

假设一台车的状态可以表示为位置和速度,假设有一台车,正在做加速运动(也就是有加速度),那么他的运动方程可以写成这种形式:
p k = p k − 1 + Δ t v k − 1 + 1 2 a Δ t 2 v k = v k − 1 + a Δ t \begin{array}{l} {p_{k}=p_{k-1}+\Delta t v_{k-1}+\frac{1}{2} a \Delta t^{2}} \\ {v_{k}=\quad v_{k-1}+a \Delta t} \end{array} pk=pk1+Δtvk1+21aΔt2vk=vk1+aΔt
写成矩阵的形式,有:
在这里插入图片描述

这个又称为k-1时刻到k时刻的状态转移方程 x ^ k ′ \hat{x}_k^{\prime} x^k指的是预测值。
B k B_k Bk称为控制矩阵, u k → \overrightarrow{\mathbf{u}_{k}} uk 称为控制向量,这个项( B k u k → B_k\overrightarrow{\mathbf{u}_k} Bkuk )可有可无(比如说小车做匀速运动时就没有), x ^ k − 1 \hat{x}_{k-1} x^k1指的是上一时刻的卡尔曼滤波的估计值。

预测值的误差协方差矩阵

来看一下预测值 x ^ k ′ \hat{x}_k^{\prime} x^k的误差协方差矩阵,也就是预测值的可信度。请注意,有一些外力是我们无法预测的,比如在运动的过程中,道路有坑洼,导致它的速度或者加速度并不是预想的那样,仅使用预测方程去预测是有误差的,该时刻的预测噪声 w k w_k wk服从 N ( 0 , Q k ) N(0,Q_k) N(0,Qk)(又称为过程噪声),同时,这个预测值还会受到上一时刻的估计值误差协方差的影响
由: x ^ k ′ = F k x ^ k − 1 + B k u → k + w k {\hat{ {x}}_{k}^{\prime}={F}_{k} \hat{ {x}}_{k-1}+{B}_{k} \overrightarrow{ {u}}_{k}} + w_k x^k=Fkx^k1+Bku k+wk
算得预测状态的误差协方差:(交叉项为0,因为互相独立)
P ^ k ′ = E [ e ^ k ′ T e ^ k ′ ] = E [ ( x k − x ^ k ′ ) ( x k − x ^ k ′ ) T ] = E [ ( F k x ^ k ′ ) ( F k x ^ k ′ ) T ] + Q k = F k P k − 1 F k + Q k \hat{P}_k^{\prime} = E[{ {\hat{e}_k}^{\prime}}^T\hat{e}_k^{\prime}]\\ = E[(x_k - \hat{x}_k^{\prime})(x_k - \hat{x}_k^{\prime})^T] \\= E[(F_k\hat{x}_k^{\prime})(F_k\hat{x}_k^{\prime})^T] + Q_k \\ = F_kP_{k-1}F_k + Q_k P^k=E[e^kTe^k]=E[(xkx^k)(xkx^k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值