【无人机】基于Fast行军树(FMT)求解无人机故障路径规划问题附matlab代码和论文
创始人
2024-03-28 20:57:46
0

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

本论文旨在解决无人机发动机熄火问题,在该问题中无人机沿每个点进行应急检查。每一次检查都会模拟一个发动机故障,之后无人机被迫进入稳定下滑,必须能够到达在分配的时间内预定义的安全区。固有的困难在于以计算有效的方式处理非线性时间检查。这是因为高精度要求精细的路径离散化,这导致正在执行大量检查。解决方案还必须包含非完整性动力学、风扰动和防撞。

这个问题的重要性不能低估,因为民用无人机的需求随着美国联邦航空局计划整合无人机,预计未来10年该行业将有所增长进入国家空域系统。这显然是无人机经济产业的福音,然而,更加拥挤的空域会直接导致更严重的碰撞如果处理不当,可能会导致发动机故障。本论文利用最近开发的基于采样的规划器Fast行军树(FMT)。称为FMT的规范方法的扩展∗用作框架为了提高算法的效率,它建立在使用两种新颖的算法扩展:“路径重建”和“障碍聚类”算法。MATLAB仿真用于验证单个组件和核心算法在不同难度的问题情况下。结果表明,这两种算法扩展都显著提高了计算运行时间,而不会增加最终结果的路径成本。组合算法显示平均产率为76%在高复杂度环境下,对Brute-Force方法的运行时改进,以及对静态和变化的风场都具有鲁棒性。

⛄ 部分代码

function projection = calculate_projection(node1,node2,wind_struct)

    path = node2-node1;

    type = wind_struct.type;

    path_magnitude = norm(path);

    if path_magnitude == 0

        projection = 0;

        return;

    end

    

    if strcmp(type,'const')

        wind = wind_struct.vector;

        wind_magnitude = norm(wind);

        if wind_magnitude == 0

            projection = 0;

            return;

        end

        cos_theta = dot(path,wind) / (path_magnitude * wind_magnitude);

        projection = wind_magnitude * cos_theta;

    else

        wind1 = [1,1];

        wind1_magnitude = norm(wind1);

        wind2 = [1,1.5];

        wind2_magnitude = norm(wind2);

       % DEFINE GRIDS

       % GRID 1: 300 xwind = -1, ywind = -1

       % GRID 2: 300 xwind = 1, ywind = 1.5

%        if ((node1(1)<300 && node2(1)<300) || (node1(2)<400 && node2(2)<400) || ...

%           (node1(1)>500 && node2(1)>500) || (node1(2)>700 && node2(2)>700))

%             display('not in grid');

%             projection = 0;

%             return;

%        end

%        

%        if node2(2) < 550

%             cos_theta = dot(path,wind1) / (path_magnitude * wind1_magnitude);

%             projection = wind1_magnitude * cos_theta;

%        else

%            cos_theta = dot(path,wind2) / (path_magnitude * wind2_magnitude);

%            projection = wind2_magnitude * cos_theta;

%        end

        if node2(2) > 600

            cos_theta = dot(path,wind1) / (path_magnitude * wind1_magnitude);

            projection = wind1_magnitude * cos_theta; 

        else

            projection = 0;     

        end

        

    end

end

⛄ 运行结果

⛄ 参考文献

⛄ Matlab代码关注

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

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

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...