路径规划基于matalb遗传算法机器人栅格地图路径规划含matlab源码175期(代码片段)

紫极神光 紫极神光     2023-03-09     157

关键词:

一、遗传算法及栅格地图简介

1.1 引言


1.2 遗传算法理论
1.2.1 遗传算法的生物学基础


1.2.2 遗传算法的理论基础




1.2.3 遗传算法的基本概念






1.2.4 标准的遗传算法


1.2.5 遗传算法的特点


1.2.6 遗传算法的改进方向

1.3 遗传算法流程



1.4 关键参数说明

2 栅格地图
2.1 栅格法应用背景
路径规划时首先要获取环境信息, 建立环境地图, 合理的环境表示有利于建立规划方法和选择合适的搜索算法,最终实现较少的时间开销而规划出较为满意的路径。一般使用栅格法在静态环境下建立环境地图。
2.2 栅格法实质
将AGV的工作环境进行单元分割, 将其用大小相等的方块表示出来,这样栅格大小的选取是影响规划算法性能的一个很重要的因素。栅格较小的话,由栅格地图所表示的环境信息将会非常清晰,但由于需要存储较多的信息,会增大存储开销,同时干扰信号也会随之增加,规划速度会相应降低,实时性得不到保证;反之,由于信息存储量少,抗干扰能力有所增强,规划速随之增快,但环境信息划分会变得较为模糊,不利于有效路径的规划。在描述环境信息时障碍物所在区域在栅格地图中呈现为黑色,地图矩阵中标为1,可自由通行区域在栅格地图中呈现为白色,地图矩阵中标为0。路径规划的目的就是在建立好的环境地图中找到一条最优的可通行路径,所以使用栅格法建立环境地图时,栅格大小的合理设定非常关键。
2.3 10乘10的静态环境地图

10乘10的静态环境地图代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%建立环境地图%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function DrawMap(map)
n = size(map);
step = 1;
a = 0 : step :n(1);
b = 0 : step :n(2);
figure(1)
axis([0 n(2) 0 n(1)]); %设置地图横纵尺寸
set(gca,'xtick',b,'ytick',a,'GridLineStyle','-',...
'xGrid','on','yGrid','on');
hold on
r = 1;
for(i=1:n(1))         %设置障碍物的左下角点的x,y坐标
    for(j=1:n(2))
        if(map(i,j)==1)
            p(r,1)=j-1;
            p(r,2)=i-1;
            fill([p(r,1) p(r,1) + step p(r,1) + step p(r,1)],...
                 [p(r,2) p(r,2) p(r,2) + step p(r,2) + step ],'k');
            r=r+1;
            hold on
        end
    end
end
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%栅格数字标识%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x_text = 1:1:n(1)*n(2); %产生所需数值.
for i = 1:1:n(1)*n(2)
    [row,col] = ind2sub([n(2),n(1)],i);
    text(row-0.9,col-0.5,num2str(x_text(i)),'FontSize',8,'Color','0.7 0.7 0.7');
end
hold on
axis square

建立环境矩阵,1代表黑色栅格,0代表白色栅格,调用以上程序,即可得到上述环境地图。

map=[0 0 0 1 0 0 1 0 0 0;
     1 0 0 0 0 1 1 0 0 0;
     0 0 1 0 0 0 1 1 0 0;
     0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 1 0 0 1 0;
     1 0 0 0 0 1 1 0 0 0;
     0 0 0 1 0 0 0 0 0 0;
     1 1 1 0 0 0 1 0 0 0;
     0 0 0 0 0 1 1 0 0 0;
     0 0 0 0 0 1 1 0 0 0;];
     DrawMap(map);         %得到环境地图

2.4 栅格地图中障碍栅格处路径约束
移动体栅格环境中多采用八方向的移动方式,此移动方式在完全可通行区域不存在运行安全问题,当
移动体周围存在障碍栅格时此移动方式可能会发生与障碍物栅格的碰撞问题,为解决此问题加入约束
条件,当在分别与障碍物栅格水平方向和垂直方向的可行栅格两栅格之间通行时,禁止移动体采用对
角式移动方式。


约束条件的加入,实质是改变栅格地图的邻接矩阵,将障碍栅格(数字为“1”的矩阵元素)的对角栅格
设为不可达, 即将对角栅格的距离值改为无穷大。其实现MATLAB代码如下:
代码:

