利用Astar算法实现飞行轨迹的三维路径规划(基于Matlab代码实现)

news2024/11/18 23:46:21

目录

 1 概述

    1.1研究背景

 2 运行结果

 3 Matlab代码实现

 4 参考文献


1 概述

随着自动化技术的发展,现代航空技术水平有了前所未有的提高,促进了无人机在军事、民用领域的广泛应用。航迹规划技术作为无人机任务规划的关键技术,一直都是无人机领域的一大研究热点。无人机航迹规划是指在满足其运动约束条件的同时,寻找无人机从起始点到目标点符合某种性能指标的最优或次优的可飞轨迹。在现实应用中,由于无人机飞行环境复杂,约束条件多,航迹规划的质量不仅取决算法的优劣还与解决问题的策略相关,因此如何建立准确的环境模型和如何选取高效的规划算法成为解决航迹规划问题的要素。

1.1研究背景

本文是在Astar算法的基础上,对无人机三维航迹规划问题展开研究,主要研究内容如下:

首先,对无人机航迹规划相关问题进行数学建模,包括无人机模型、机动性能约束和等效数字地图。重点介绍飞行空间三维数学模型的建立,将飞行区域中基准地形、山峰及威胁综合,建立包含飞行区域综合信息的三维数学模型。为后面研究无人机离线、在线航迹规划问题做了铺垫。

其次,研究基于遗传算法的无人机三维离线航迹规划。Astar算法解决航迹规划问题需要进行复杂的编码,故需要改进进化操作算子。本文根据航迹段特点改进变异操作算子,从而生成更适合无人机飞行的航迹。此外针对Astar算法早熟问题改进适应度函数,构造一种随进化代数动态调整的非线性适应度函数,该方法解决了算法早熟问题并且提高了算法收敛速度。

最后,研究基于Astar算法的在线航迹规划。由于在突发威胁情况下需要采取应急的二次重规划,为提高应对突发威胁的应急能力,在线航迹规划阶段应选用实时性较好的规划算法。

2 运行结果

 

