传统栅格地图的构建和自定义地图栅格化

传统栅格地图构建是指,自定义一张栅格地图,障碍物随机或者自定义位置;

自定义地图栅格化是指,截取一张实际地图,将这张实际地图栅格化用于路径规划。

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;

结果如图:

最近感情上经历很多变故,越来越觉得人应该珍惜生活留给我们的任何东西。在此祝愿大家生活愉快,学业事业顺利~

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值