卡尔曼滤波研究N02.线性卡尔曼滤波

        在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况。

一、卡尔曼的五个基本公式

卡尔曼滤波研究N02.线性卡尔曼滤波_第1张图片

二、理解要点

1.所谓卡尔曼滤波就是当你在测量一个值时,同时拥有模型估计和直接测量两种方式,但是两种方式都不太准确,于是就可以用卡尔曼增益系数来分配两种方式的可信度权重,以得出新的估计值,并以新估计值为基础,更新卡尔曼增益系数重新分配权重,逐步逼近真实值。卡尔曼增益系数却决于两种方式的方差,哪个更靠谱就更相信哪个

2.在连续变化的系统中使用卡尔曼滤波是非常理想的,它具有占用内存小的优点(除了前一个状态量外,不需要保留其它历史数据),并且速度很快,很适合应用于实时问题和嵌入式系统。

3.误差是独立存在的. 误差不受数据的影响. 误差按照统计学的协方差公式更新, 跟数据无关.

4.kalman重要假设

卡尔曼滤波研究N02.线性卡尔曼滤波_第2张图片

5.协方差意义:度量各个维度偏离其均值的程度。协方差的值如果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),结果为负值就说明负相关的,如果为0,也是就是统计上说的“相互独立”。

三、分析

Z=(1:100); %观测值
noise=randn(1,100); %方差为1的高斯噪声
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;
for i=1:100
    X_ = F*X;%先验估计,无控制量不加BU(K)
    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_;%更新误差协方差
    plot(X(1), X(2),'o'); %画点,横轴表示位置,纵轴表示速度
end

无噪声滤波;

卡尔曼滤波研究N02.线性卡尔曼滤波_第3张图片

有噪声滤波:

卡尔曼滤波研究N02.线性卡尔曼滤波_第4张图片

详细分析:https://download.csdn.net/download/qq_31441951/11307908

 

参考:

卡尔曼滤波算法详细推导:https://blog.csdn.net/victor_zy/article/details/82862904

详解卡尔曼滤波原理:https://blog.csdn.net/u010720661/article/details/63253509

协方差的意义:https://blog.csdn.net/GoodShot/article/details/79940438

你可能感兴趣的:(机器人研究学习)