【滤波跟踪】基于matlab扩展卡尔曼滤波的无人机路径跟踪【含Matlab源码 2236期】

news2024/12/26 9:29:04

⛄一、EKF算法简介

扩展卡尔曼滤波是利用泰勒级数展开方法将非线性滤波问题转化成近似的线性滤波问题,利用线性滤波的理论求解非线性滤波问题的次优滤波算法。其系统的状态方程和量测方程分别如式(1)、式(2)所示:
在这里插入图片描述
式中,X(k)为n维的随机状态向量序列,Z(k)为n维的随机量测向量序列,f(k,x(k))为空气阻力,v(k)、w(k)为零均值的正态(高斯)白噪声序列,其方差分别满足:
在这里插入图片描述
协方差的一步预测为:
在这里插入图片描述
量测预测值为:
在这里插入图片描述
相应的协方差为:
在这里插入图片描述
增益为:
在这里插入图片描述
状态更新方程为:
在这里插入图片描述
协方差更新方程为:
在这里插入图片描述
式中,I为与协方差同维的单位矩阵。

二阶扩展卡尔曼滤波的泰勒展开保留到二阶项,其状态的一步预测为:
在这里插入图片描述
协方差的一步预测为:
在这里插入图片描述
量测预测值为:
在这里插入图片描述

协方差更新方程为:
在这里插入图片描述
式中,I为与协方差同维的单位矩阵。

⛄二、部分源代码

clc;clear
N=501;
T=0.1;
alpha=1/60;
% X=[0 0 0 47.8109 18.1173 47.8109 0 0 0]‘;%%%X初值
X=[10 10 10 47.8109 18.1173 47.8109 1 1 1]’;%状态向量初值
P=diag([1000;1000;1000;10;10;10;10;10;10]).^2;%%%%P初值
n=size(X,1);
% % % %
target=load(‘target.txt’);
% % % % % %
UAV1=load(‘UAV1.txt’);
UAV2=load(‘UAV2.txt’);
Xs1=UAV1(:,2);
Ys1=UAV1(:,3);
Zs1=UAV1(:,4);
Xs2=UAV2(:,2);
Ys2=UAV2(:,3);
Zs2=UAV2(:,4);
% % % % % % 量测信息
measurement=load(‘measurement.txt’);
gama1=measurement(:,2);
eta1=measurement(:,3);
gama2=measurement(:,4);
eta2=measurement(:,5);
% % % % %
v=0.3pi/180randn;
R=v^2eye(4);
% Q=diag([10;10;10;5;5;5;1;1;1]).^2;
O=zeros(3,3);
o=zeros(1,6);
I=eye(3);
E=eye(n);
% % % % % % %
%过程噪声矩阵
Q=diag([10;5;1]);
%%%
F=[I T
I (1/alpha)^2*(-1+alphaT+exp(-alphaT))I;
O I (1/alpha)
(1-exp(-alphaT))I;
O O exp(-alpha
T)I];
U=[(T2/2-(alpha*T-1+exp(-alpha*T))/alpha2)I;
(T-(1-exp(-alpha
T))/alpha)I;
(1-exp(-alpha
T))I];
G=[1/alpha2*((1-exp(-alpha*T))/alpha+alpha*T2/2-T)I;
(T-(1-exp(-alpha
T))/alpha)/alpha
I;
(1-exp(-alpha
T))/alpha
I];
% % % % 系统噪声 以下噪声导致不能收敛
% q11=1/(2alpha5)*(1-exp(-2*alpha*T)+2*alpha*T+2*alpha3T3/3-2*alpha2T^2-4alphaTexp(-alphaT));
% q12=1/(2
alpha4)*(1+exp(-2*alpha*T)-2*exp(-alpha*T)+2*alpha*T*exp(-alpha*T)-2*alpha*T+alpha2T^2);
% q13=1/(2
alpha^3)(1-2exp(-alphaT)+2alphaTexp(-alphaT));
% q22=1/(2
alpha^3)(4exp(-alphaT)-3-exp(-2alphaT)+2alphaT);
% q23=1/(2
alpha^2)(exp(-2alphaT)+1-2alphaT);
% q33=1/(2
alpha)(1-exp(-alphaT));
% Q=2alpha100^2*[q11 q12 q13;q12 q22 q23;q13 q23 q33];
% % % %
for k=1:N
%X=FX+UX(7:9)+Gw;
Z=[gama1(k) eta1(k) gama2(k) eta2(k)]';
H=cal_H(X(1),X(2),X(3),Xs1(k),Xs2(k),Ys1(k),Ys2(k),Zs1(k),Zs2(k));
X=F
X+UX(7:9);
P=F
PF’+GQG’;
K=P
H’/(HPH’+R);
Zpre=cal_Z(X(1),X(2),X(3),Xs1(k),Xs2(k),Ys1(k),Ys2(k),Zs1(k),Zs2(k));
X=X+K*(Z-Zpre);
P=(eye(9)-K*H)*P;
Xekf(k,:)=X;
end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]宁倩慧,张艳兵,刘莉,陆真,郭冰陶.扩展卡尔曼滤波的目标跟踪优化算法[J].探测与控制学报. 2016,38(01)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab 对连续时间信号的运算

