精华内容
下载资源
问答
  • matlab栅格地图绘制

    2019-01-05 18:53:29
    matlab栅格地图绘制,介绍了相关matlab程序,用户可根据需要学习 是太阳能光伏发电系统(Solar power system)的简称,是一种利用太阳电池半导体材料的光伏效应,将太阳光辐射能直接转换为电能的一种新型发电系统,...
  • 一个180°半径10m的探测仪,探测栅格环境中的障碍物  </p>
  • matlab绘制栅格地图

    千次阅读 2019-09-25 13:52:29
    1 %创建具有障碍物的栅格地图 2 %矩阵中0代表黑色栅格 3 a = ones(20); 4 a(3,3:7)=0; 5 a(3:10,7)=0; 6 a(10,3:7)=0; 7 a(17,13:17)=0; 8 a(10:17,13)=0; 9 a(10,13:17)=0; 10 a(14,15)=0; 11 ...
     1 %创建具有障碍物的栅格地图
     2 %矩阵中0代表黑色栅格
     3 a = ones(20);
     4 a(3,3:7)=0;
     5 a(3:10,7)=0;
     6 a(10,3:7)=0;
     7 a(17,13:17)=0;
     8 a(10:17,13)=0;
     9 a(10,13:17)=0;
    10 a(14,15)=0;
    11 
    12 b = a;
    13 %disp(a(end,end));
    14 b(end+1,end+1) = 0;
    15 %disp(b);
    16 
    17 colormap([0 0 0;1 1 1]);  % 创建颜色
    18 %disp(size(a));
    19 pcolor(0.5:size(a,2)+0.5,0.5:size(a,1)+0.5,b); % 赋予栅格颜色
    20 set(gca,'XTick',1:size(a,1),'YTick',1:size(a,2));  % 设置坐标
    21 axis image xy;  % 沿每个坐标轴使用相同的数据单位,保持一致

    转载于:https://www.cnblogs.com/yangmingustb/p/8710934.html

    展开全文
  • matlab构建栅格地图绘图思路

    千次阅读 2018-11-18 15:10:00
    matlab构建栅格地图绘图思路 近来因研究需要,调研并思考了栅格地图的生成方法,暂时总结以备不时之需。 栅格的建立最需要注意栅格粒度的问题,即根据需要调整栅格的边长,目前有两种思路一种是固定栅格边长为坐标轴...

    matlab构建栅格地图绘图思路

    近来因研究需要,调研并思考了栅格地图的生成方法,暂时总结以备不时之需。

    栅格的建立最需要注意栅格粒度的问题,即根据需要调整栅格的边长,目前有两种思路一种是固定栅格边长为坐标轴的单位长度;另一种是固定地图单位为固定长度,如“米”,根据需要改变栅格边长。

    栅格单位固定,坐标单位与栅格边长相等。

    此种思路优势是坐标和栅格对应,程序好处理一些,比较直观,可以使用pcolor或者imagesc函数。

    a = rand(50,50);
    imagesc(a)
    axis equal;
    grid on
    colormap([1 1 1;0 0 0]);

    坐标轴单位固定,栅格边长变化

    思路为使用MATLAB的fill函数,简单程序如下。

    a = [0.5,0.5];d=0.5;
    tic
    fill([a(1)-d,1,1,0],[a(2)-d,0,1,1],'k');
    hold on
    fill([1,2,2,1],[1,1,2,2],[0 0 0]);
    toc

    转载于:https://www.cnblogs.com/jingshikongming/p/9978002.html

    展开全文
  • matlab栅格地图转化为邻接矩阵

    千次阅读 2018-11-08 22:44:40
    function D=G2D(G) %邻接矩阵就是每个栅格之间的距离 [m,n]=size(G); %返回矩阵G的尺寸 并将行返回到m中,列返回到n中 N=m*n; %元素个数 D=zeros(N,N); %生成一个n*n的0矩阵 for Dx=1:N for Dy=Dx:N x1=ceil(Dx...
    function D=G2D(G) %邻接矩阵就是每个栅格之间的距离
    [m,n]=size(G); %返回矩阵G的尺寸 并将行返回到m中,列返回到n中
    N=m*n; %元素个数   
    D=zeros(N,N); %生成一个n*n的0矩阵
    for Dx=1:N               
        for Dy=Dx:N       
            x1=ceil(Dx/n);%返回不小于x的最小整数值
            y1=mod(Dx,n); %Dx对n取余
            if y1==0
                y1=n;
            end
            x2=ceil(Dy/n);
            y2=mod(Dy,n);
            if y2==0
                y2=n;
            end
          if Dx==Dy
              D(Dx,Dy)=inf;
          elseif (G(x1,y1)==1) || (G(x2,y2)==1);
                D(Dx,Dy)=inf;
          else
                if (mod(Dx,n) ==1)
                    if(Dx==1)
                        if (Dy-Dx==1) || (Dy-Dx==n)
                            D(Dx,Dy)=1;
                        elseif (Dy-Dx==n+1)
                            D(Dx,Dy)=sqrt(2);
                        else
                            D(Dx,Dy)=inf;
                        end
                    elseif(Dx==N-n+1)
                        if (Dy-Dx==1) || (Dx-Dy==n)
                            D(Dx,Dy)=1;
                        elseif (Dx-Dy==n-1)
                            D(Dx,Dy)=sqrt(2);
                        else
                            D(Dx,Dy)=inf;
                        end
                    else
                        if (Dy-Dx==1) || (Dy-Dx==n) || (Dx-Dy==n)
                            D(Dx,Dy)=1;
                        elseif (Dx-Dy==n-1) || (Dy-Dx==n+1)
                            D(Dx,Dy)=sqrt(2);
                        else
                            D(Dx,Dy)=inf;
                        end
                    end
                    
                elseif mod(Dx,n) ==0
                    if(Dx==n)
                        if (Dx-Dy==1) || (Dy-Dx==n)
                            D(Dx,Dy)=1;
                        elseif (Dy-Dx==n-1)
                            D(Dx,Dy)=sqrt(2);
                        else
                            D(Dx,Dy)=inf;
                        end
                    elseif(Dx==N)
                        if (Dx-Dy==1) || (Dy-Dx==n)
                            D(Dx,Dy)=1;
                        elseif (Dy-Dx==n+1)
                            D(Dx,Dy)=sqrt(2);
                        else
                            D(Dx,Dy)=inf;
                        end
                    else
                        if (Dx-Dy==1) || (Dy-Dx==n) || (Dx-Dy==n)
                            D(Dx,Dy)=1;
                        elseif (Dy-Dx==n-1) || (Dx-Dy==n+1)
                            D(Dx,Dy)=sqrt(2);
                        else
                            D(Dx,Dy)=inf;
                        end
                    end
                    
                else
                    if (Dx-Dy==1) || (Dy-Dx==1) || (Dy-Dx==n) || (Dx-Dy==n)
                        D(Dx,Dy)=1;
                    elseif (Dx-Dy==n+1) || (Dy-Dx==n+1) || (Dy-Dx==n-1) || (Dx-Dy==n-1)
                        D(Dx,Dy)=sqrt(2);
                    else
                        D(Dx,Dy)=inf;
                    end
                end
          end
        end
    end
    for i=1:N
        for j=i:N
            if(i~=j)
                D(j,i)=D(i,j);
            end
        end
    end

            传入0/1矩阵形式的栅格地图(如下图中的[1 0 0;0 0 0;0 0 0]矩阵<右图,黑色为障碍物1>),将其转换为如下图所示的邻接矩阵,1表示障碍物,不可达;0表示没有被占据,可以通过。则1号与所有元素都不可达为inf,并且将自身与自身也设为不可达:

     

    其在蚁群算法路径规划中的应用可参考https://blog.csdn.net/KantsWang/article/details/83753515

    代码均为他人代码,只作学习参考之用。

     

     

    展开全文
  • 1 使用MATLAB实现地图栅格化效果图如下所示图1图2图1中的黑色栅格为障碍物栅格,白色栅格为可行走栅格(非障碍物栅格),黑色栅格用0来表示,白色栅格用1来表示2 栅格环境的environment.txt的构建1 0 1 1 1 1 1 0 1 1 ...

    1    使用MATLAB实现地图栅格化

    效果图如下所示

    图1

    图2

    图1中的黑色栅格为障碍物栅格,白色栅格为可行走栅格(非障碍物栅格),黑色栅格 用0来表示,白色栅格用1来表示

    2    栅格环境的environment.txt的构建

    1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 1 1 1

    1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 0

    1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 0 1 1

    0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1

    1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 1 1 1

    0 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0

    1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 1 0 1

    1 1 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 0

    1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1

    1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1

    1 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 1 1

    1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1

    1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1

    0 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1

    1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

    0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0

    1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1

    1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 0 1

    1 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 1 1

    1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 1 1

    这是就是图1中的栅格地图环境,1代表白色栅格,0代表黑色栅格。你可以手动编辑这样一个环境文件,也可以使用matlab的随机函数rand实现

    a = rand(20)>0.35

    其中0.35表示的黑色栅格总数占据全部栅格综述的百分比。即栅格环境中障碍物栅格(黑色栅格数)为35%,你可以自己随意定制。

    2    构建栅格环境的代码部分

    a = load('environment.txt');%blacb--barrier occputy 35%.

    % a = load('environment6060.mat', 'k');

    % a = a.k;

    n = size(a,1);

    b = a;

    b(end+1,end+1) = 0;

    figure;

    colormap([0 0 0;1 1 1])

    pcolor(b); % 赋予栅格颜色

    set(gca,'XTick',10:10:n,'YTick',10:10:n); % 设置坐标

    axis image xy

    % displayNum(n);%显示栅格中的数值.

    text(1,n+1.5,'START','Color','red','FontSize',10);%显示start字符

    text(n+1,1.5,'GOAL','Color','red','FontSize',10);%显示goal字符

    hold on

    %pin strat goal positon

    scatter(1+0.5,n+0.5,'MarkerEdgeColor',[1 0 0],'MarkerFaceColor',[1 0 0], 'LineWidth',1);%start point

    scatter(n+0.5,1+0.5,'MarkerEdgeColor',[0 1 0],'MarkerFaceColor',[0 1 0], 'LineWidth',1);%goal point

    hold on

    3    如图2所示的,赋予栅格数学意义,即每一位栅格数列化

    因为栅格是被坐标化的,所以只需要将数列的值,以坐标(x,y)之间完成转化即可,我通过displayNum函数实现了这个简单的功能,代码如下:

    function displayNum(n)

    %输入参数

    %矩阵维数----n

    %无输出

    %%

    x_text = 1:1:n*n;%产生1-400的数值.

    test_num = 32;

    %%

    %将数值在栅格图上显示出来

    for i = 1:1:n*n

    [row,col] = ind2sub(n,i);

    [array_x,array_y] = arry2orxy(n,row,col);

    text(array_x+0.2,array_y+0.5,num2str(x_text(i)));

    end

    %验证栅格数值与行列值是否对应

    [row,col] = ind2sub(n,test_num);

    [array_x,array_y] = arry2orxy(n,row,col);

    fprintf('the value %d is on array_x = %d,array_y = %d\n',test_num,array_x,array_y);%显示校对信息,供人工检验.

    end

    主要通过ind2sub函数将数列和栅格的行列值换算,再通过arry2orxy函数完成,数列到栅格的数据化转化。ind2sub函数是matlab自带的通过doc ind2sub查看函数的具体使用方法。arry2orxy函数是自己编写的主要实现的是矩阵行列的坐标的转换,比较简单。

    至此,你可以在栅格环境中,验证你自己的算法了,例如人工鱼群算法,蚁群算法等等在路径规划领域的应用了。

    展开全文
  • matlab中新的生成栅格地图的方法

    千次阅读 2019-10-05 22:52:43
    %创建具有障碍物的栅格地图%矩阵中0代表黑色栅格a = zeros(20);a(6:10,5:9)=1;a(11:15,14:18)=1;b = a;%disp(a(end,end));b(end+1,end+1) = 0;b=b';% disp(b);colormap([1 1 1;0 0 0]); % 创建颜色%disp(size(a));% ...
  • 基于栅格地图——遗传算法的机器人最优路径规划采用栅格对机器人的工作空间进行划分,再利用优化算法对机器人路径优化,是采用智能算法求最优路径的一个经典问题。目前,采用蚁群算法在栅格地图上进行路径优化取得...
  • Matlab与ROS----栅格地图

    2020-05-16 15:48:52
    一、二值栅格地图 0表示自由空间 false 1表示障碍物 true simple.map true true true true true true true true true true true true true true true true true true true true true true true true true true true ...
  • 利用遗传算法处理栅格地图的机器人路径规划的难点主要包括:1保证路径不间断,2保证路径不穿过障碍。用遗传算法解决优化问题时的步骤是固定的,就是种群初始化,选择,交叉,变异,适应度计算这样,那么下面我就说...
  • 在数字化描述了环境地图以后,运用路径规划算法在建立好的栅格地图中找到一条两节点的路径,其算法给出的只是相应的节点数字量,如何更直观的在栅格地图中画出这条路径呢?下面我们就实现一下在栅格地图中画出我们...
  • MATLAB绘制栅格

    2017-10-26 16:11:55
    MATLAB绘制栅格图。模拟室内环境地图,用于机器人定位和路径规划
  • Matlab中将一幅图片做成栅格地图

    千次阅读 2019-08-05 22:31:39
    1、选取一张可以作为地图的图片 这个地图可以用来做路径规划等用途。如图任选一张,这里以海岛为例,因为岛屿可以视为障碍物,其余海域则为船舶航行区域,陆地也是一样。 虽然地图选好了,但这张图是有一点瑕疵...
  • 路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的环境中...我这里用的是栅格法,其原理是将周围环境看成一个二维平面,将平面分成一个个等面积大小的具有二值信息的栅格,每个栅格中存储着周围环境信息量
  • 一、简介 1 粒子群算法的概念 粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的...
  • 基于matlab粒子群融合遗传算法求解栅格地图最短路径 二、源代码 clc; close all clear load('data4.mat') figure(1)%画障碍图 hold on S=(S_coo(2)-0.5)*num_shange+(S_coo(1)+0.5);%起点对应的编号 E=(E_coo(2)-0.5...
  • 目前,采用蚁群算法在栅格地图上进行路径优化取得比较好的效果,而利用遗传算法在栅格地图上进行路径优化在算法显得更加难以实现。 利用遗传算法处理栅格地图的机器人路径规划的难点主要包括:1保证路径不间断,2...
  • 用遗传算法解决优化问题时的步骤是固定的,就是种群初始化,选择,交叉,变异,适应度计算这样,那么下面我就说一下遗传算法求栅格地图中机器人路径规划在每个步骤的问题、难点以及解决办法。 1.1 种群初始化 首先要...
  • 路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的...我这里用的是栅格法,其原理是将周围环境看成一个二维平面,将平面分成一个个等面积大小的具有二值信息的栅格,每个栅格中存储着周围环境信息量,下
  • 目前,采用蚁群算法在栅格地图上进行路径优化取得比较好的效果,而利用遗传算法在栅格地图上进行路径优化在算法显得更加难以实现。 利用遗传算法处理栅格地图的机器人路径规划的难点主要包括:1保证路径不间断,2...
  • 基于matlab粒子群融合遗传算法求解栅格地图最短路径 二、源代码 clc; close all clear load('data4.mat') figure(1)%画障碍图 hold on S=(S_coo(2)-0.5)*num_shange+(S_coo(1)+0.5);%起点对应的编号 E=(E_coo(2)-0.5...
  • 一、简介 遗传算法的应用步骤 遗传算法GA是基于进化和遗传理论而提出来的全局寻优方法。 简单遗传算法解决问题的基本步骤如下: (1)初始化:随机生成N个个体作为初始群体P(0),该种群就是目标函数可行解的一个集合...
  • 2 算法的基本原理 二、源代码 function varargout = main_GUI_xu(varargin) % MAIN_GUI_XU MATLAB code for main_GUI_xu.fig % MAIN_GUI_XU, by itself, creates a new MAIN_GUI_XU or raises the existing % ...
  • 一、简介 路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的...我这里用的是栅格法,其原理是将周围环境看成一个二维平面,将平面分成一个个等面积大小的具有二值信息的栅格,每个栅格中存储着周围环境
  • MATLAB 实现,基于栅格地图的Dijkstra算法路径规划。
  • 论文中将地图中的路径点用State表示,每一个State包含如下信息: Backpointer: 指向前一个state的指针,指向的state为当前状态的父辈,当前state称为指针指向state的后代,目标state无Backpointer。(路径搜索完毕...
  • 目前,采用蚁群算法在栅格地图上进行路径优化取得比较好的效果,而利用遗传算法在栅格地图上进行路径优化在算法显得更加难以实现。利用遗传算法处理栅格地图的机器人路径规划的难点主要包括:1保证路径不间断,2保证...
  • 利用遗传算法处理栅格地图的机器人路径规划的难点主要包括:1保证路径不间断,2保证路径不穿过障碍。用遗传算法解决优化问题时的步骤是固定的,就是种群初始化,选择,交叉,变异,适应度计算这样,那么下面我就说...
  • 栅格法建立环境地图MATLAB实现

    万次阅读 多人点赞 2019-05-09 15:45:28
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%建立环境地图%%%%%%%%%%%%%%%%%%%%%%%%%%%% function DrawMap01(map) n = size(map); step = 1; a = 0 : step :n(1); axis([0 n(2) 0 n(1)]); %设置地图横纵尺寸 set(gca,'xtick',a,'...

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

matlab栅格地图

matlab 订阅