尺度地图:具有真实的物理尺寸,如栅格地图、特征地图、点云地图,常用于地图构建、定位、slam、小规模路径规划。
拓扑地图:不具备真实的物理尺寸,只表示不同地点的联通关系和距离,如铁路网。
语义地图:加标签的尺度地图,常用于人机交互。
栅格地图用于路径规划的优势:
1、可以将任意形状轮廓的地图,用足够精细的栅格进行绘制。
2、每一个栅格,可以通过不同的颜色表征不同的含义,如黑色代表障碍物、黄色代表起点、红色代表终点。
3、基于栅格地图进行路径规划有横、纵、斜三个规划方向,对于室内低速机器人可以完全按照规划路径走;对于中高速机器人,可以考虑将路径规划进行平滑处理,以适用于非完全约束系统。
MATLAB绘制栅格地图的几个核心函数及思想:
1、colormap:为栅格地图创建自定义颜色。
2、sub2ind:将行列索引转换为线性索引。对于10行10列的栅格地图,行从左上角自上而下排序,列从左上角自左而右排序。相反,ind2sub则将线性索引转为行列索引。
3、为了在栅格地图呈现随机障碍物的效果,可以设障碍物出现频率数值,根据该数据在所有栅格中生成随机数,从而确定障碍物栅格。
4、image:利用colormap建立的颜色图,将数组信息显示为图像。
%% 构建颜色map图
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;