✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
近年来,随着无人机在各个领域的广泛应用,无人机的航迹规划问题成为研究的热点,本文通过分析地形条件以及无人机自身性能对航迹规划的影响,研究无人机三维规划问题.在数字地图预处理的基础上,对基准地形以及障碍区域进行建模,建立等效的环境数字地图,并采用样条插值法对地形进行平滑处理,降低搜索空间.在此基础上建立带有惩罚函数的评价目标,使用遗传算法完成了无人机的三维航迹规划.实验结果表明:遗传算法不仅能够完成无人机的规划任务,生成短而平滑的路径,而且能够获得很好的收敛效果,为各种实际任务提供技术支持.
⛄ 部分代码
function [X,Y,Z] = defMap(posBound)
mapRange = posBound(:,2);
% 初始化地形信息
N = 10; % 山峰个数
peaksInfo = struct; % 初始化山峰特征信息结构体
peaksInfo.center = []; % 山峰中心
peaksInfo.range = []; % 山峰区域
peaksInfo.height = []; % 山峰高度
peaksInfo = repmat(peaksInfo,N,1);
% 随机生成N个山峰的特征参数
for i = 1:N
peaksInfo(i).center = [mapRange(1) * (rand*0.8+0.2), mapRange(2) * (rand*0.8+0.2)];
peaksInfo(i).height = mapRange(3) * (rand*0.7+0.3);
peaksInfo(i).range = mapRange*0.1*(rand*0.7+0.3);
end
% 计算山峰曲面值
peakData = [];
for x = 1:mapRange(1)
for y = 1:mapRange(2)
sum=0;
for k=1:N
h_i = peaksInfo(k).height;
x_i = peaksInfo(k).center(1);
y_i = peaksInfo(k).center(2);
x_si = peaksInfo(k).range(1);
y_si = peaksInfo(k).range(2);
sum = sum + h_i * exp(-((x-x_i)/x_si)^2 - ((y-y_i)/y_si)^2);
end
peakData(x,y)=sum;
end
end
% 构造曲面网格,用于插值判断路径是否与山峰交涉
x = [];
for i = 1:mapRange(1)
x = [x; ones(mapRange(2),1) * i];
end
y = (1:mapRange(2))';
y = repmat(y,length(peakData(:))/length(y),1);
peakData = reshape(peakData,length(peakData(:)),1);
[X,Y,Z] = griddata(x,y,peakData,...
linspace(min(x),max(x),100)',...
linspace(min(y),max(y),100));
end
⛄ 运行结果
⛄ 参考文献
[1] 贾广芝. 基于遗传算法和稀疏A*算法的无人机三维航迹规划研究[D]. 南京邮电大学.
[2] 罗诚, 崔升. 基于遗传算法的无人机航迹规划[J]. 复旦学报:自然科学版, 2011, 50(6):5.
[3] 于楠, 赵龙. 基于模拟退火遗传算法的无人机三维航迹规划[C]// 中国航空学会. 中国航空学会, 2010.
[4] 何光勤, 朱一飞, 张才然. 基于遗传算法的无人机三维航迹规划研究[J]. 价值工程, 2020, 39(7):4.
⛳️ 代码获取关注我
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料