%约束移动体在障碍栅格对角运动
%通过优化邻接矩阵实现
%%%%%%%%%%%%%%%%%% 约束移动体移动方式 %%%%%%%%%%%%%%%%%
function W=OPW(map,W)
% map 地图矩阵  % W 邻接矩阵
n = size(map);
num = n(1)*n(2);
for(j=1:n(1))
    for(z=1:n(2))
       if(map(j,z)==1)
          if(j==1)                  %若障碍物在第一行
             if(z==1)               %若障碍物为第一行的第一个
                W(j+1,j+n(2)*j)=Inf;
                W(j+n(2)*j,j+1)=Inf;
             else
                if(z==n(2))         %若障碍物为第一行的最后一个
                   W(n(2)-1,n(2)+n(1)*j)=Inf;
                   W(n(2)+n(1)*j,n(2)-1)=Inf;
                else                %若障碍物为第一行的其他
                    W(z-1,z+j*n(2))=Inf;
                    W(z+j*n(2),z-1)=Inf;
                    W(z+1,z+j*n(2))=Inf;
                    W(z+j*n(2),z+1)=Inf;
                end
             end
          end
          if(j==n(1))               %若障碍物在最后一行
             if(z==1)               %若障碍物为最后一行的第一个
                W(z+n(2)*(j-2),z+n(2)*(j-1)+1)=Inf;
                W(z+n(2)*(j-1)+1,z+n(2)*(j-2))=Inf;
             else
             if(z==n(2))            %若障碍物为最后一行的最后一个
                W(n(1)*n(2)-1,(n(1)-1)*n(2))=Inf;
                W((n(1)-1)*n(2),n(1)*n(2)-1)=Inf;
             else                   %若障碍物为最后一行的其他
                W((j-2)*n(2)+z,(j-1)*n(2)+z-1)=Inf;
                W((j-1)*n(2)+z-1,(j-2)*n(2)+z)=Inf;
                W((j-2)*n(2)+z,(j-1)*n(2)+z+1)=Inf;
                W((j-1)*n(2)+z+1,(j-2)*n(2)+z)=Inf;
             end
             end
          end
          if(z==1)              
             if(j~=1&&j~=n(1))       %若障碍物在第一列非边缘位置 
                W(z+(j-2)*n(2),z+1+(j-1)*n(2))=Inf;
                W(z+1+(j-1)*n(2),z+(j-2)*n(2))=Inf;
                W(z+1+(j-1)*n(2),z+j*n(2))=Inf;
                W(z+j*n(2),z+1+(j-1)*n(2))=Inf;
             end
          end
         if(z==n(2))
            if(j~=1&&j~=n(1))         %若障碍物在最后一列非边缘位置 
               W((j+1)*n(2),j*n(2)-1)=Inf;
               W(j*n(2)-1,(j+1)*n(2))=Inf;
               W(j*n(2)-1,(j-1)*n(2))=Inf;
               W((j-1)*n(2),j*n(2)-1)=Inf;
            end
         end
         if(j~=1&&j~=n(1)&&z~=1&&z~=n(2))   %若障碍物在非边缘位置
            W(z+(j-1)*n(2)-1,z+j*n(2))=Inf;
            W(z+j*n(2),z+(j-1)*n(2)-1)=Inf;
            W(z+j*n(2),z+(j-1)*n(2)+1)=Inf;
            W(z+(j-1)*n(2)+1,z+j*n(2))=Inf;
            W(z+(j-1)*n(2)-1,z+(j-2)*n(2))=Inf;
            W(z+(j-2)*n(2),z+(j-1)*n(2)-1)=Inf;
            W查看详情  

路径规划基于matlab蚁群算法栅格地图路径规划及避障含matlab源码2088期

一、蚁群算法及栅格地图简介随着机器人技术在诸多领域的应用,如机器人协作焊接、灾后搜救、军事、太空探索、深海勘探、家用和服务行业等,机器人的发展正向智能化方向延伸,要求其具有自组织、自学习、自适应等能力.机... 查看详情

路径规划基于matlab蚁群算法栅格地图路径规划及避障含matlab源码2088期

一、蚁群算法及栅格地图简介随着机器人技术在诸多领域的应用,如机器人协作焊接、灾后搜救、军事、太空探索、深海勘探、家用和服务行业等,机器人的发展正向智能化方向延伸,要求其具有自组织、自学习、自适应等能力.机... 查看详情

路径规划基于matlab蚁群优化遗传算法求解机器人栅格地图最短路径规划问题含matlab源码1581期(代码片段)

一、简介路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的环境中,按照一定的评价标准(如距离、时间、能耗等),寻找到一条从起始点到目标点的无碰撞路径,这里选取最短距离路径... 查看详情

