目录
初学者对于卡尔曼滤波5个公式有点懵,本文先接地气地介绍5个公式,然后举两个常用例子加强理解,同时附有Matlab代码。卡尔曼滤波在大学课程《现代控制理论》当中有涉及详细讲解。卡尔曼滤波使用条件有:
在无人驾驶导航定位当中,需要多传感器对汽车位姿进行检测 ;在多传感器融合方面,使用卡尔曼滤波理论较多。对预测公式新的理解:第一个公式求解的是状态变量的期望值。第二个公式求解的是状态变量的方差。
以下内容有手写word,都是原创哈。


完整的matlab代码:
- clear all;
- close all;
- clc;
- Z = (1:100); %观测值
- noise = randn(1,100);%1行100列高斯白噪声
- Z = Z + noise;
-
- X = [0;0];%状态值
- P = [1 0; 0 1];%状态协方差矩阵
- F = [1 1; 0 1];%状态转移矩阵
- Q = [0.0001, 0; 0 0.0001];%状态转移协方差矩阵
- H = [1 0];%观测矩阵
- R = 1;%观测噪声方差
-
- figure;
- %hold on;
- speed = [];
- distance = [];
- for i =1:100
- %% 预测
- X_ = F*X;
- P_ = F*P*F' + Q;
- %% 更新
- K = P_*H'/(H*P_*H' + R);
- X = X_ + K*(Z(i) - H*X_);
- P = (eye(2) - K*H)*P_;
-
- speed(i) = X(2);
- distance(i) = X(1);
- %%plot(X(1), X(2));
- end
- plot(distance, speed);



在线性高斯系统中,卡尔曼滤波器构成了该系统中的最大后验概率估计。而且,由于高斯分布经过线性变换后仍服从高斯分布,所以整个过程中我们没有进行任何的近似。可以说,卡尔曼滤波器构成了线性系统的最优无偏估计。
SLAM 中的运动方程和观测方程通常是非线性函数,尤其是视觉 SLAM 中的相机模型,需要使用相机内参模型以及李代数表示的位姿,更不可能是一个线性系统。一个高斯分布,经过非线性变换后,往往不再是高斯分布,所以在非线性系统中,我们必须取一定的近似,将一个非高斯的分布近似成一个高斯分布。我们希望把卡尔曼滤波器的结果拓展到非线性系统中来,称为扩展卡尔曼滤波器(Ex-tended Kalman Filter,EKF)。通常的做法是,在某个点附近考虑运动方程以及观测方程的一阶泰勒展开,只保留一阶项,即线性的部分,然后按照线性系统进行推导。
EKF的局限性: