✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
本文提出了一种基于自适应航迹评价函数权重的动态窗口法长机-僚机法,用于实现多无人机的路径规划。该方法通过自适应调整航迹评价函数中各权重的值,动态地优化长机和僚机的航迹,从而提高多无人机的路径规划效率和安全性。
引言
多无人机协同作业已成为近年来研究的热点,其中路径规划是关键技术之一。动态窗口法(DWA)是一种广泛应用于移动机器人路径规划的算法,其优点在于计算效率高、可实时响应环境变化。然而,传统的DWA算法在多无人机路径规划中存在一些局限性,例如:
-
**航迹评价函数权重固定:**传统的DWA算法中,航迹评价函数的权重通常是固定的,这可能导致在不同环境下规划出的航迹不理想。
-
**长机-僚机协作效率低:**传统的DWA算法没有考虑长机和僚机之间的协作,这可能导致僚机跟随长机时出现碰撞或偏离航迹的情况。
方法
为了解决上述问题,本文提出了一种基于自适应航迹评价函数权重的动态窗口法长机-僚机法。该方法主要包括以下步骤:
1. 自适应航迹评价函数权重
航迹评价函数用于评估候选航迹的优劣程度。本文提出了一种自适应航迹评价函数权重的方法,该方法根据环境信息动态调整权重的值。具体来说,权重的值由以下因素决定:
-
**障碍物距离:**权重与障碍物距离成反比,距离越近,权重越大。
-
**航迹长度:**权重与航迹长度成正比,航迹越长,权重越大。
-
**航迹曲率:**权重与航迹曲率成反比,曲率越大,权重越小。
2. 动态窗口法
动态窗口法是一种基于采样和搜索的路径规划算法。本文将动态窗口法应用于长机和僚机的路径规划。具体来说,长机根据自适应航迹评价函数权重规划出候选航迹,僚机根据长机的航迹和自身的环境信息规划出候选航迹。
3. 长机-僚机协作
为了提高长机和僚机之间的协作效率,本文提出了一种长机-僚机协作机制。该机制包括以下步骤:
-
**长机广播航迹:**长机将规划出的候选航迹广播给僚机。
-
**僚机跟随长机:**僚机根据长机的航迹和自身的环境信息规划出候选航迹,并选择与长机航迹最接近的候选航迹作为跟随航迹。
-
**长机调整航迹:**如果僚机跟随航迹与长机航迹出现较大偏差,长机将重新规划航迹,以减少僚机跟随难度。
实验结果
本文通过仿真实验验证了所提出方法的有效性。实验结果表明,该方法能够有效提高多无人机的路径规划效率和安全性。具体来说:
-
**路径规划效率:**该方法能够在较短的时间内规划出满足要求的路径。
-
**路径规划安全性:**该方法能够有效避免无人机与障碍物碰撞,并保证僚机跟随长机时不会出现偏离航迹的情况。
-
**长机-僚机协作效率:**该方法能够有效提高长机和僚机之间的协作效率,减少僚机跟随难度。
结论
本文提出了一种基于自适应航迹评价函数权重的动态窗口法长机-僚机法,用于实现多无人机路径规划。该方法通过自适应调整航迹评价函数权重的值,动态地优化长机和僚机的航迹,从而提高了多无人机的路径规划效率和安全性。实验结果验证了该方法的有效性,为多无人机协同作业提供了新的技术支持。最小间距、最大速度等。 3. **航迹评价:**计算候选路径的航迹评价函数值,并选择评价函数值最小的路径。 4. **路径平滑:**对选定的路径进行平滑处理,以减小路径的曲率和加速度。
2.3 僚机跟随控制
僚机跟随控制算法根据长机的路径和自身状态,引导僚机跟随长机。常用的僚机跟随控制算法包括:
-
**纯跟随算法:**僚机直接跟随长机的路径,保持与长机相同的航迹。
-
**预测跟随算法:**僚机预测长机的未来路径,并提前调整自身状态,以避免碰撞。
-
**协同跟随算法:**僚机考虑其他僚机的状态,协同调整自身状态,以实现编队的协同性。
3. 仿真结果
为了验证本文提出的方法的有效性,进行了仿真实验。仿真场景为一个二维平面,包含障碍物和目标点。仿真中使用了10架无人机,采用基于自适应航迹评价函数权重的动态窗口法长机-僚机法进行路径规划。
仿真结果表明:
-
该方法能够有效地规划出满足安全性和协同性要求的多无人机编队路径。
-
该方法具有较高的鲁棒性,能够适应不同的环境和任务需求。
-
该方法具有较高的可扩展性,能够应用于大规模无人机编队。
4. 结论
本文提出了一种基于自适应航迹评价函数权重的动态窗口法长机-僚机法,用于实现多无人机路径规划。该方法通过自适应调整航迹评价函数的权重,实现了对不同环境和任务需求的适应性。同时,采用动态窗口法长机-僚机法,解决了多无人机编队中的冲突避免和协同控制问题。仿真结果表明,该方法能够有效地规划出满足安全性和协同性要求的多无人机编队路径,具有较高的鲁棒性和可扩展性。
📣 部分代码
% %水位模糊控制算法
% clear all;
% close all;
%
% a = newfis('fuzzy tank');
%
% a = addvar(a,'input','e',[-3,3]);
% a = addmf(a,'input',1,'NB','zmf',[-3,-1]);
% a =addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
% a =addmf(a,'input',1,'ZO','trimf',[-2,0,2]);
% a =addmf(a,'input',1,'PS','trimf',[-1,1,3]);
% a = addmf(a,'input',1,'PB','smf',[1,3]);
%
% a = addvar(a,'output','u',[-4,4]);
% a = addmf(a,'output',1,'NB','zmf',[-4,-2]);
% a =addmf(a,'output',1,'NS','trimf',[-4,-2,0]);
% a =addmf(a,'output',1,'ZO','trimf',[-2,0,2]);
% a =addmf(a,'output',1,'PS','trimf',[0,2,4]);
% a = addmf(a,'output',1,'PB','smf',[2,4]);
%
% %建立模糊规则模糊规则矩阵rulelist的含义:模糊矩阵是由模糊规则转化而来,这里矩阵规模为5*4,
% % 矩阵第一列表示输入e(5个模糊集合PB/PS/ZO/NS/NB依次对应1-5),矩阵第二列表示输出u(含义同理)
% % ,第三列为规则的权重weight,第四列为AND模糊运算(1对应AND,2对应OR),如果是多输入多数出模糊控制器,
% rulelist=[1 1 1 1;
% 2 2 1 1;
% 3 3 1 1;
% 4 4 1 1;
% 5 5 1 1];%第一列是指系统的输入。每一列都包含一个数字,该数字表示该变量的隶属函数的索引。
% % 接下来的n列是指系统的输出。每一列都包含一个数字,该数字表示该变量的membership函数索引。
% % m + n + 1列包含要应用于规则的权重。权重必须是一个介于0和1之间的数字,通常为1
% % 如果规则的前提条件的模糊运算符是AND,则m + n + 2列包含1。如果模糊运算符为或,则它包含2
% a = addrule(a,rulelist);
%
% %设置反模糊化算法setfis(a,'DefuzzMethod','mom');反模糊化方法不同最终输出控制量也不同。
% % mom 最大隶属度平均法
% % centroid 面积重心法
% % bisector 面积等分法
% % som 最大隶属度取小法
% % lom 最大隶属度去大法
% a1 = setfis(a,'DefuzzMethod','mom');
% writefis(a1,'tank');
% a2 = readfis('tank');
%
% figure(1);
% plotfis(a2);
% figure(2);
% plotmf(a,'input',1);
% figure(3);
% plotmf(a,'output',1);
%
%
% showrule(a);
% ruleview('tank');
%
% for i=1:1:7
% e(i)=i-4;
% Ulist(i)=evalfis([e(i)],a2);
% end
% Ulist = round(Ulist); %对决策结果四舍五入取整
% % 三种方法:round(四舍五入)、ceil(向上取整)、floor(向下取整)
%
% disp('------------------------------------------------------');
% disp('----------模糊控制表:e =[-3,3], u = [-4,4]-----------');
% disp('------------------------------------------------------');
% fprintf('| a |');
% fprintf(' %d |',e);
% fprintf('\n');
% fprintf('| u |');
% fprintf(' %d |',Ulist);
% fprintf('\n');
%%
function evalParamout=mohukongzhi(GoaLDist,ObstacleDist)
a=newfis('fuzzf'); %创建新的模糊推理系统
%输入1 %GoaLDist评价函数
a=addvar(a,'input','GoaLDist',[0,20]);
%添加 e 的模糊语言变量
% a=addmf(a,'input',1,'PS','trapmf',[0,0,1,1.5]);
% %添加 e 的模糊语言变量的隶属度函数(梯型)域为1.5-3.5
% %隶属度函数为三角形0-1.5
% a=addmf(a,'input',1,'PM','trapmf',[1.5,2,3,3.5]);
% a=addmf(a,'input',1,'PB','trapmf',[3.35,3.6,4,4]);
a=addmf(a,'input',1,'PS','trapmf',[0,0,1,5]);
%添加 e 的模糊语言变量的隶属度函数(梯型)域为1.5-3.5
%隶属度函数为三角形0-1.5
a=addmf(a,'input',1,'PM','trapmf',[5,6,8,13]);
a=addmf(a,'input',1,'PB','trapmf',[12,15,17,20]);
%输入2;%ObstacleDist评价函数
a=addvar(a,'input','ObstacleDist',[0,5]);
%添加 ec 的模糊语言变量
a=addmf(a,'input',2,'PS','trapmf',[0,0,1,1.2]);
a=addmf(a,'input',2,'PM','trimf',[1.2,2,3]);
a=addmf(a,'input',2,'PB','trapmf',[2.5,3,4.5,5]);
%输出1障碍物距离评价函数参数
a=addvar(a,'output','CalcDistEval',[0,1]);
%添加 CalcDistEval 的模糊语言变量
a=addmf(a,'output',1,'PS','trapmf',[0,0,0.1,0.2]);
a=addmf(a,'output',1,'PM','trimf',[0.15,0.3,0.45]);
a=addmf(a,'output',1,'PB','trapmf',[0.4,0.45,0.5,0.5]);
% 输出2 heading角度的评价函数计算
a=addvar(a,'output','heading',[0,1]);
%添加 heading 的模糊语言变量
a=addmf(a,'output',2,'PS','trapmf',[0,0,0.1,0.15]);
a=addmf(a,'output',2,'PM','trimf',[0.1,0.25,0.4]);
a=addmf(a,'output',2,'PB','trapmf',[0.35,0.4,0.5,0.5]);
%
% %输出3速度评价函数参数
a=addvar(a,'output','vel',[0,1]);
%添加vel的模糊语言变量
a=addmf(a,'output',3,'PS','trapmf',[0,0,0.2,0.3]);
a=addmf(a,'output',3,'PB','trapmf',[0.5,0.7,1,1]);
a=addmf(a,'output',3,'PM','trimf',[0.2,0.4,0.6]);
rulelist=[ 1 1 3 2 1 1 1; %编辑模糊规则,后俩个数分别是规则权重和AND OR选项
1 2 3 2 1 1 1;
1 3 3 1 1 1 1;
2 1 1 3 1 1 1; %编辑模糊规则,后俩个数分别是规则权重和AND OR选项
2 2 2 2 1 1 1;
2 3 2 1 2 1 1;
3 1 1 3 1 1 1;
3 2 2 2 2 1 1;
3 3 3 1 3 1 1];
%第一列是指系统的输入。每一列都包含一个数字,该数字表示该变量的隶属函数的索引。
% 接下来的n列是指系统的输出。每一列都包含一个数字,该数字表示该变量的membership函数索引。
% m + n + 1列包含要应用于规则的权重。权重必须是一个介于0和1之间的数字,通常为1
% 如果规则的前提条件的模糊运算符是AND,则m + n + 2列包含1。如果模糊运算符为或,则它包含2
a=addRule(a,rulelist); %添加模糊规则函数
showrule(a) ; %显示模糊规则函数
a=setfis(a,'DefuzzMethod','centroid'); %设置解模糊方法
writeFIS(a,'fuzzf');
%保存模糊系统
a=readfis('fuzzf'); %从磁盘读出保存的模糊系统
disp('fuzzy Controller table:e=[0,4],ec=[0,2]');%显示矩阵和数组内容
%推理%设置反模糊化算法setfis(a,'DefuzzMethod','mom');反模糊化方法不同最终输出控制量也不同。
% mom 最大隶属度平均法
% centroid 面积重心法
% bisector 面积等分法
% som 最大隶属度取小法
% lom 最大隶属度去大法
evalParamout=zeros(7,7); %全零矩阵
for i=1:7
for j=1:7
GoaLDist(i)=-4+i;
ObstacleDist(j)=-4+j;
evalParamout=evalfis([GoaLDist(i), ObstacleDist(j)],a);
% Ulist(i,j)=evalfis([e(i),ec(j)],a2); %完成模糊推理计算
end
end
% Ulist=ceil(Ulist) %朝正无穷方向取整
% Ulist=round(Ulist) ;
evalParamout=round(evalParamout) ;
evalParamout%朝正无穷方向取整
% 三种方法:round(四舍五入)、ceil(向上取整)、floor(向下取整)
%画出模糊系统
% figure(1); plotfis(a);
aw = 8; bw = 6;
set(gcf,'Units','centimeters','Position',[0*aw 1+0*bw aw bw]);%设置单位,位置大小8*6
figure(2);plotmf(a,'input',1);
set(gca,'FontName','Times New Roman','FontSize',12)%
aw = 8; bw = 6;
set(gcf,'Units','centimeters','Position',[0*aw 1+0*bw aw bw]);%设置单位,位置大小8*6
figure(3);plotmf(a,'input',2);grid on;
aw = 8; bw = 6;
set(gcf,'Units','centimeters','Position',[0*aw 1+0*bw aw bw]);%设置单位,位置大小8*6
set(gca,'FontName','Times New Roman','FontSize',12)%
figure(4);plotmf(a,'output',1);grid on;
aw = 8; bw = 6;
set(gcf,'Units','centimeters','Position',[0*aw 1+0*bw aw bw]);%设置单位,位置大小8*6
set(gca,'FontName','Times New Roman','FontSize',12)%
figure(5);plotmf(a,'output',2);grid on;
aw = 8; bw = 6;
set(gcf,'Units','centimeters','Position',[0*aw 1+0*bw aw bw]);%设置单位,位置大小8*6
set(gca,'FontName','Times New Roman','FontSize',12)%
figure(6);plotmf(a,'output',3);grid on;
aw = 8; bw = 6;
set(gcf,'Units','centimeters','Position',[0*aw 1+0*bw aw bw]);%设置单位,位置大小8*6
set(gca,'FontName','Times New Roman','FontSize',12)%
end
⛳️ 运行结果
🔗 参考文献
[1] 戴凯龙,贾子彦,潘玲佼.基于改进动态窗口法的无人机避障航迹规划[J].智能计算机与应用, 2022, 12(7):4.
[2] 唐钰婧.基于长机-僚机法的无人机编队控制器设计[J].中国科技信息, 2021(6):23-26.
[3] 许洋,秦小林,刘佳,等.多无人机自适应编队协同航迹规划[J].计算机应用, 2020, 40(5):7.DOI:10.11772/j.issn.1001-9081.2019112047.
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类