《Motion Planning》【0】格栅地图绘制

个人学习使用仅供参考

1.Function_map.m

%Function_map返回的是一个随机的格栅地图 ipnut格式为(行, 列,开始的位置--可以看成是一个vector后面同理,终点位置, 障碍物的位置)
%返回的是一个设置好上述参数的map
function field = Function_map(rows, cols, start_sub, end_sub)
field = ones(rows, cols);

%起始点
field(start_sub(1), start_sub(2)) = 4; % start_sub(1), start_sub(2)是起始点的行、列存到start_sub(容器)中,4对应的起始点的颜色

%终点
field(end_sub(1), end_sub(2)) = 5; % end_sub(1), end_sub(2)是终点的行列、存到end_sub(容器)中,5对应的起始点的颜色

%障碍物写法1 这里有个问题就是当传入9 13 14的时候10也会被填充
%field(obs_sub(:, 1), obs_sub(:, 2)) = 2; % 把障碍物的行存到obs_sub数组中的第1列,把障碍物的列存到obs_sub数组中的第2列, 设置对应的颜色2黑色

%障碍物写法2
%随机障碍物
rand_r = randi([1, rows], 100, 1);
rand_c = randi([1, cols], 100, 1);
obs_sub = [rand_r, rand_c];
obs_r = obs_sub(:, 1);
obd_c = obs_sub(:, 2);
obs_ind = sub2ind([rows cols], obs_r, obd_c);
field(obs_ind) = 2;
%固定障碍物
%obs_row = obs_sub(:, 1);
%obs_col = obs_sub(:, 2);
%obs = sub2ind([rows cols], obs_row, obs_col);
%field(obs) = 2;

%第一列    第二列
%  2         3      这是第1个obs_sub坐标(2, 3) 对应的ind坐标10
%  3         3      这是第2个obs_sub坐标(3, 3) 对应的ind坐标11
%  4         3      这是第3个obs_sub坐标(4, 3) 对应的ind坐标12

%************************************************构建数组的栅格图************************************************
%这里的所有不能放在上面
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-青色-动态规划的路径
        0 0 1];              % 8-蓝色

% 构建颜色MAP图
colormap(cmap);

% 绘制图像
image(1.5, 1.5, field);
grid on;
hold on;
set(gca, 'gridline', '-', 'gridcolor', 'k', 'linewidth', 2, 'GridAlpha', 0.5);
set(gca,'xtick', 1:cols + 1, 'ytick', 1:rows + 1);
set(gca, 'XAxisLocation', 'top')
axis image;

% 散点图可以当做是动态障碍物
%scatter(1.5, 3.5, 300, 'filled', MarkerEdgeColor='blue', MarkerFaceColor='red');

end

2.Test_main.m

clc;
clear;
close all;
rows = 20; % 行
cols = 20; % 列
sz = [rows cols];
[startpos(1), startpos(2)] = ind2sub(sz, 20); % 起始点位置
[endpos(1), endpos(2)] = ind2sub(sz, 381); % 终点位置
%[obspos(:, 1), obspos(:, 2)] = ind2sub(sz, [27 47 28 45 45 59 57 70 86 89]); % 障碍物位置
%field = Function_map(rows, cols, startpos, endpos, obspos); % 调用function
field = Function_map(rows, cols, startpos, endpos); % 调用function

3.文件结构

4.结果(障碍物是随机的)

测试文件Test_main.m运行

 


OVER 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HenceDang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值