VINS笔记1——滤波与优化

1.滤波

1.1.什么是滤波

这里的卡尔曼滤波实际上和信号处理里面的滤波有很大的不同。

信号处理里面的滤波,假设一个正弦信号有很多毛刺,想要对其进行滤波滤除毛刺。信号处理里面的做法是把信号进行FFT变换到频域,然后用一个低通滤波器滤掉高频信号,然后再用IFFT变换到时域,就完成了滤波过程。如下图所示:
VINS笔记1——滤波与优化_第1张图片而状态估计中的滤波,更属于是一种状态的融合,使用卡尔曼滤波。

1.2.卡尔曼滤波的例子

一个例子:现在一个人玩荒野求生需要确定自己的位置,他手上有一个GPS传感器,定位的可信度是±2m,但是这个GPS的信号发送频率比较低。同时这个人每次走一步可以自己估计出自己这一步走了多远,并且估计的可信度是±0.1m。

假设这个人从开始走了四步,每一步估计自己走了多远的可信度是0.1m,注意这是每一步的,那么他走了四步之后估计出的自己的最终位置的置信度肯定是要比0.1m高的,因为误差在这个过程中是会传递的。假设最终对位置的这个估计是 x a x_a xa状态转移),置信度是0.8m(实际计算需要严格的推导,这里只是距离)。此时来了一个GPS信号定位的位置是 x b x_b xb观测),置信度是2m,那么这个时候就需要使用卡尔曼滤波融合这两个结果,比如最后得到的结果是 x c x_c xc,并且融合的结果的置信度一定比之前两个的置信度都要高,假设是0.6m。整个过程如下图所示:
VINS笔记1——滤波与优化_第2张图片

1.3.卡尔曼滤波方程

1.3.1.使用条件

注意普通的卡尔曼滤波的使用条件是系统是线性的,并且状态方程和观测方程的噪声都服从高斯分布。

VINS笔记1——滤波与优化_第3张图片

1.3.2.五大方程

VINS笔记1——滤波与优化_第4张图片

1.4.非线性的EKF

扩展卡尔曼滤波EKF本质上还是KF,他是在工作点附近对状态方程和观测方程都进行了线性化,从而得到线性KF中的A和H。

但是这样存在的一个问题是我们求的偏导都是在预测的 x k x_k xk处的结果,并非最后真正的 x k x_k xk,所以如果预测的结果和真值差的比较远的话,那么线性化不成立,这样EKF的效果自然也就不好了。
VINS笔记1——滤波与优化_第5张图片

2.优化

优化的思想和滤波不同之处在于,滤波只是在上一个状态的基础上考虑当前状态的最佳估计,而不考虑之前的其他状态。但是优化是考虑当前状态和之间的所有状态,以及之前的所有观测,同时优化所有的状态让总的误差最小,也就是寻找在所有观测下的所有状态最大后验估计。

使用贝叶斯公式可以知道,优化的求的最大后验估计其实可以转化为求最大似然估计。原来的最大后验估计问题的描述是找到 x i x_i xi使得 P ( x i ∣ z i ) P(x_i|z_i) P(xizi)最大,而转成最大似然估计后问题的描述变成找到一个 x i x_i xi使得最可能产生当前的观测值 z i z_i zi。比如在高中物理测电阻的实验中,得到一组数据 ( I i , U i ) (I_i, U_i) (Ii,Ui),据此拟合一条直线得到电阻 R R R。实际上这个过程就是一个最大似然估计,就是寻找一个电阻 R R R,使得物理系统的电阻阻值为 R R R时最可能产生得到的这些数据 ( I i , U i ) (I_i, U_i) (Ii,Ui)

PS:在这里我好像还是没有特别理解最大似然和最大后验的区别,如果按照上面的说法,对电阻测量的这个实验来说,最大似然估计很好解释的通,那么最大后验估计使得后验概率最大是什么意思

你可能感兴趣的:(SLAM,自动驾驶,矩阵,算法)