3 Matlab代码实现

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% A* Terrain Profile ALGORITHM Demo
% Traditional A* search demo 3D
% 01-31-2014
% Design by ybma
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
load ('MapData.mat');
WayPoints = [];
WayPointsAll = [];
OPEN_COUNT = 0;
OPEN_COUNT_ALL = 0;
%%%%%%Terrain Data Fill%%%%%%%
Cut_Data = Final_Data(301:400,101:200);
MIN_Final_Data = min(min(Cut_Data));
%%%%%%%ALGORITHM START%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%Compute time%%%%%%%%%%%
tic
timerVal = tic
[WayPoints,OPEN_COUNT] = A_star(MAX_X,MAX_Y,MAX_Z,20,20,7,90,70,5,MAP,CLOSED,Display_Data);
toc(timerVal)
elapsedTime = toc(timerVal)
figure(1)
axis([1 MAX_X 1 MAX_Y 1 MAX_Z]);
plot3(WayPoints(:,1),WayPoints(:,2),WayPoints(:,3),'b','linewidth',2);
hold on
surf(Display_Data(1:100,1:100)','linestyle','none');
plot3(20,20,7,'*');
plot3(90,70,5,'^');
set(gca,'xticklabel','');
set(gca,'yticklabel','');
set(gca,'zticklabel',{'2000','4000','6000','4000','5000','6000','7000','8000','9000','10000'});
xlabel('纬度');
ylabel('经度');
zlabel('高度(m)');
grid on

4 参考文献

[1]晁泽睿,南英,王昕,冯开.基于数字地图的三维飞行轨迹规划技术[J].舰船电子工程,2022,42(06):107-111+139.

[2]李喆,王顺森,李勇,吴军,颜晓江,徐耀博.船舶管线智能布置的优化Astar算法[J/OL].西安交通大学学报,2022(12):1-10[2022-10-19].http://kns.cnki.net/kcms/detail/61.1069.t.20220823.1101.002.html

部分理论来源于网络,如有侵权请联系删除。

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

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

相关文章

Synopsys Sentaurus TCAD系列教程之-- Svisual《一》看图工具

Svisual Svisual作为独立的模块,可以实现Inspect对于节点.plt曲线的查看,也可以实现TecplotSV的.tdr看图功能,还可以进行自动化操作。 当作看图工具使用 - 当作一维曲线看图工具(.plt,Inspect) 1.1 打开:Sdevice模块…

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统(程序+LW)

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统(程序LW) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

F12抓包简单案例

F12抓包原理:在电脑访问互联网之前,进行包录制 1.谷歌开发者工具(F12) 元素(Elements):页面元素查看分析,web自动化 控制台(Console):查看日志 来源&#xf…

c语言---指针进阶(2)--玩转指针

今天内容不多,但都是精华。 1.数组参数和指针参数 2.函数指针 2.1笔试题 3.函数指针数组 1.数组参数和指针参数 例1:一维数组传参 void test(int arr[]) {} void test(int arr[10]) {} void test(int *arr) {}void test2(int *arr2[20]) {} void …

kotlin之声明变量的方式

让我们来看一下java声明变量的方式 Java声明变量方式 类型 变量名 等于 初始化值 String str "999999999"; kotlin声明变量方式 <关键字> <变量名称> : <类型> <初始化值> var sr : String "s…

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现(程序+LW)

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现&#xff08;程序LW) 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

nginx安装及使用(详细版)

一、负载均衡介绍 负载均衡分为硬件负载均衡和软件负载均衡。 硬件负载均衡解决方案是最直接服务器和外部网络间安装负载均衡设备&#xff0c;这种设备我们通常称之为负载均衡器产品有F5、NetScaler等。 软件负载均衡解决方案是指一台或多台服务器响应的操作系统上安装一个或多…

【旋转目标检测】旋转标注工具roLabelImg使用教程

旋转目标检测系列文章:第一篇,学会使用roLabelImg标注工具 本次实验在Windows 10系统下进行, python版本3.6.10(2年前安装的python版本,有点老了) 下载标注工具项目代码: https://github.com/cgvict/roLabelImg 下载代码压缩包到桌面: 解压: 打开Anaconda Prompt终…

动态拉取接口数据

通过工具类动态拉取接口数据 写在前言&#xff1a; 使用工具类拉取接口中的数据&#xff0c;存放在自己的数据库&#xff0c;进行展示。 自己去看工具类中的注释&#xff0c;按照自己的需求去修改。 一、工具类 1、整理需求 想通过工具类把接口数据存放在数据库&#xff…

Feign远程调用

Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;https://github.com/OpenFeign/feign Fegin的使用步骤如下&#xff1a; 1&#xff09;引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-clou…

Win11开始菜单里面的推荐项目怎么全部关闭教学

Win11开始菜单里面的推荐项目怎么全部关闭教学分享。在Win11系统的开始菜单中&#xff0c;有一些推荐的功能程序。这些程序用户平时并没有使用到&#xff0c;所以想要去将它们进行关闭。那么这些程序如何彻底的关闭显示呢&#xff1f;一起来看看关闭的方法吧。 操作方法&#x…

[附源码]计算机毕业设计咖啡销售平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[设计] Doris血缘解析流程

一、背景 1.1 元数据概述 元数据是凌久中台重要功能模块&#xff0c;是数据治理的重要一环&#xff0c;元数据治理是一切数据治理的基础&#xff0c;主要分为元数据管理和表血缘管理&#xff1b; 元数据管理主要用来做数据地图、数据资产等&#xff1b; 血缘治理主要用来追查…

爬虫-(5)

内容概览 scrapy架构介绍scrapy解析数据settings相关配置持久化方案爬取全站文章爬虫中间件与下载中间件 scrapy架构介绍 # 引擎(ENGINE) 引擎负责控制系统所有组件之间的数据流&#xff0c;并在某些动作发生时触发事件。有关详细信息&#xff0c;请参见上面的数据流部分。# …

SLURM批处理调度系统介绍

SLURM (Simple Linux Utility for Resouce Management) 非常成熟的开源社区集群批处理调度系统。 介绍 2008年左右起源于LLNL实验室, 最新版本20.11开源软件(约50万行c源码)&#xff0c;开发和发布一直活跃用户群: Top10里有5家使用(天河HPC是其一)商业公司SchedMD提供顾问咨…

经典算法之LRU算法

一、理论 LRU算法算是个常见的算法&#xff0c;很有必要去了解它&#xff0c;现在我们就来看看什么是 LRU LRU 的全称是 Least Recently Used&#xff08;最近最少使用&#xff09;&#xff0c;就如它的含义一样&#xff0c;最近最少使用的。在实际的场景中大多会把它当作一种…

CAN总线学习笔记 | STM32CubeMX配置CAN环回测试

CAN基础知识介绍文中介绍了CAN协议的基础知识&#xff0c;以及STM32F4芯片的CAN控制器相关知识&#xff0c;下面将通过实例&#xff0c;利用STM32CubeMX图形化配置工具&#xff0c;来实现CAN通讯的环回测试 一、STM32CubeMX配置 CAN是挂载在APB1总线上&#xff0c;设置PCLK1时…

Flink系列之Flink中四层Graph详解

title: Flink系列 四、Flink Runtime 四层 Graph 详解 首先回顾一下 Flink 的整体架构设计&#xff1a; {% asset_img processes.svg %} 关于上图中的一些概念的解释&#xff1a; 1、DataFlow Graph 是一个逻辑概念&#xff0c;表示这个应用程序的一个执行图&#xff0c;事…

开关电源环路笔记(11)-TL431电路的几个电阻的取值

上次文章发出来后&#xff0c;有兄弟留言布置了作业&#xff0c;让说说几个电阻的取值&#xff0c;就是下图的Rled&#xff0c;Rbias&#xff0c;R1&#xff0c;Rlower等。那么就写写吧&#xff0c;毕竟&#xff0c;这个电路确实用得非常多&#xff0c;实际工作中确实也需要知道…

登录信息记录模块实现(UserAgentUtils)

如果文章对你有帮助欢迎【关注❤️❤️❤️点赞&#x1f44d;&#x1f44d;&#x1f44d;收藏⭐⭐⭐】一键三连&#xff01;一起努力&#xff01; 一、UserAgentUtils简介 user-agent-utils 是一个用来解析 User-Agent 字符串的 Java 类库。 其能够识别的内容包括&#xff1a…