基于扩展卡尔曼滤波的目标跟踪仿真

简介: 基于扩展卡尔曼滤波的目标跟踪仿真

1.算法仿真效果
matlab2022a仿真结果如下:

c0380c8dd225a83567c062f6439ccc95_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

   在WSN中,人们通过飞机撒播或手动分布等方式,把许多传感器节点随意撒播在监控区域(sensor field)中或者周边,这些传感器节点自组织组建了网络。传感器节点把感知信息通过除它之外的传感器节点进行传递,在逐跳传递时,其它很多节点也许会处理这些感知信息(比如数据融合等),感知数据凭借多跳路由的方式抵达汇聚节点。它们最终借助卫星或Internet到管理节点。监测人员通过任务管理节点配置与管理WSN,发布监测任务及获取监测数据。

   一般情况下,传感器节点是一类很小的嵌入式系统。因为电池给传感器节点提供电量,所以传感器节点的计算、储蓄与通讯能力都不太强。节点的通讯长度较短,通常只与周边节点交换数据,它借助多跳路由来传递这些内容。故从网络用途的角度来考虑,所有传感器节点都具备普通网络节点的2个功能:终端与路由。所有传感器节点不只需要获取与处理信息,还需保存、管理与融合其它节点传输来的信息。它们共同合作来实现一系列功能。

   与普通节点相比,汇聚节点具有相对强的计算、储蓄与通讯能力。它实现了WSN与外部网络的互连,能够使2个协议栈间的通讯协议相互转变,并且广播管理节点的感知内容,最后监测到的信息被传递给互联网。汇聚节点不仅能是无通讯功能的网关仪器,而且同样能是含多用途的传感器节点。

   Kalman滤波能够在线性高斯模型的条件下,可以对目标的状态做出最优的估计,得到较好的跟踪效果。对非线性滤波问题常用的处理方法是利用线性化技巧将其转化为一个近似的线性滤波问题。因此,可以利用非线性函数的局部性特性,将非线性模型局部化,再利用Kalman滤波算法完成滤波跟踪。扩展Kalman滤波就是基于这样的思想,将系统的非线性函数做一阶Taylor展开,得到线性化的系统方程从而完成对目标的滤波估计等处理。非线性系统离散动态方程可以表示为

1230747cc10b4e8065a5d131b0ea9537_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   这里为了便于数学处理,假定没有控制量的输入,并假定过程噪声是均值为零的高斯白噪声,且噪声分布矩阵   是已知的。其中,观测噪声 也是加性均值为零的高斯白噪声。假定过程噪声和观测噪声序列是彼此独立的,并且有初始状态估计 和协方差矩阵 。和线性系统的情况一样,我们可以得到扩展Kalman滤波算法如下:

8e2226bd5609eea9ae710623cb14b3ae_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
5657ab3f88ad36efd5c8cac54214213f_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    所谓的非线性方程,就是因变量和自变量的关系不是线性的,这类方程很多,例如平方关系,对数关系,指数关系,三角函数关系等等。这类方程可分为两类,一类是多项式方程,一种是非多项式方程。为了便于说明非线性卡尔曼滤波——扩展Kalman滤波的原理,我们选用一下系统.

1d111b0ce8bdd64aff307f2acc9f7359_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

for t=2:T
    % 获得两个目标的观测值      注: 观测向量 z1 和 z2 所使用的下标的数字不对应于我们下面所标示的目标
    z1(:,t)=[sqrt(True_State1(1,t)^2+True_State1(4,t)^2);atan(True_State1(4,t)/True_State1(1,t))]...
        +MNoise_Matrix*randn(2,1);
    z2(:,t)=[sqrt(True_State2(1,t)^2+True_State2(4,t)^2);atan(True_State2(4,t)/True_State2(1,t))]...
        +MNoise_Matrix*randn(2,1);
    % 分别获得两个目标的状态预测
    EKF_Pre1=F*EKalman_State1(:,t-1);
    EKF_Pre2=F*EKalman_State2(:,t-1);
    % Prediction Self-connection Matrix
    P_Pre1=F*P1*F'+SNoise_Matrix1*Q11*SNoise_Matrix1';
    P_Pre2=F*P2*F'+SNoise_Matrix2*Q12*SNoise_Matrix2';
     % Obtain Jacobian Matrix of Measurement 1
    H1=[EKF_Pre1(1)/sqrt(EKF_Pre1(1)^2+EKF_Pre1(4)^2) 0 0 EKF_Pre1(4)/sqrt(EKF_Pre1(1)^2+EKF_Pre1(4)^2) 0 0;
        -1*EKF_Pre1(4)/(EKF_Pre1(1)^2+EKF_Pre1(4)^2)  0 0   EKF_Pre1(1)/(EKF_Pre1(1)^2+EKF_Pre1(4)^2)   0 0];
    
    H2=[EKF_Pre2(1)/sqrt(EKF_Pre2(1)^2+EKF_Pre2(4)^2) 0 0 EKF_Pre2(4)/sqrt(EKF_Pre2(1)^2+EKF_Pre2(4)^2) 0 0;
        -1*EKF_Pre2(4)/(EKF_Pre2(1)^2+EKF_Pre2(4)^2)  0 0   EKF_Pre2(1)/(EKF_Pre2(1)^2+EKF_Pre2(4)^2)   0 0];
    % Obtain Prediction of Measurement
    z_Pre1=[sqrt(EKF_Pre1(1)^2+EKF_Pre1(4)^2);atan(EKF_Pre1(4)/EKF_Pre1(1))];
    z_Pre2=[sqrt(EKF_Pre2(1)^2+EKF_Pre2(4)^2);atan(EKF_Pre2(4)/EKF_Pre2(1))];
    % Obtain Extend Kalman Gain
    K1=P_Pre1*H1'*inv(H1*P_Pre1*H1'+MNoise_Matrix*Q21*MNoise_Matrix);
    K2=P_Pre2*H2'*inv(H2*P_Pre2*H2'+MNoise_Matrix*Q21*MNoise_Matrix);
    % 做两个观测数据相关处理
    piancha(:,1,1)=z1(:,t)-z_Pre1;    piancha(:,1,2)=z1(:,t)-z_Pre2;
    piancha(:,2,1)=z2(:,t)-z_Pre1;    piancha(:,2,2)=z2(:,t)-z_Pre2;
    M_S=MNoise_Matrix*MNoise_Matrix;    % 观测过程协方差矩阵
    % 选择落入每个波门里面的数据个数
    % 目标状态估计
    EKalman_State1(:,t)=EKF_Pre1+K1*(piancha(:,1,1));
    EKalman_State2(:,t)=EKF_Pre2+K2*(piancha(:,2,2));
    % 估计两个目标的各自协方差
    P1=(eye(6)-K1*H1)*P_Pre1;
    P2=(eye(6)-K2*H2)*P_Pre2;
