路径规划(一):使用Matlab快速绘制栅格地图

2023-05-16

目录

    • 一、Matlab快速绘制栅格地图
      • 1、几种常用的地图形式:
        • 1.1、尺度地图:
        • 1.2、拓扑地图:
        • 1.3、语义地图:
      • 2、栅格地图用于路径规划的优势:
      • 3、matlab绘制栅格地图的核心函数及思想:
        • 3.1、colormap函数:
        • 3.2、sub2ind函数:
        • 3.3、ind2sub函数:
        • 3.4、为了在栅格地图呈现随机障碍物的效果,可以设置障碍物出现频率数值,根据该数据在所有栅格中生成随机数,从而确定障碍物栅格。
        • 3.5、image函数:
      • 4、具体例子:
      • 4.1、利用Matlab快速绘制栅格地图matlab代码:
      • 4.2、运行结构:
      • 4.3、具体分析

一、Matlab快速绘制栅格地图

声明:本文是学习古月居~基于栅格地图的机器人路径规划算法指南 • 黎万洪 后写的笔记,好记性不如烂笔头!方便自己日后的巩固与复习,这个教程讲的很高,值得推荐!

1、几种常用的地图形式:

1.1、尺度地图:

具有真实的物理尺度,如:栅格地图、特征地图、点云地图,常用于地图构建、定位、SLAM、小规模路径规划。

1.2、拓扑地图:

不具备真实的物理尺度,只表示不同地点的连接关系和距离,如铁路网。

1.3、语义地图:

加标签的尺度地图,常用于人机交互。

2、栅格地图用于路径规划的优势:

①、可以将任意形状轮廓的地图,用足够精细的栅格进行绘制;

②、每一个栅格,可以通过不同颜色表示不同含义,如黑色代表障碍物、黄色代表起点、红色代表终点;

③、基于栅格地图进行路径规划有横、纵、斜三个规划方向。对应室内低速机器人可以完全按照路径行走;对于中高速机器人,可以考虑将路径进行平滑处理,以适用于非完全约束系统。

3、matlab绘制栅格地图的核心函数及思想:

3.1、colormap函数:

为栅格地图创建自定义颜色。如黄色栅格代表起点、红色为终点。

3.2、sub2ind函数:

将行列索引转为线性索引。对于右图栅格地图,10行1列,行从左上角自上而下排序,列从左上角自左向右排序。

3.3、ind2sub函数:

与sub2ind相反,是将线性索引转为行列索引。

3.4、为了在栅格地图呈现随机障碍物的效果,可以设置障碍物出现频率数值,根据该数据在所有栅格中生成随机数,从而确定障碍物栅格。

3.5、image函数:

利用colormap建立的颜色图,将数组信息显示为图像。

4、具体例子:

4.1、利用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 = 10; 

% 定义栅格地图全域,并初始化空白区域
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;

4.2、运行结构:

4.3、具体分析

1、

clc
clear
close all

clc:清除命令窗口的内容,对工作环境中的全部变量无任何影响
close:关闭当前的Figure窗口
close all:关闭所有的Figure窗口
clear:清除工作空间的所有变量
clear all:清除工作空间的所有变量,函数,和MEX文件

2、自定义构建颜色MAP图

%% 构建颜色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图值

3、colormap构建颜色MAP图

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

4、构建栅格地图场景:大小

%% 构建栅格地图场景
% 栅格界面大小:行数和列数
rows = 10;
cols = 10; 

5、定义栅格地图全域,并初始化空白区域

% 定义栅格地图全域,并初始化空白区域
field = ones(rows, cols);

将栅格图全设置为白色

6、障碍物区域

% 障碍物区域
obsRate = 0.3;
obsNum = floor(rows*cols*obsRate);
obsIndex = randi([1,rows*cols],obsNum,1);
field(obsIndex) = 2;

obsRate = 0.3;%障碍物占比率

obsNum = floor(rowscolsobsRate);%计算障碍物个数;

obsIndex = randi([1,rows*cols],obsNum,1);%随机设置障碍物

得到障碍物的区域

7、起始点和目标点

起始点和目标点要定义在障碍物后面,不然可能会和障碍物冲突

% 起始点和目标点
startPos = 2;
goalPos = rows*cols-2;
field(startPos) = 4;
field(goalPos) = 5;

startPos = 2; &起点
goalPos = rows*cols-2;%终点
field(startPos) = 4; %起点为黄色
field(goalPos) = 5; %终点为红色

8、画栅格图

%% 画栅格图
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;

image(1.5,1.5,field);%画出颜色图

grid on;% 画出网格

set(gca,‘gridline’,’-’,‘gridcolor’,‘k’,‘linewidth’,2,‘GridAlpha’,0.5); % 设置网格为:网格线实线、颜色黑色、线宽2、透明度0.5;

