目标跟踪(二):拓展卡尔曼滤波(EKF)

我们在上一篇文章已经讲述了线性卡尔曼滤波(KF),也进行了详细的理论推导。但是,由于我们生活中存在很多非线性环节,这就使得线性卡尔曼滤波无法使用,在这一篇文章,我们将针对非线性环节,讨论介绍拓展卡尔曼滤波(EKF)。当然了,理解这篇文章的前提,是看懂上一篇文章。若上篇文章已懂,那么这篇文章就很简单。


写在最前面

在这里,不知道有没有一些朋友有以下问题?

为什么变为非线性环节,线性卡尔曼滤波就不能用呢?
当变为非线性环节的时候,叠加定理和齐次定理便不在满足。我们滤波的目的是为了去除噪声,假如我们假设噪声是服从高斯分布的,当通过非线性环节的时候,这个噪声的分布肯定已经不在是高斯分布了,所以我们不能在使用线性卡尔曼滤波进行之前的递推。

因此我们引入了非线性滤波


扩展卡尔曼滤波的原理(EKF)




以上便是拓展卡尔曼滤波的核心内容。


写在最后

在这里,小编想说,其实拓展卡尔曼滤波就是将非线性环节进行线性化,使用泰勒展开,只用一阶,省略到高阶项。我们这样做的话又引入了线性化误差,因为我们人为的省略掉了高阶项。下一遍文章我们将介绍另一种线性化的方法,即无迹变换以及无迹卡尔曼滤波(UKF)。


Matlab仿真分析

仿真参数


在这里,我们仅仅将观测环节设为非线性环节,观测量为目标相对于观测站的角度。




根据仿真结果,我们可以看到,当观测环节由线性环节变为非线性环节,跟踪的误差明显增大。


Matalb代码如下