end
相关文章
|
存储 人工智能 算法
【AI系统】计算与调度
本文探讨了计算与调度的概念,特别是在神经网络和图像处理中的应用。通过分离算法定义和计算组织,Halide 等工具能够显著提升图像处理程序的性能,同时保持代码的简洁性和可维护性。文章详细介绍了计算与调度的基本概念、调度树的构建与约束,以及如何通过调度变换优化计算性能。此外,还讨论了自动调优方法在大规模调度空间中的应用,展示了如何通过探索和预测找到最优的调度方案。
252 0
AutoJS4.1.0实战教程---快刷短视频
AutoJS4.1.0实战教程---快刷短视频
331 1
|
9月前
|
存储 自然语言处理 算法
蓝桥杯16天刷题计划一一Day01(STL练习)
本文介绍了蓝桥杯16天刷题计划的第一天内容,主要练习STL相关算法。涵盖队列、优先队列、单调队列、单调栈和链表等数据结构的应用。通过经典题目如机器翻译(队列模拟内存)、约瑟夫问题(链表模拟报数)、滑动窗口(单调队列)、Look Up(单调栈)、合并果子(优先队列)和最小函数值(优先队列结构体排序),详细解析了每种数据结构的实现与优化方法,并附有完整代码示例。适合初学者掌握STL核心用法及算法思想。
254 10
|
运维 监控 安全
SD-WAN异地组网加速:提升企业网络性能的关键
随着企业全球化扩展,异地组网成为重要需求。传统广域网(WAN)存在延迟高、带宽不足等问题,而SD-WAN通过智能流量调度、降低成本、提升安全性和快速部署等优势,成为理想解决方案。本文详细解析SD-WAN在异地组网中的优势、应用场景及最佳实践,帮助企业实现高效跨地域网络连接。
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
本篇将带你实现一个简易日历应用,显示当前月份的日期,并支持选择特定日期的功能。用户可以通过点击日期高亮选中,还可以切换上下月份,体验动态界面的交互效果。
187 12
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
|
12月前
|
监控 搜索推荐 数据挖掘
精准定价与促销:CRM中的价格和折扣管理艺术
在当今竞争激烈的商业环境中,CRM系统是企业维持客户忠诚度和提高销售效率的重要工具。其中,价格和折扣的统一管控尤为关键,直接影响企业的盈利能力和市场竞争力。通过集中管理平台,企业能确保各渠道价格一致,避免混乱,维护品牌形象。合理的折扣政策可吸引新客户,提升老客户复购率。利用数据分析优化价格策略,监控并调整政策效果,确保利润最大化。CRM系统的这些功能有助于控制成本、提高客户满意度,最终实现销售增长和利润提升。
|
敏捷开发 缓存 弹性计算
阿里云云效产品使用合集之如何通过API接口往附件中上传文件
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
机器学习/深度学习 人工智能 算法
在对齐 AI 时,为什么在线方法总是优于离线方法?
【5月更文挑战第28天】在线AI对齐优于离线方法的原因在于其能更好地捕捉人类反馈的细微差别,通过多样化和相关的数据生成。尽管离线方法效率高、可利用大规模数据,但其数据集可能无法全面反映实际应用场景。研究强调在线采样的关键作用,但也指出离线对齐的效率和泛化优势。[查看论文](https://arxiv.org/abs/2405.08448)以获取详细信息。
290 2
|
数据库 C++
基于Qt的简易图书管理系统设计与实现
基于Qt的简易图书管理系统设计与实现
780 3
|
自然语言处理 JavaScript 前端开发
【Vue.js】使用Element入门搭建登入注册界面&axios中GET请求与POST请求&跨域问题
【Vue.js】使用Element入门搭建登入注册界面&axios中GET请求与POST请求&跨域问题
1771 0