计算机视觉-kalmanFilter
1.卡尔曼滤波入门
卡尔曼滤波的引入:
滤波就是将测量得到的波形中的的噪声过滤掉,使得到的数据更趋于真实情况,也更加平滑,方便使用。
卡尔曼滤波适用的系统:
卡尔曼滤波适用线性高斯系统
1.线性系统:满足叠加性和齐次性
叠加性:
齐次性:
2.高斯系统
高斯:噪声满足正态分布
2.卡尔曼滤波
2.1.卡尔曼公式理解
实现过程:使用上一时刻的最优结果预测这一时刻的预测值,同时使用这一时刻观测值(传感器测得的数据)修正这一时刻预测值,得到这一时刻的最优结果
预测:
1.上一时刻的最优估计值,推出这一时刻的预测值:
$x^-t = Fx{t-1} + BU_{t-1}$
2.上一时刻最优估计值方差/协方差和超参数Q推出这一时刻预测值方差/协方差
$P^-t = FP{t-1}F^T + Q$
深入理解,Q其实对应的是过程噪声的方差
更新:
1.这一时刻预测值方差/协方差和超参数R推出卡尔曼增益
$K_t = P^-_tH^T{(HP^-_tH^T+R)}^{-1}$
$K_t$为卡尔曼增益
因为$P_t$是和Q有关的,所以将$P_t^-$的公式带入可以推出卡尔曼增益$K_t$是和Q和R都有关的
深入理解,R其实对应的是观测噪声的方差
2.这一时刻预测值、这一时刻观测值、卡尔曼增益推出这一时刻最优估计值
$x_t = x^-_t + K_t(Z_t - Hx_t^-)$
$Z_t$为这一时刻观测值
3.这一时刻预测值方差/协方差、卡尔曼增益推出这一时刻最优估计值方差/协方差
$P_t = (1-K_tH)P^-_t$
预测更新循环往复,就能得到每一时刻的最优估计值
2.2 举例:
小车有两个状态值,p代表位置,v代表速度。小车处于匀加速直线运动
预测模型:
1.上一时刻的最优估计值,推出这一时刻的预测值:
2.上一时刻最优估计值方差/协方差和超参数Q推出这一时刻预测值方差/协方差
推导:因为
所以
其实第一步中这一时刻预测值后面应该还有一个过程噪声Wt要加上(前面省略了),如下图所示,这里面Q是前面省略的过程噪声Wt的方差
测量模型:
GPS测量只能测量小车的位置,不能测量小车的速度,所以
Zp是小车此时的真实位置
Zv是小车此时的真实速度
Pt是测量得到的小车此时的位置
$\Delta$Pt是GPS测量位置的误差
更新模型:
1.这一时刻预测值方差/协方差和超参数R推出卡尔曼增益$K_t$
前面测量模型中,因为无法测速度,测量相当于是一维的,一维时H看作为1
2.这一时刻预测值、这一时刻观测值、卡尔曼增益推出这一时刻最优估计值
3.这一时刻预测值方差/协方差、卡尔曼增益推出这一时刻最优估计值方差/协方差
预测更新循环往复,就能得到每一时刻的最优估计值
2.3调节超参数
Q和R的取值
当F=1且一维的情况H=1,可以得出:
当我们更信任观测值时,那么应该让卡尔曼增益K增大;从K的公式中可以看出,R越小K越大,Q越大K越大
当我们更信任模型估计值时,那么应该让卡尔曼增益K减小;从K的公式中可以看出,R越大K越小,Q越小K越小
结论:
当我们更信任模型估计值时(模型估计基本没有误差),那么应该让K小一点,我们应该将R取大一点,Q取小点
当我们更信任观测值时(模型估计误差较大),那么应该让K大一点,我们应该将R取小一点,Q取大一点
3.卡尔曼滤波的代码解读
1 |
|
Reference:
觉得不错的话,支持一根棒棒糖吧 ୧(๑•̀⌄•́๑)૭
wechat pay
alipay