【无人机】基于Fast行军树(FMT)求解无人机故障路径规划问题附matlab代码和论文

✅作者简介:热爱科研的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

⛄ 运行结果

【无人机】基于Fast行军树(FMT)求解无人机故障路径规划问题附matlab代码和论文_第1张图片

⛄ 参考文献

【无人机】基于Fast行军树(FMT)求解无人机故障路径规划问题附matlab代码和论文_第2张图片

⛄ Matlab代码关注

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

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

你可能感兴趣的:(无人机,matlab,开发语言)