利用Matlab快速构建栅格地图
一、写在前面
你好,我是禅墨!
{% meting “1888915574” “netease” “song” “autoplay” “volume:0.6” “theme:#4997da” %}
在这之后,会陆续出路径规划系列,重点在几大算法的Matlab的仿真。学习参考来自黎万洪老师,让我们共同进步,加油!
栅格图像,也称光栅图像,是指在空间和亮度上都已经离散化了的图像。我们可以把一幅栅格图像考虑为一个矩阵,矩阵中的任一元素对应于图像中的一个点,而相应的值对应于该点的灰度级,数字矩阵中的元素叫做像素。
二、地图分类
1.尺度地图:
具有真实的物理尺寸,如栅格地图、特征地图、点云地图等,常用于地图构建、定位、SLAM、小规模路径规划。
2.拓扑地图:
不具备真实的物理尺寸,只表示不同地点的连通关系 和距离,如铁路网。
3.语义地图:
加标签的尺度地图,常用于人机交互,如百度地图。
三、栅格地图优势
- 可以将任意形状轮廓的地图,用足够精细的栅格进行绘制
- 每一栅格,可以通过不同颜色表征不同含义
- 基于栅格地图进行路径规划有横、纵、斜三个规划方向,对与室内低速度机器人完全可以按照规划路径行走;对于中高速机器人,可以考虑将规划路径平滑处理,适应非完全约束系统。
四、核心函数及思想
- colormap: 为栅格地图创建自定义颜色
- sub2ind: 将行列索引转换为线性索引(自上而下,自左往右)
- ind2sub:将线性索引转换为行列索引
- image:利用colormap建立的颜色图,将数组信息显示为图像
五、Matlab程序及注释
% 利用Matlab快速绘制栅格地图
clc
clear
close all
%% 构建颜色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;
禅墨云:chanmoyun.gitee.io