文档

binaryOccupancyMap

用二进制值创建占用网格

描述

binaryOccupancyMap创建一个2-D占用地图对象,您可以使用它来表示和可视化机器人工作空间,包括障碍。传感器数据和位置估计的集成创建了障碍物的近似位置的空间表示。

占用网格用于机器人算法,如路径规划。它们也用于映射应用程序,例如寻找无碰撞路径、执行碰撞避免和计算定位。您可以修改占用网格以适应特定的应用程序。

占用网格中的每个单元格都有一个表示该单元格的占用状态的值。被占领的位置表示为真正的(1)而一个空闲的位置表示为假(0)

该对象跟踪三个参考框架:世界、局部和网格。定义世界框架原点的是GridLocationInWorld,它定义了相对于世界框架的地图的左下角。的LocalOriginInWorld属性指定本地帧相对于世界帧的原点位置。第一个带索引的网格位置(1,1)从网格的左上角开始。

请注意

此对象先前已命名机器人技术。BinaryOccupancyGrid

创建

描述

例子

map = binaryoccuancymap创建了一个宽10米、高10米的二维二元占用网格。默认的网格分辨率是每米一个单元。

例子

map = binaryoccuancymap (宽度高度创建一个表示工作空间的二维二元占用网格宽度而且高度在米。默认的网格分辨率是每米一个单元。

map = binaryoccuancymap (宽度高度决议类创建一个网格决议属性以每米单元格指定。地图默认是世界坐标。

map = binaryoccuancymap (rows,cols,决议“网格”)创建一个大小为(关口).

例子

map = binaryoccuancymap (p从矩阵中的值创建一个网格p.网格的大小与矩阵的大小相匹配,每个单元格的值都是从其在矩阵中的位置解释的。p包含包含0(0)和1(1)的任何数字或逻辑类型。

map = binaryoccuancymap (p决议属性从矩阵创建映射决议属性以每米单元格指定。

map = binaryoccuancymap (p决议对象创建一个对象决议属性以每米单元格指定。

map = binaryoccuancymap (sourcemap使用来自另一个对象的值创建对象binaryOccupancyMap对象。

map = binaryoccuancymap (sourcemap决议使用来自另一个对象的值创建对象binaryOccupancyMap对象,但对矩阵进行重采样以获得指定的分辨率。

输入参数

全部展开

地图宽度,指定为以米为单位的正标量。

地图高度,指定为以米为单位的正标量。

映射网格值,指定为矩阵。

占用地图对象,指定为binaryOccupancyMap对象。

属性

全部展开

此属性是只读的。

网格中的行数和列数,存储为表单的双元素水平向量(行峡路)

此属性是只读的。

网格分辨率,存储为单元格中每米的标量。

此属性是只读的。

的最小值和最大值x-坐标,存储为表单的双元素水平向量(最小最大).定义了局部帧LocalOriginInWorld财产。

此属性是只读的。

的最小值和最大值y-坐标,存储为表单的双元素水平向量(最小最大).定义了局部帧LocalOriginInWorld财产。

此属性是只读的。

的最小值和最大值x-在世界框架中的坐标,存储为表单的双元素水平向量(最小最大).这些值表示的世界范围x-坐标在网格中。

此属性是只读的。

的最小值和最大值y-coordinates,存储为表单的双元素向量(最小最大).这些值表示的世界范围y-坐标在网格中。

世界坐标中网格左下角的位置,指定为双元素向量,[xGrid yGrid]

在世界坐标中局部帧的原点位置,指定为双元素向量,[xLocal yLocal].使用移动函数在车辆移动时移动本地帧。

在局部坐标中网格左下角的位置,指定为一个双元素向量,[xLocal yLocal]

未指定的映射位置的默认值,包括映射之外的区域,指定为01

对象的功能

checkOccupancy 检查位置的占用率
getOccupancy 获取位置的占用值
grid2local 将网格索引转换为局部坐标
grid2world 将网格索引转换为世界坐标
膨胀 充气每个被占用的网格位置
insertRay 插入激光扫描观察的射线
local2grid 将局部坐标转换为网格索引
local2world 将局部坐标转换为世界坐标
移动 在世界框架中移动地图
occupancyMatrix 将占用网格转换为矩阵
raycast 沿着射线计算单元指数
rayIntersection 找到射线的交点和被占用的地图单元格
setOccupancy 设置位置的占用值
显示 显示占用网格值
syncWith 用重叠的地图同步地图
world2grid 将世界坐标转换为网格索引
world2local 将世界坐标转换为本地坐标

例子

全部折叠

创建一个10m * 10m的空地图。

map = binaryoccuancymap (10,10,10);

设置占用世界位置和显示地图。

X = [1.2;2.3;3.4;4.5;5.6);Y = [5.0;4.0;3.0;2.0;1.0); setOccupancy(map, [x y], ones(5,1)) figure show(map)

将已占领的位置按给定的半径膨胀。

膨胀(地图,0.5)图显示(地图)

从世界位置获取网格位置。

Ij = world2grid(map, [x y]);

将网格位置设置为空闲位置。

setOccupancy(map, ij, zero (5,1),“网格”图显示(地图)

此示例演示如何将图像转换为用于映射和路径规划的二值占用网格。

进口的形象。

图片= imread(“imageMap.png”);

根据给定的阈值将图像转换为灰度,然后再转换为黑白图像。

Grayimage = rgb2gray(图像);Bwimage =灰度图像< 0.5;

用黑白图像作为矩阵输入二值占用网格。

grid = binaryoccuancymap (bwimage);显示(网格)

这个例子展示了如何转换a.pgm存档到binaryOccupancyMap对象在MATLAB中使用。

使用导入图像imread.图像相当大,应该裁剪到相关的区域。

图片= imread(“playpen_map.pgm”);imageCropped = image(750:1250,750:1250);imshow (imageCropped)

应该删除未知区域(灰色),并将其视为空闲空间。根据阈值创建逻辑矩阵。根据您的图像,这个值可能不同。占用空间设置为1(图像中白色)。

imageBW = imageCropped < 100;imshow (imageBW)

创建binaryOccupancyMap对象使用调整后的地图图像。

map = binaryoccuancymap (imageBW);显示(图)

兼容性的考虑

全部展开

未来版本中的行为更改

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

在R2015a中介绍