首页 > 其他分享 >kalman fiter

kalman fiter

时间:2024-06-05 18:11:51浏览次数:17  
标签:状态 预测 kalman fiter 矩阵 观测 协方差 高斯分布

卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。

组成以及步骤

1.预测状态方程

目的:由系统状态变量k-1时刻的最优值和系统输入计算出k时刻的系统预测值。

2.预测协方差方程

目的:根据k-1时刻的系统协方差预测k时刻系统协方差

3.卡尔曼增益方程

目的:根据(k时刻)协方差矩阵的预测值计算卡尔曼增益

4.跟新最优值方程(卡尔曼滤波的输出)

目的:根据状态变量的预测值和系统测量值计算出k时刻状态变量的最优值

5.更新协方差方程

目的:为了求k时刻的协方差矩阵。(为得到k+1时刻的卡尔曼输出值做准备)

代码实现

clc;clear

Z=1:100; % 观测值,测量值

noise=randn(1,100); % randn(m,n)返回一个m*n的随机项矩阵; randn(m,n)矩阵默认均值为0、方差为1的高斯噪声

Z=Z+noise; % 测量值含噪声(measurement noise),且为高斯白噪声

X=[0; 0]; % 初始状态

P=[1 0;0 1]; % 状态协方差矩阵

F=[1 1;0 1]; % 状态转移矩阵,理想的数学模型

% 加上外部不确定性后, 当前的每个预测状态都可能会移动到另一点,并且具有协方差Q

Q=[0.0001 0;0 0.0001]; % 状态转移协方差矩阵,预测误差

H=[1 0]; % 观测矩阵,对应C输出矩阵

R=1; % 传感器的观测噪声方差

figure;

hold on;

% 五步法

for i = 1:100

    %1状态预测

    X_ = F * X ; % 预测矩阵,得到机器人下一个状态X_ ;这里忽略了已知的外部影响Bu

    %2预测协方差矩阵

    %Cov(Ax)=A*Cov(x)*A'  ,更新下一个状态协方差矩阵P_

    P_ = F * P * F.' + Q ; % A的转置,rot90(A) 或 A' 或者A.';这里不忽略外部的不确定性Q

    %3增益矩阵

    K = P_ * H.' / ( H * P_ * H.' + R);  % K卡尔曼增益系数

    %4状态最优估计,修正估计值

    X = X_ + K * ( Z(i) - H * X_ ); %卡尔曼滤波,更新下一个最佳估计状态X

    %5估计误差的协方差矩阵

    P = (eye(2)- K * H) * P_ ; %eye(2)为2阶单位阵,更新下一个最佳估计状态X对应的协方差矩阵P

    plot(X(1), X(2), 'r*-'); %横轴位置X(1),纵轴速度X(2)

    plot(i, 1, 'gs');

end

% 卡尔曼滤波实质就是将预测状态量的高斯分布和观测量的高斯分布做融合,生成一个新的高斯分布,

% 其中新的高斯分布的均值和方差是两个独立的高斯分布的相关参量的加权,这个加权就是卡尔曼增益K,

% 但是预测状态量和观测量可能维度不同,需要将他们同时转换到一个向量空间中,所以观测量前面有线性变换矩阵

images/kalman fiter-20240605180136518.webp

标签:状态,预测,kalman,fiter,矩阵,观测,协方差,高斯分布
From: https://www.cnblogs.com/invo/p/18233526

相关文章

  • Kalman滤波器的原理与实现
    Kalman滤波器的原理与实现卡尔曼滤波器(KalmanFilter)是一个十分强大滤波器,虽然叫做滤波器,卡尔曼滤波器其实可以起到到两个作用,即预测与更新,这与我们在其运行时所关注的环节有关。当我们关注预测状态量这一步时,我们可以通过卡尔曼滤波器获取状态量的超前预测值,预测的值取决于......
  • Kalman卡尔曼滤波
    步骤:1、计算\(y=20e^{0.24x}\)计算出\(x\)在0.1~4区间内的y值作为真值:\(Y\);2、在Y的基础上加入一个高斯分布的误差作为观测量,观测量:Y_OBS;3、初始化P、Q、R矩阵,P代表初始状态精度,Q代表预测精度,R观测精度;4、初始化状态值state、结果存储空间Y_reselt,协方差存储空间P_r......
  • Extended Kalman Filter vs. Error State Kalman Filter for Aircraft Attitude Estim
    EKF与ESKF的对比“Engineerscansolveexactproblemsusingnumericalapproximations,ortheycansolveapproximateproblemsexactly"-FredDaum.对出现在实际问题中的非线性的运动学(dynamic)模型以及/或非线性的观测方程进行线性化的操作,然后基于这个线性化的方程计算......
  • 【滤波】Kalman Filter
    from:卡尔曼滤波教程(kalmanfilter.net)总览关于本教程关于作者关于卡尔曼滤波为什么需要预测算法卡尔曼滤波简介必要的背景知识均值和期望方差和标准差正态分布随机变量估计的准度和精度小结α-β-γ滤波器示例1-给金条称重示例2-跟踪直线匀速运......
  • 惯性导航 室内定位代码 Matlab Matlab代码实现 普通质心+Kalman+惯性导航
    惯性导航室内定位代码MatlabMatlab代码实现普通质心+Kalman+惯性导航定位ID:6935636401455989......
  • FAST-LIO:A Fast,Roust LiDAR-inertial Odometry Package by Tightly-Coupled Iterate
    摘要——本文提出一种计算高效、鲁棒的激光雷达惯性里程计框架。我们使用紧耦合的迭代扩展卡尔曼滤波器将激光雷达特征点与IMU数据融合,以允许在发生退化的快速运动、噪声或者杂乱环境中进行稳健导航。为了在出现大量观测情况下降低计算负载,我们提出了一个计算卡尔曼增益的新公式。......
  • m基于FC全卷积网络和kalman的遮挡车辆跟踪算法matlab仿真,用matconvnet-1.0-beta20工
    1.算法描述1.1全卷积神经网络全卷积神经网络(FullyConvolutionalNetworks,FCN)是JonathanLong等人于2015年在FullyConvolutionalNetworksforSemanticSegmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之作。我们知道,对于一个各层参数结......
  • python常用的搜索字符内容函数详解:re.findall/findfiter
    区别findall返回listfinditer返回一个MatchObject类型的iterator详细举例介绍1、findall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返......
  • 交互多模型(IMM)Kalman滤波
         前段时间不慎感染新冠,本来元旦好了,结果跑了个五公里。感觉心脏不行了,出现胸闷,气短,心痛的情况。保险起见又歇了几天,今天感觉还可以。所以把《卡尔曼滤波原理......
  • m基于MATLAB-GUI的GPS数据经纬度高度解析与kalman分析软件设计
    1.算法概述经度纬度和高度来自GPS信号的中的GPGGA的数据。所以提取这三个信息主要是对GPGGA中的数据进行整理。GPGGA的数据格式如下所示:GPGGA是GPS数据输出格式语句,意......