set(gca,‘xtick’,1:cols+1,‘ytick’,1:rows+1); % 设置长宽高为一样~正方形
axis image;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路径规划(一):使用Matlab快速绘制栅格地图 的相关文章

  • typora修改偏好设置不生效/无法修改偏好设置/偏好设置被重置的解决方法

    原因 之前bata版本过期 许多人都尝试修改电脑时间来继续使用 因此对 profile data这个文件的权限设置不正确 步骤 电脑勾选显示隐藏文件 C Users 电脑名 AppData Roaming Typora 选择时间排序 找到该
  • 单片机控制小车前进转弯

    1 小车前进 实现方法 xff1a 四个电机同时向前 xff08 小车后退同理 xff09 include lt AT89X51 H gt 定义小车驱动模块输入IO口 sbit IN1 61 P1 0 右1电机 高电平前进 sbit IN2
  • Java线上应用故障排查之一:高CPU占用

    一个应用占用CPU很高 xff0c 除了确实是计算密集型应用之外 xff0c 通常原因都是出现了死循环 xff08 友情提示 xff1a 本博文章欢迎转载 xff0c 但请注明出处 xff1a hankchen xff0c http www
  • 树莓派3B安装win11操作系统-成功版

    三个注意事项 事前准备永恒的决心成功 61 失败 事前准备 1 树莓派3B主板及电源连接 xff1b 2 HDMI的显示器 xff1b 3 USB的键盘鼠标 xff0c 或者有USB连接器的键盘鼠标 永恒的决心 1 其他安装过程 xff0c
  • 树莓派3B+安装Android 系统

    试水在树莓派3B 43 上安装Android 系统 xff08 完整的安卓 xff0c 非Adroid IOT xff0c 因为还不支持 xff09 xff0c 受到了一个小哥安装成功的鼓舞 xff08 带度盘资源 xff1a https
  • WinDbg 的入门经历

    WinDbg 的入门经历 WinDbg 是一款非常好用的调试工具 xff0c 针对于在win上的程序都有很好的调试效果 xff0c 相信玩逆向工程 Net 开发的同学都很熟悉 起因 在调试UCOS操作系统在windows上的仿真问题遇到的多
  • 目标检测网络中的 bottom-up 和 top-down理解

    看目标检测网络方面的论文时 xff0c 出现了一组对比词汇 xff1a bottom up和top down xff0c 查了一些资料 xff0c 结合个人理解 xff0c 得到的看法是 xff1a top down 顾名思义是自上而下进行
  • 2021.08.26学习内容 Win10+GeForce GTX1650安装NVIDIA显卡驱动及CUDA11.4+cuDNN8.2

    之前主要使用Ubuntu系统 xff0c 但是个人笔记本更多使用windows 为了方便跑一些pytorch的小代码 xff0c 所以想在windows配置一下相关环境 xff0c 达到调用GPU运算的目的 记录也是为了自己以后有安装需求少
  • vscode调试webpack-dev-server项目

    先上结果 vscode下载debugger for chrome 插件 创建launch json 添加的时候选择Chrome Launch会自动生成chrome调试模板 xff0c 主要是要加上 34 preLaunchTask 34 3
  • OpenNetworkLinux:i2c-gpio.c源码学习笔记

    OpenNetworkLinux xff1a i2c gpio c源码学习笔记 i2c gpio的init和exit i2c驱动需要首先在平台驱动上进行注册 xff0c 方可提供自身的总线供适配器进行注册 xff0c 注册流程类似于一个内核
  • 每天一个Lodash源码解析

    每天一个Lodash源码解析 chunk 方法介绍自我实现源码分析代码对比知识点补充浮点数转化为浮点数数组创建方法区别js中切割数组方法 slice 方法介绍自我实现源码分析代码对比知识点补充 96 96 gt gt gt 96 96 移位
  • conda的常用操作

    1 查看conda版本 2 更改安装第三方库的源 将国外的源改为清华镜像源 cmd窗口依次输入 xff1a conda config add channels https mirrors tuna tsinghua edu cn anaco
  • 云技术

    什么是 云 与云技术 xff1f 云技术是在分布式计算技术 网格计算基数基础上发展起来的一种计算技术 云技术基于资源虚拟化的方式 xff0c 为用户提供方便快捷的服务 xff0c 可以实现计算与存储的分布式与并行处理 云技术为其他信息技术
  • 什么是上转型对象及其基本特征

    5 12 什么是上转型对象及其基本特征 xff1f 上转型对象 子类对象赋值给父类变量 例如 xff1a package com wangxing test1 父类 public class Person public void testP
  • 【树莓派入门系列】4 树莓派安装测试torch与torchvision

    树莓派运行YOLOV5项目 安装测试torch amp torchvision 项目目录 点击跳转 0 首页 1 前期准备工作 2 配置树莓派系统 3 安装测试opencv 4 安装测试torch amp torchvision 5 测试y
  • javascript中in和includes的区别

    in的用法 遍历对象 span class token keyword let span names span class token operator 61 span span class token punctuation span n
  • centos安装java环境

    方式一 xff1a 安装java环境 1 先查看本地是否自带java环境 xff1a yum list installed grep java 2 卸载自带的java xff08 输入su xff0c 输入root超级管理员的密码 xff0
  • 计算机网络(五) 网络层(中)

    网络层 xff08 中 xff09 3 划分子网和构造超网3 1划分子网3 2使用子网时分组的转发3 3无分类编址CIDR xff08 构造超网 xff09 4 网际控制报文协议 xff08 ICMP xff09 4 1 ICMP报文的种类
  • 【软件工程学习】软件工程概论

    一 软件工程基础 软件是什么 xff1f xff08 1 xff09 软件独立于硬件 早期软件是作为计算机硬件的零件来开发的 xff0c 40年代中后期和50年代早期时 xff0c 为了利用计算机硬件进行研究 xff0c 使用针对专门的硬件
  • Hadoop (四) ——MapReduce 的原理+实现

    MapReduce简介 MapReduce是一种编程模型 xff0c 用于大规模数据集的并行运算 概念 34 Map xff08 映射 xff09 和 34 Reduce xff08 归约 xff09 xff0c 是它们的主要思想 xff0

随机推荐