【路径规划】基于fmincon实现无人机航路避障规划附matlab代码

2023-10-31 20:40

本文主要是介绍【路径规划】基于fmincon实现无人机航路避障规划附matlab代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

根据敌方防御雷达,防空火力等威胁以及禁飞区的分布情况,构造基于战场威胁中心图,得到可以规避各种威胁的航迹线段,结合战场威胁信息,计算航迹段的代价,形成有向图,计算出无人机初始最优航路,利用无人机初始状态和性能约束进行航路的进一步修正,满足了无人机的飞行特点.并运用MATLAB编制图形化界面,实现仿真结果的图形显示.​

⛄ 部分代码

function [M] = make_movie(Path_bez)

global n_obsd obs_d_sp obs_d_v obs_d_s obs_d_cp Dynamic_Obstacles;

global n_obs; %number of obstacles

global obs; %positions of obstacles

global obs_rad; %radius of obstacles

global uav_ws;

global t;

M(length(Path_bez)) = struct('cdata',[],'colormap',[]);

hold on

%plot static obstacles

for j = 1 : n_obs

    

    plot(obs(j,1),obs(j,2),'xb'); % static obstacles' centers

    x = obs(j,1) - obs_rad(j) : 0.001 : obs(j,1)+ obs_rad(j);

    y =  (obs_rad(j)^2 - (x - obs(j,1)).^2).^0.5 + obs(j,2); %top part of circle

    y1 = -(obs_rad(j)^2 - (x - obs(j,1)).^2).^0.5 + obs(j,2); %bottom part of circle

    

    plot(x,y,'b');

    plot(x,y1,'b');

    

end

for i = 1 : length(Path_bez)

  

    %plot uav position and size

    

    x = Path_bez(i,1) - uav_ws : 0.001 : Path_bez(i,1)+ uav_ws;

    y =  (uav_ws^2 - (x - Path_bez(i,1)).^2).^0.5 + Path_bez(i,2); %top part of circle

    y1 = -(uav_ws^2 - (x - Path_bez(i,1)).^2).^0.5 + Path_bez(i,2); %bottom part of circle

    

    plot(x,y,'Color',[0, 0.5, 0]);

    plot(x,y1,'Color',[0, 0.5, 0]);

    

    xlim([0,100]);

    ylim([0,100]);

    

    %plot dynamic obstacles

    

    if Dynamic_Obstacles == 1

        

        %plot small square at center of dynamic obstacles at each time step

        for k = 1 : n_obsd

            

            plot(obs_d_v(k,1)*t(2)*(i-1) + obs_d_sp(k,1),obs_d_v(k,2)*t(2)*(i-1) + obs_d_sp(k,2),'rs');

            

        end

        %plot  dynamic obstacles as circles

        for k = 1 : n_obsd

            

            

            odh = [obs_d_v(k,1)*t(2)*(i-1)+obs_d_sp(k,1), obs_d_v(k,2)*t(2)*(i-1)+obs_d_sp(k,2) ]; % to make it easier to type

            

            x = odh(:,1) - obs_d_s(k) : 0.001 : odh(:,1)+ obs_d_s(k);

            y =  (obs_d_s(k)^2 - (x - odh(:,1)).^2).^0.5 + odh(:,2); %top part of circle

            y1 = -(obs_d_s(k)^2 - (x - odh(:,1)).^2).^0.5 + odh(:,2); %bottom part of circle

            

            plot(x,y,'r');

            plot(x,y1,'r');

        end

    end

    

    M(i) = getframe(gcf);

    

end

hold off

end

⛄ 运行结果

⛄ 参考文献

[1] 杨向东,周汶锋,张陈宏,等.基于无人机倾斜摄影的三维路径规划[J].机电工程技术, 2023, 52(4):6.

[2] 张庆捷,徐华,霍得森,等.基于改进蚁群算法的侦察无人机航路规划与实现[J].运筹与管理, 2007(3):6.DOI:10.3969/j.issn.1007-3221.2007.03.019.

[3] 王绪芝,姚敏,赵敏,等.基于蚁群算法的无人机航迹规划及其动态仿真[J].指挥控制与仿真, 2012, 34(1):4.DOI:10.3969/j.issn.1673-3819.2012.01.007.

[4] 张剑锋,王新民.基于MATLAB的某无人机自动驾驶仪测试系统的实现[C]//中国航空学会轻型飞行器专业委员会2005年学术交流会.2005.

[5] 马云红,周德云.无人机路径规划算法与仿真[J].火力與指揮控制, 2007, 32.

[6] 罗诚.无人机路径规划算法研究[D].复旦大学,2010.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

这篇关于【路径规划】基于fmincon实现无人机航路避障规划附matlab代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/318003

相关文章

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性: