STM32
直播中

youyoulan

12年用户 1092经验值
私信 关注
[问答]

基于matlab的栅格地图该怎样去构建呢

什么是栅格地图呢?
基于matlab的栅格地图该怎样去构建呢?

回帖(1)

杨军

2021-11-19 09:48:49
  什么是栅格地图
  栅格地图:即以机器人出生点为中心,x轴和y轴的分辨率为单个格子大小,当x轴分辨率=y轴分辨率时,则每个格子为一个正方形,分辨率越小则表示地图精度越高,比如一个格子大小为1cm × 1cm,那么机器人定位精度就是1cm。可以想象成一个巨大的网把一个地面罩住,网面碰到东西则认为是障碍物/墙,没有碰到障碍物则可以认为是空地。
  那么每个格子如何区分自己的状态是障碍物/墙,还是空地呢?这里可以赋予每个格子不同的值,比如0代表空地,1代表墙。这个值的内容也可以扩展,比如2代表已经走过,3代表未被走过等等。
  基于matlab构建栅格地图
  % MATLAB 绘制栅格地图的核心函数和思想
  % colormap:为栅格地图创建自定义颜色。如黄色栅格代表的起点,红色栅格代表的终点,黑色栅格代表的障碍物
  % sub2ind:将行列索引转为线性索引 ind2sub:将线性索引转为行列索引
  % image:利用colormap建立的颜色图,将数组信息显示为图像
  clc
  clear
  close all
  cmap = [1 1 1; 。.. % 1-白色-空地
  0 0 0; 。.. % 2-黑色-静态障碍
  1 0 0; 。.. % 3-红色-动态障碍
  1 1 0; 。.. % 4-黄色-起始点
  1 0 1; 。.. % 5-品红-目标点
  0 1 0; 。.. % 6-绿色-到达目标点的规划路径
  0 1 1]; % 7-青色-动态规划的路径
  % 构建颜色map图
  colormap(cmap);
  %% 构建栅格地图场景
  % 栅格地图界面大小:行数和列数
  rows = 10;
  cols = 20;
  % 定义栅格地图的全域,并初始化空白地图
  field = ones(rows,cols);
  % 障碍物区域
  obsRate = 0.3;
  obsNum = floor(rows * cols * obsRate); % 取整
  obsIndex = randi([1,rows*cols],obsNum,1);
  field(obsIndex) = 2;
  % 起始点和目标点
  startPos = 2;
  goalPos = rows * cols - 2;
  field(startPos) = 4;
  field(goalPos) = 5;
  %% 画栅格图
  image(1.5,1.5,field);
  grid on;
  set(gca , ‘gridline’ , ‘-’ , ‘gridcolor’ , ‘k’ , ‘linewidth’ , 2 , ‘GridAlpha’ , 0.5);
  set(gca , ‘xtick’ , 1 : cols + 1,‘ytick’,1 : rows + 1);
  axis image;
  这样生成出来的栅格地图是10*20随机障碍物的,满足我们在这个地图上验证路径规划算法
  
  在C语言中验证算法时,可以用二维数组承接这个field矩阵中的数据
  /*
  * 1-白色-空地
  * 2-黑色-静态障碍
  * 3-红色-动态障碍
  * 4-黄色-起始点
  * 5-品红-目标点
  * 6-绿色-到达目标点的规划路径
  * 7-青色-动态规划的路径
  */
  const int kRows = 10;
  const int kCols = 20;
  uint8_t mymap[kRows][kCols] = {
  {1, 1 ,1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2},
  {4, 1 ,1, 2, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2},
  {1, 1 ,1, 2, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2},
  {1, 1 ,2, 1, 1 ,1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1},
  {1, 1 ,1, 2, 2 ,1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2},
  {1, 1 ,2, 1, 1 ,2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1},
  {2, 1 ,1, 1, 1 ,1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1},
  {2, 1 ,1, 2, 1 ,1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 5},
  {1, 1 ,2, 1, 1 ,1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1},
  {2, 2 ,1, 1, 1 ,1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1},
  };
举报

更多回帖

发帖
×
20
完善资料,
赚取积分