300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【三维路径规划】基于matlab遗传算法无人机三维路径规划【含Matlab源码 1526期】

【三维路径规划】基于matlab遗传算法无人机三维路径规划【含Matlab源码 1526期】

时间:2023-03-11 04:01:47

相关推荐

【三维路径规划】基于matlab遗传算法无人机三维路径规划【含Matlab源码 1526期】

一、无人机简介

0 引言

随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下无人机等,决定飞行器性能主要是内部的飞控系统和外部的路径规划问题。就路径问题而言,在具体实施任务时仅靠操作员手中的遥控器控制无人飞行器执行相应的工作,可能会对操作员心理以及技术提出极高的要求,为了避免个人操作失误,进而造成飞行器损坏的危险,一种解决问题的方法就是对飞行器进行航迹规划。

飞行器的测量精度,航迹路径的合理规划,飞行器工作时的稳定性、安全性等这些变化对飞行器的综合控制系统要求越来越高。无人机航路规划是为了保证无人机完成特定的飞行任务,并且能够在完成任务的过程中躲避各种障碍、威胁区域而设计出最优航迹路线的问题。

1 常见的航迹规划算法

图1 常见路径规划算法

文中主要对无人机巡航阶段的航迹规划进行研究,假设无人机在飞行中维持高度与速度不变,那么航迹规划成为一个二维平面的规划问题。在航迹规划算法中,A算法计算简单,容易实现。在改进A算法基础上,提出一种新的、易于理解的改进A算法的无人机航迹规划方法。传统A算法将规划区域栅格化,节点扩展只限于栅格线的交叉点,在栅格线的交叉点与交叉点之间往往存在一定角度的两个运动方向。将存在角度的两段路径无限放大、细化,然后分别用两段上的相应路径规划点作为切点,找到相对应的组成内切圆的圆心,然后作弧,并求出相对应的两切点之间的弧所对应的圆心角,根据下式计算出弧线的长度

式中:R———内切圆的半径;

α———切点之间弧线对应的圆心角。

二、遗传算法简介

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

三、部分源代码

clcclearclose alldata = xlsread('数据.xlsx','B4:E614');Ps = [0.00 50000.00 5000.00 ];Pe = [100000.00 59652.34 5022.00];XYZ = data(:,1:3);tag = data(:,4);plot3(XYZ(tag==0,1),XYZ(tag==0,2),XYZ(tag==0,3),'b.')hold onplot3(XYZ(tag==1,1),XYZ(tag==1,2),XYZ(tag==1,3),'r.')plot3(Ps(1),Ps(2),Ps(3),'go','MarkerFacecolor','g')plot3(Pe(1),Pe(2),Pe(3),'gs','MarkerFacecolor','g')% legend('水平校正点','垂直校正点','起点A','终点B')%%[x,id] = sort(XYZ(:,1));xyz = XYZ(id,:);tag = tag(id);alpha1 = 25;alpha2 = 25;beta1 = 20;beta2 = 25;theta = 30;delta = 0.001;m = min([alpha1,alpha2,beta1,beta2]);ds = m / delta; % 两次校正间的最大前进距离%%NP = 100; % 种群大小maxgen = 200;% 最大进化代数Pc = 0.8; % 交叉概率Pm = 0.2; % 变异概率Gap = 0.9; % 代沟(Generation gap)%%xyz = [Ps; xyz; Pe];tag = [0; tag; 0];T =size(xyz,1);D = zeros(T);for i = 1 : Tfor j = 1 : TD(i,j) = sqrt(sum((xyz(i,:) - xyz(j,:)).^2));endendbig = sum(sum(D));i = 1;while i <= NPix = 1;last = 1;errorH = 0;% 水平误差errorV = 0;% 垂直误差flag = 1;while 1d2end = sqrt(sum((xyz(last,:) - Pe).^2)); % 如果最后一个校正点到终点的距离<dserrorHd = errorH + d2end * delta;errorVd = errorV + d2end * delta;if errorHd <= theta && errorVd <= thetax = [x T];breakend%% 交叉操作% 输入% XSel 被选择的个体% Pc 交叉概率% 输出:% XSel 交叉后的个体function XSel=Cross01(XSel,Pc)[NSel,CityNum]=size(XSel);for i=1:2:NSel-mod(NSel,2)if Pc>=rand %交叉概率Pcid=randi(CityNum-2)+1;chrom1=XSel(i,:);chrom2=XSel(i+1,:);XSel(i,:)=[chrom1(1,1:id) chrom2(1,id+1:end)];XSel(i+1,:)=[chrom2(1,1:id) chrom1(1,id+1:end)];endendfunction F = Fitness(X,D,delta,alpha1,alpha2,beta1,beta2,theta,tag)route = find(X~=0); % 去掉0的路径dist = 0;for j = 1:length(route)-1dist = dist + D(route(j),route(j+1));endbig = sum(sum(D));punish = 0;errorH = 0;% 水平误差errorV = 0;% 垂直误差for j = 2 : length(route)-1dv = D(route(j-1),route(j));errorH = errorH + dv * delta;errorV = errorV + dv * delta;if errorV <= alpha1 && errorH <= alpha2 && errorV <= beta1 && errorH <= beta2% 校正if tag(route(j)) == 0% 水平校正errorH = 0;endif tag(route(j)) == 1% 垂直校正errorV = 0;endelsepunish = punish + 1;endend%% 最后到终点errorH = errorH + D(route(end-1),route(end)) * delta;errorV = errorV + D(route(end-1),route(end)) * delta;if errorH <= theta && errorV <= thetaelsepunish = punish + 1;endF = dist + punish * big;%% 选择操作% 输入% X 种群% fit 适应度值% Gap:选择概率% 输出% XSel 被选择的个体function XSel=Select(X,fit,Gap)NP=size(X,1);Px=fit/sum(fit); % 概率归一化Px=cumsum(Px);% 轮盘赌概率累加XSel(1:NP*Gap,:)=X(1:NP*Gap,:); % 根据代沟概率确定进行选择for i=1:NP*Gapsita=rand;for j=1:NPif sita<=Px(j)XSel(i,:)=X(j,:);break;endendendend

四、运行结果

五、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.

[3]何光勤,朱一飞,张才然.基于遗传算法的无人机三维航迹规划研究[J].价值工程. ,39(07)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。