路径规划基于matlabgui多种蚁群算法栅格地图路径规划含matlab源码650期(代码片段)

...tcolonyoptimization,ACO),又称蚂蚁算法,是一种用来寻找优化路径的机率型算法。它由MarcoDorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。遗传算法在模式识别、神经网络、机器学习、工业... 查看详情

路径规划基于蚁群算法栅格地图路径规划matlab(代码片段)

路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的环境中,按照一定的评价标准(如距离、时间、能耗等),寻找到一条从起始点到目标点的无碰撞路径,这里选取最短距离路径规划的评... 查看详情

路径规划基于matlab蚁群算法求解机器人栅格地图最短路径规划问题含matlab源码1618期(代码片段)

一、蚁群算法及栅格地图简介1蚁群算法1.1蚁群算法的提出蚁群算法(antcolonyoptimization,ACO),又称蚂蚁算法,是一种用来寻找优化路径的机率型算法。它由MarcoDorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻... 查看详情

三维路径规划基于matlaba_star算法机器人栅格地图三维路径规划含matlab源码190期

一、A_star算法简介0引言随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下... 查看详情

路径规划基于matlab遗传和模拟退火算法机器人路径规划含matlab源码1206期

一、遗传算法简介1引言2遗传算法理论2.1遗传算法的生物学基础2.2遗传算法的理论基础 查看详情

路径规划基于matlab麻雀算法求解机器人栅格地图最短路径规划问题含matlab源码1582期(代码片段)

一、简介路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的环境中,按照一定的评价标准(如距离、时间、能耗等),寻找到一条从起始点到目标点的无碰撞路径,这里选取最短距离路径... 查看详情

路径规划基于matlab蚁群算法求解机器人栅格地图最短路径规划问题含matlab源码1580期(代码片段)

一、简介路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的环境中,按照一定的评价标准(如距离、时间、能耗等),寻找到一条从起始点到目标点的无碰撞路径,这里选取最短距离路径... 查看详情

路径规划基于matlaba_star算法求解机器人栅格地图最短路径规划问题含matlab源码1388期

一、A_star算法简介1AStar算法及其应用现状进行搜索任务时提取的有助于简化搜索过程的信息被称为启发信息.启发信息经过文字提炼和公式化后转变为启发函数.启发函数可以表示自起始顶点至目标顶点间的估算距离,也可以表示自... 查看详情

路径规划基于matlabgui改进的遗传算法机器人避障路径规划含matlab703期(代码片段)

一、简介1遗传算法概述遗传算法(GeneticAlgorithm,GA)是进化计算的一部分,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法简单、通用,鲁棒性强,适... 查看详情

路径规划基于matlab灰狼算法机器人栅格地图最短路径规划含matlab源码2334期

⛄一、灰狼算法的厂房巡检机器人路径规划简介0引言近年来,我国各行各业的不断发展使相关工作流程得到了完善,其中巡检岗位是一个不可或缺的职位,尤其是在电厂、燃气厂房和煤矿等危险领域中的工作,更不能缺少巡检... 查看详情

毕设题目:matlab无人机三维路径规划

...+参考文献)1【三维路径规划】基于matlabAstar算法机器人栅格地图三维路径规划【含Matlab源码190期】2【三维路径规划】基于matlabAstar算法无人机三维路径规划(起终点障碍物可设置)【含Matlab源码1321期】3【三维路径规划】基... 查看详情

毕设题目:matlab智能算法vrp(车辆路径规划)

...景物流配送是目前物流发展的新趋势,在物流配送中,配送路径规划对于顾客的满意度以及经营总成本有相当大的影响。通过应用智能算法,实现了物流配送VRP的优化过程,建立的算法能在短时间内找到最佳车辆数及对应的最佳配送... 查看详情

常用的路径规划算法浅析

路径规划所谓路径规划,也就是在起点和终点之间找到一条连续的运动轨迹,在尽可能优化路径的同时避开环境中的障碍物。常用的路径规划算法有传统的基于图搜索算法、基于采样的路径规划算法,以及考虑动力学... 查看详情

路径规划基于matlab改进的帝国企鹅算法机器人栅格地图最短路径规划含matlab源码2388期

⛄一、帝企鹅算法简介目前,关于帝企鹅算法在国内外研究较少,在中对该算法进行了分析,并且与常见的粒子群算法、萤火虫算法进行了对比分析.帝企鹅从事各种活动,如狩猎、群体觅食,是群居性动物.每... 查看详情