Matlab 对连续时间信号的运算 1、连续时间系统零状态响应 题目&函数说明 连续时间系统的微分方程为 y"(t) 4y’(t) 3y(t) f’(t) 2f(t) 当 输入信号 f(t) 20e-2tu(t) 时,初始值 y(0-) 2, y’(0-) 1, 求系统的零状态响应 Matlab 库函数中的 lsim(…

GNN Tensorflow packages

tf framework定义 tf.name_scope()函数 tf.name_scope(name),用于定义python op的上下文管理器。 此上下文管理器将推送名称范围,这将使其中添加的所有操作的名称带有前缀。 例如,定义一个新的Python op my_op: def my_op(a,…

scratch踢足球 电子学会图形化编程scratch等级考试一级真题和答案解析2022年9月

目录 scratch踢足球 一、题目要求 1、准备工作 2、功能实现 二、案例分析

代码随想录算法训练营第三十九天| LeetCode62. 不同路径、LeetCode63. 不同路径 II

一、LeetCode62. 不同路径 1:题目描述(62. 不同路径) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下…

python 视角下的 6 大程序设计原则

众所周知,python 是面向对象的语言。 但大多数人学习 python 只是为了写出“能够实现某些任务的自动化脚本”,因此,python 更令人熟知的是它脚本语言的身份。 那么,更近一步,如果使用 python 实现并维护一个大的项目…

基于SpringBoot的CSGO赛事管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目…

为研发效能而生|一场与 Serverless 的博弈

2022 年 11 月 3 日,第三届云原生编程挑战赛即将迎来终极答辩,18 支战队、32 位云原生开发者入围决赛,精彩即将开启。 云原生编程挑战赛项目组特别策划了《登顶之路》系列选手访谈,期待通过参赛选手的故事,看到更加生…

第1章 计算机系统概述

1.1 操作系统的基本概念 1.1.1 操作系统的概念 操作系统是计算机系统中最基本的系统软件。 操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进…

锐捷端口安全实验配置

端口安全分为IPMAC绑定、仅IP绑定、仅MAC绑定 配置端口安全是注意事项 如果设置了IPMAC绑定或者仅IP绑定,该交换机还会动态学习下联用户的MAC地址 如果要让IPMAC绑定或者仅IP绑定的用户生效,需要先让端口安全学习到用户的MAC地址,负责绑定不生…

如何参与一个开源项目!

今天教大家如何给开源项目提交pr,成为一名开源贡献者。pr是 Pull Request 的缩写,当你在github上发现一个不错的开源项目,你可以将其fork到自己的仓库,然后再改动一写代码,再提交上去,如果项目管理员觉得你…

【建议收藏】回收站数据恢复如何操作?3个方案帮你恢复删除的文件

在使用电脑时,我们经常会清理不需要的文件数据。电脑回收站被清空了,但是里面有我们重要的数据,回收站数据恢复如何操作?不如试试下面的3个方案,一起来了解一下回收站数据恢复吧! 一、注册表恢复回收站数据…

电脑视频转换成mp4格式,视频格式转换器转换

怎么把电脑视频转换成mp4格式?使用视频转换器,可以转换来自各种设备的音视频格式,包括相机、手机、视频播放器、电视、平板电脑等。因此,音视频爱好者都可以使用它在各种设备上播放或在社交平台上分享。 主要人群及作用&#xff1…

BHQ-2 NHS,916753-62-3作为各种荧光共振能量转移DNA检测探针中淬灭部分

英文名称:BHQ-2 NHS CAS:916753-62-3 外观:深紫色粉末 分子式:C29H29N7O8 分子量:603.59 储存条件:-20C,在黑暗中 结构式: 凯新生物产品简介: 黑洞猝灭剂-2&#…

pytorch初学笔记(九):神经网络基本结构之卷积层

目录 一、torch.nn.CONV2D 1.1 参数介绍 1.2 stride 和 padding 的可视化 1.3 输入、输出通道数 1.3.1 多通道输入 1.3.2 多通道输出 二、卷积操作练习 2.1 数据集准备 2.2 自定义神经网络 2.3 卷积操作控制台输出结果 2.4 tensorboard可视化 三、完整代码 一、torc…

NestJS 使用体验 | 不如 Spring Boot

本博客站点已全量迁移至 DevDengChao 的博客 https://blog.dengchao.fun , 后续的新内容将优先在自建博客站进行发布, 欢迎大家访问. 文章目录前言正文开发体验运行体验总结相关内容推广前言 公司里近期在尝试部署一些业务到阿里云的函数计算上, 受之前迁移已有的 Spring Boot…

TestStand-调试VI

文章目录调试VI调试VI 在LabVIEW PASS/FAIL TEST步骤中放置一个断点。 ExecuteRun MainSequence。执行在LabVIEW PASS/FAIL处暂停测试步骤。 3.完成以下步骤来调试LabVIEW PASS/FAIL TEST VI步骤。 a.在TestStand的调试工具栏上单击step into(步进)…

System V IPC+消息队列

多进程与多线程 使用有名管道实现双向通信时,由于读管道是阻塞读的,为了不让“读操作”阻塞“写操作”,使用了父子进程来多线操作, 1)父进程这条线:读管道1 2)子进程这条线:写管道2…

【二叉树的顺序结构:堆 堆排序 TopK]

努力提升自己,永远比仰望别人更有意义 目录 1 二叉树的顺序结构 2 堆的概念及结构 3 堆的实现 3.1 堆向下调整算法 3.2 堆向上调整算法 3.3堆的插入 3.4 堆的删除 3.5 堆的代码实现 4 堆的应用 4.1 堆排序 4.2 TOP-K问题 总结: 1 二叉树的顺序结…

分享几招教会你怎么给图片加边框

大家平时分享图片的时候,会不会喜欢给照片加点装饰呢?比如加些边框、文字或者水印之类的。我就喜欢给图片加上一些边框,感觉加了边框的照片像裱在相框中的感觉似的,非常有趣。那么你知道如何给图片加边框吗?不知道的话…

【Nginx】01-什么是Nginx?Nginx技术的功能及其特性介绍

目录1. 介绍1.1 常见服务器的对比1)IIS2)Tomcat3)Apache4)Lighttpd1.2 Nginx的优点(1) 速度更快、并发更高(2) 配置简单、扩展性强(3) 高可靠性(4) 热部署(5) 成本低、BSD许可证2. Nginx常用功能2.1 基本HTTP服务2.2 高级HTTP服务…