⛄一、无人机简介
0 引言
随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下无人机等,决定飞行器性能主要是内部的飞控系统和外部的路径规划问题。就路径问题而言,在具体实施任务时仅靠操作员手中的遥控器控制无人飞行器执行相应的工作,可能会对操作员心理以及技术提出极高的要求,为了避免个人操作失误,进而造成飞行器损坏的危险,一种解决问题的方法就是对飞行器进行航迹规划。
飞行器的测量精度,航迹路径的合理规划,飞行器工作时的稳定性、安全性等这些变化对飞行器的综合控制系统要求越来越高。无人机航路规划是为了保证无人机完成特定的飞行任务,并且能够在完成任务的过程中躲避各种障碍、威胁区域而设计出最优航迹路线的问题。
1 常见的航迹规划算法
图1 常见路径规划算法
文中主要对无人机巡航阶段的航迹规划进行研究,假设无人机在飞行中维持高度与速度不变,那么航迹规划成为一个二维平面的规划问题。在航迹规划算法中,A算法计算简单,容易实现。在改进A算法基础上,提出一种新的、易于理解的改进A算法的无人机航迹规划方法。传统A算法将规划区域栅格化,节点扩展只限于栅格线的交叉点,在栅格线的交叉点与交叉点之间往往存在一定角度的两个运动方向。将存在角度的两段路径无限放大、细化,然后分别用两段上的相应路径规划点作为切点,找到相对应的组成内切圆的圆心,然后作弧,并求出相对应的两切点之间的弧所对应的圆心角,根据下式计算出弧线的长度
式中:R———内切圆的半径;
α———切点之间弧线对应的圆心角。
⛄二、多元宇宙算法
多元宇宙算法是 Seyedali Mirjalili 教授于 年底与其团队共同设计的启发式算法.该算法主要借助宇宙在随机创建过程中高膨胀率物体总是趋于低膨胀率的物体,这种万有引力作用可以使物体转移,借助相关宇宙学规则,可以在搜索空间逐渐趋于最优位置.
遍历过程主要分为探索和开采过程,虫洞可以作为转移物体的媒介,通过白洞和黑洞交互作用进行搜索空间探测,本文算法具体操作如下:假设搜索空间存在宇宙矩阵为
式中: d 为变量个数; n 为宇宙数量( 候选解) ;
式中: xji 为第 i 个宇宙的第 j 个变量; Ui 为第 i 个宇宙; NI( Ui ) 为第 i 个宇宙的标准膨胀率; r1 为介于0 和1的随机数; xj k 为根据螺旋机制被选中的第 i 个宇宙的第 j 个变量.
通过式( 13) ,依据标准膨胀率大小,白洞将以螺旋形式搜索,膨胀率低的物体更易于通过白洞或黑洞输送物体.同等情况下,膨胀率更高的物体具有更强拥有白洞的可能性,膨胀率更低的物体拥有黑洞的可能性更低. 对于最大化问题,- NI 将被改变为NI.根据搜索机制,在排除扰动影响时,为了使其始终处于探索过程,每个宇宙将物体通过虫洞随机传送.白洞传送物体穿过虫洞,如图 1 所示.为了提高宇宙利用虫洞提高物体膨胀率的可能性,假设虫洞隧道总是建立在宇宙和最优宇宙之间.这种机制可以公式为:
式中: Xj 为目前最优宇宙的第 j 个变量,WEP 和 TDR 是两个系数; ubj 为第 j 个变量最高值; lbj 为第 j 个变量最低值; xji 为第 i 个宇宙的第 j 个变量; r2,r3,r4 均为介于 0 和 1 的随机数。
⛄三、部分源代码
close all;
clear all;
clc;
addpath(genpath(‘./’));
%% Plan path
disp(‘Planning …’);
v1=cputime;
map = load_map(‘maps/map3.txt’, 0.1, 0.5, 0.25);
%%map = load_map(‘maps/map1.txt’, 0.1, 0.5, 0.25);
%%map = load_map(‘maps/map2.txt’, 0.1, 0.5, 0.25);
start = {[14.1,2.8,5.8],[11.6,2,5],[8.1,3,5],[14,4,5],[11.2,4.5,5]};
stop = {[19.8,2,5],[19.8,4.5,5.6],[1.8,4,5.6],[2,3,5.9],[5,4,5.2]};
dist = [0 0 0 0 0 ;0 0 0 0 0 ;0 0 0 0 0 ;0 0 0 0 0;0 0 0 0 0 ];
for i= 1:length(start)
for j= 1:length(start)
p1=start{i};
p2=stop{j};
disp(p1);
dist_x = (p1(1,1)- p2(1,1))(p1(1,1) - p2(1,1));
dist_y = (p1(1,2)- p2(1,2))(p1(1,2) - p2(1,2));
dist_z = (p1(1,3)- p2(1,3))*(p1(1,3) - p2(1,3));
dist(i,j) = sqrt(dist_x + dist_y + dist_z);
end
end
[ass,cost]=munkres(dist);
start_temp = {};
stop_temp = {};
for i = 1:length(start)
for j=1:length(start)
if ass(i,j)==1
start_temp{end+1}= start{i};
stop_temp{end+1}= stop{j};
end
end
end
fprintf(‘Munkres Execution time = %d \n’,cputime-v1);
start = start_temp;
stop= stop_temp;
disp(start)
disp(stop)
disp(length(start))
disp(length(stop))
sumall =0;
maxall = -1;
minall = 1000000000000;
sumallarray = [];
for sim = 1:10
fprintf(‘Simulation number= %d \n’,sim);
%visited_nodes = [];
nquad = length(start);
costValue=0;
sumValue=0;
for qn = 1:nquad
v = cputime;
[path{qn},costValue] = MVONEW(map, start{qn}, stop{qn},true);
c = cputime - v;
sumValue = sumValue+costValuefprintf('Algo Execution time for quad %d = %d \n',qn,c);
end
sumall = sumall+sumValue;
sumallarray(end+1) = sumValue;
if(sumValue>maxall)
maxall=sumValue;
end
if(sumValue<minall)
minall=sumValue;
end
if nquad == 1
plot_path(map, path{1});
else
% you could modify your plot_path to handle cell input for multiple robots
for qn = 1:nquad
plot_path(map, path{qn});
end
end
end
fprintf(‘Sum is %d and average is %d \n’,sumall,sumall/10);
fprintf(‘Min is %d and Max is %d \n’,minall,maxall);
fprintf(‘Standard deviation is %d \n’,std(sumallarray));
%% Additional init script
init_script;
⛄四、运行结果
⛄五、matlab版本及参考文献
1 matlab版本
a
2 参考文献
[1]焦阳.基于改进蚁群算法的无人机三维路径规划研究[J].舰船电子工程. ,39(03)
[2]刘世宇,王孜航,杨德友.多元宇宙算法及其在电力系统环境经济调度的应用[J].东北电力大学学报,04期
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
【MVO三维路径规划】基于matlab多元宇宙算法多无人机避障三维航迹规划【含Matlab源码 2579期】