% 拓展卡尔曼滤波在目标跟踪过程中的应用,非线性环节为观测环节,观测的目标的方位
% 观测方程:Z(k) = atan((y(k)-Xstation(2))/(x(k)-Xstation(1))) + v(k)
clear;close all;
T = 1;
N = 60;
F = [1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1]; %二维CV模型
X0 = [100 2 200 20]';Qk = diag([0.1 0.01 0.1 0.01]);Rk = 0.1;
P0 = diag([0.1 0.01 0.1 0.01]);
Xstation = [0;0];
Xk = Track(X0,Qk,F,N/T);Zk = Measurements(Xk,Rk,Xstation); % 观测方程为非线性表达,所以直接在函数里面进行计算
[Xekf] = EKF(X0,F,Zk,Qk,Rk,P0,Xstation);figure()
plot(Xk(1,:),Xk(3,:),'LineWidth',1);hold on;
plot(Xekf(1,:),Xekf(3,:),'LineWidth',1);grid on;
legend('真实轨迹','EKF估计航迹')
delta = sqrt((Xk(1,:)-Xekf(1,:)).^2+(Xk(3,:)-Xekf(3,:)).^2);
figure()
plot(delta);grid on
xlabel('时间/s');ylabel('距离均方误差');
legend('拓展Kalman滤波均方误差')%--------------------------------------------------------------------------
%% 子函数部分
function Xk = Track(X0,Qk,F,N)
% 目标的真实航迹
%%输入参数
% X0 - 状态初值
% Qk - 过程噪声协方差
% Fx - 转移矩阵
% N - 仿真总结拍
%%输出参数
% Xk - 真实航迹n_x = length(X0); % 状态向量维度
Xk = zeros(n_x,N);Xk(:,1) = X0;
for ii = 2:NXk(:,ii) = F*Xk(:,ii-1) + Qk*randn(n_x,1);end
end
%--------------------------------------------------------------------------
function Zk = Measurements(Xk,Rk,Xstation)
% 传感器量测
%输入参数
% Xk - 真实航迹
% Rk - 量测噪声协方差
% Xstation - 观测站的坐标
%输出参数
% Zk - 传感器量测值N = length(Xk(1,:)); % 仿真总节拍
Zk = zeros(1,N);
for ii = 1:NZk(ii) = atan((Xk(3,ii)-Xstation(2))/(Xk(1,ii)-Xstation(1)))+Rk*randn(1);
end
end
%--------------------------------------------------------------------------
function [Xekf] = EKF(X0,F,Zk,Qk,Rk,P0,Xstation)
% 拓展卡尔曼滤波
%输入参数
% X0 - 滤波初值
% F - 转移矩阵
% Zk - 传感器量测
% Qk - 过程噪声协方差
% Rk - 量测噪声协方差
% Xstation - 观测站坐标
%输出参数
% Xekf - 状态估计n_x = length(X0); % 状态向量维数
N = length(Zk); % 仿真总节拍
Xekf = zeros(n_x,N);Xekf(:,1) = X0;
Pk_Last = P0; % 协方差初始化
for ii = 2:NXekf_hat = F*Xekf(:,ii-1); % 先验估计Pk = F*Pk_Last*F' + Qk; % 先验协方差矩阵H = [-(Xekf_hat(3)-Xstation(2))/((Xekf_hat(1)-Xstation(1))^2+(Xekf_hat(3)-Xstation(2))^2),0,...(Xekf_hat(1)-Xstation(1))/((Xekf_hat(1)-Xstation(1))^2+(Xekf_hat(3)-Xstation(2))^2),0];%即为所求一阶近似Kk = Pk*H'/(H*Pk*H'+Rk); % 卡尔曼增益Zzk = atan((Xekf_hat(3)-Xstation(2))/(Xekf_hat(1)-Xstation(1)));Xekf(:,ii) = Xekf_hat + Kk*(Zk(ii)-Zzk); % 后验估计Pk_Last = (eye(n_x)-Kk*H)*Pk; % 更新误差协方差
end
end

目标跟踪(二):拓展卡尔曼滤波(EKF)相关推荐

  1. 卫星轨道的估计问题(Matlab)(二):扩展卡尔曼滤波(EKF)对新问题的尝试

    前言 在前面的问题中我们已经考虑到了用微分方程来描述卫星运动轨迹的方法: r¨=rθ˙2−GMr−2θ¨=−2r−1r˙θ˙\ddot r = r\dot \theta^2-GMr^{-2}\\\dd ...

  2. 目标跟踪中的卡尔曼滤波和匈牙利算法解读。

    先解读Sort算法:Simple online and realtime tracking 论文地址 https://arxiv.org/abs/1602.00763 代码地址 https://git ...

  3. 无迹卡尔曼滤波UKF—目标跟踪中的应用(仿真部分)

    无迹卡尔曼滤波UKF-目标跟踪中的应用(仿真部分) 原创不易,路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合/导航等探讨联系WX: ZB823618313 算法部分见博客: [无迹卡尔曼 ...

  4. 机动目标跟踪——匀加速运动CA模型(二维)

    机动目标跟踪--匀加速运动CA模型(二维) 原创不易,路过的各位大佬请点个赞 WX: ZB823618313 机动目标跟踪--目标模型概述 机动目标跟踪--匀加速运动CA模型(二维) 1. 对机动目标 ...

  5. 无迹卡尔曼滤波UKF—目标跟踪中的应用(算法部分)

    无迹卡尔曼滤波UKF-目标跟踪中的应用(算法部分) 原创不易,路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合/导航等探讨代码联系WX: ZB823618313 仿真部分见博客: [无迹卡 ...

  6. 容积卡尔曼滤波CKF—目标跟踪中的应用(算法部分—I)

    容积卡尔曼滤波CKF-目标跟踪中的应用(算法部分) 原创不易,路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合/导航等探讨代码联系WX: ZB823618313 作者:823618313@ ...

  7. 容积卡尔曼滤波CKF—目标跟踪中的应用(仿真部分—II)

    容积卡尔曼滤波CKF-目标跟踪中的应用(算法部分-II) 原创不易,路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合/导航等探讨联系WX: ZB823618313 作者:823618313 ...

  8. 机动目标跟踪—匀速转弯CT模型/匀速圆周运动

    机动目标跟踪-匀速转弯CT模型/匀速圆周运动 原创不易,路过的各位大佬请点个赞 针对机动目标跟踪的探讨.技术支持欢迎联系,也可以站内私信 WX: ZB823618313 机动目标跟踪-匀速转弯CT模型 ...

  9. 机动目标跟踪——三维匀速运动模型CV

    机动目标跟踪--三维匀速运动模型CV 原创不易,路过的各位大佬请点个赞 WX: ZB823618313 机动目标跟踪--目标模型概述 机动目标跟踪--三维匀速运动模型CV 1. 对机动目标跟踪的理解 ...

  10. 机动目标跟踪——Jerk模型

    机动目标跟踪--Jerk模型 原创不易,路过的各位大佬请点个赞 针对机动目标跟踪的探讨.技术支持欢迎联系,也可以站内私信 WX: ZB823618313 机动目标跟踪--Jerk模型 机动目标跟踪-- ...

最新文章

  1. easy C语言,C语言easy..doc
  2. 多波次导弹发射中的规划问题(二) 问题一解答
  3. LCD 进入休眠的操作解决方式
  4. AtCoder AGC001F Wide Swap (线段树、拓扑排序)
  5. jeecg-easypoi-2.0.3版本发布
  6. 多继承、经典类与新式类、新式类的C3算法详解
  7. GitHub Desktop理解与入门
  8. 基础学习笔记之opencv(2):haartraining前将统一图片尺寸方法
  9. nyoj 643intersection set
  10. 关于DIPS的MVC 4.0项目发布与在IIS 7.0上的部署的方法
  11. 解决Ureport2报表工具设置条件属性报错Bug
  12. FSG压缩壳和ImportREC的使用 - 脱壳篇05
  13. 小米手机计算机连接设置方法,小米手机怎么连接电脑并上网?小米手机USB共享上网方法详细图解...
  14. 使用 JW Player 播放RTMP 流
  15. 2021年电工(初级)考试资料及电工(初级)考试总结
  16. 软件设计师-备考知识点总结
  17. 26进制(A到Z表示1到26,例27:AA,2019:BYQ)
  18. asp核酸检测预登记系统源码
  19. 软工实践 - 第七次作业
  20. 300兆的网速测试软件,光纤是300兆的网速,用电脑测试只有100兆,光猫坏了?

热门文章

  1. 数据库迁移工具flyway
  2. 云呐|国有资产管理信息系统,资产管理信息系统功能描述
  3. 矩阵分解(LU分解)C语言实现
  4. PyRadiomics工具包使用说明
  5. 【整数规划算法】分支定界法及其Python代码实现
  6. 小米蓝牙耳机使用说明书
  7. 最新服务器处理器天梯,服务器cpu天梯图2020
  8. 汉印CP4000照片打印机体验
  9. 使用Python识别/提取PDF中的字符、文字
  10. 现代制造技术——金属切削原理