传统栅格地图构建是指,自定义一张栅格地图,障碍物随机或者自定义位置;
自定义地图栅格化是指,截取一张实际地图,将这张实际地图栅格化用于路径规划。
1. 传统栅格地图构建
直接上代码~
clear all;
clc;
cmap = [1 1 1; ... % 1-白色,可行区域
0 0 0; ... % 2-黑色,静态障碍物
1 0 0; ... % 3-红色,动态障碍物
1 1 0; ... % 4-黄色,起始点
0 1 0; ... % 5-绿色,目标点
0 1 1; ... % 6-青蓝色,全局路径
0 0 1]; % 7-蓝色,局部路径
% 创建颜色图
colormap(cmap);
% 构建一个double数组
rows = 75;
cols = 150;
KK = ones(rows, cols);
obsRate = 0.3;
obsNum = floor(rows*cols*obsRate); % 向下取整
obsIndex = randi([1,rows*cols], obsNum, 1); % 从区间[1,rows*cols]的均匀离散分布中得到整数,构成obsNum行1列的数组
KK(obsIndex) = 2; % field中索引为obsIndex的设置为2,即黑色障碍物
image(KK)
结果是随机的,这里上一张结果图
上述并未指定起始点和目标点,简单说下
startind = 1; % 起始点索引
goalind = rows*cols - 1; % 目标点索引
KK(startind) = 4; % 起始点颜色图索引
KK(goalind) = 5;% 目标点颜色图索引
image(KK);
2. 自定义地图栅格化
地图是这个专栏之前制作的,网页百度地图截取之后灰度化二值化得到的png图像
%% 初始化
clear all;
clear;
clc;
tic; % 计时
%% 灰度地图二值化
I=imread('地图灰度图二值化.png'); % 导入二值化灰度图
figure;
imshow(I);
%% a、b为灰度图尺寸圆整后的值,自己设定
a=30;
b=60;
l=1; % 栅格边长
B = imresize(I,[a/l b/l]); % resize原图尺寸
figure;
imshow(B);
K=double(floor(B/255)); % 将uint灰度图转化为double灰度图,uint.255对应double.1
figure;
imshow(K);
%% 绘制栅格线
% 绘制颜色图
cmap = [0 0 0; ... % 1-黑色,障碍物
1 1 1]; % 2-白色,可行区域
% cmap = [0 0 0; ... % 1-黑色,障碍物
% 1 1 1; ... % 2-白色,可行区域
% 1 0 0; ... % 3-红色,动态障碍物
% 1 1 0; ... % 4-黄色,起始点
% 0 1 0; ... % 5-绿色,目标点
% 0 1 1; ... % 6-青蓝色,全局路径
% 0 0 1]; % 7-蓝色,局部路径
colormap(cmap);
L = K+1;
image(1.5, 1.5, L); % 前两个参数用来调整颜色图映射在栅格图上的位置
grid on; % 显示网格
set(gca, 'gridline', '-', 'gridcolor', 'k', 'linewidth', 2); % 设置网格线,颜色黑色,线宽2
set(gca, 'xtick', 1:b+1, 'ytick', 1:a+1);
axis image;
结果如图:
最近感情上经历很多变故,越来越觉得人应该珍惜生活留给我们的任何东西。在此祝愿大家生活愉快,学业事业顺利~