【路径规划】基于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

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n