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

简介: 【无人机】基于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<x<500, 400<y<550 -> xwind = -1, ywind = -1

      % GRID 2: 300<x<500, 550<y<700 -> 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电子书和数学建模资料



相关文章
|
3月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
2月前
|
机器学习/深度学习 算法 计算机视觉
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
29 2
|
2月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
36 0
|
2月前
|
算法
MATLAB | 插值算法 | 二维interp2插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 二维interp2插值法 | 附数据和出图代码 | 直接上手
57 0
|
2月前
|
算法
MATLAB | 插值算法 | 二维griddata插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 二维griddata插值法 | 附数据和出图代码 | 直接上手
38 0
|
2月前
|
算法
MATLAB | 插值算法 | 一维Lagrange插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维Lagrange插值法 | 附数据和出图代码 | 直接上手
21 0
|
3月前
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
|
3月前
【数值分析】迭代法求方程的根(附matlab代码)
【数值分析】迭代法求方程的根(附matlab代码)
|
3月前
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
|
3月前
【数值分析】二分法求方程的根(附matlab代码)
【数值分析】二分法求方程的根(附matlab代码)