主要内容

binaryOccupancyMap

用二进制值创建占用网格

描述

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

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

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

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

请注意

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

创建

描述

例子

地图= binaryOccupancyMap创建了一个宽度和高度为10米的二维二元居住网格。默认的网格分辨率是每米一个单元格。

例子

地图= binaryOccupancyMap (宽度高度创建了一个二维二元占用网格,表示工作空间宽度高度在米。默认的网格分辨率是每米一个单元格。

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

地图= binaryOccupancyMap(行、关口决议“网格”)创建一个大小为(关口).

例子

地图= binaryOccupancyMap (p根据矩阵中的值创建网格p.网格的大小与矩阵的大小相匹配,每个单元格的值根据其在矩阵中的位置来解释。p包含0(0)和1(1)的任何数字或逻辑类型。

地图= binaryOccupancyMap (p决议属性从矩阵创建映射决议属性在每米单元格中指定。

地图= binaryOccupancyMap (p决议属性创建一个对象决议属性在每米单元格中指定。

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

地图= binaryOccupancyMap (sourcemap决议使用来自另一个对象的值创建对象binaryOccupancyMap对象,但会重新采样矩阵以具有指定的分辨率。

输入参数

全部展开

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

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

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

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

属性

全部展开

此属性是只读的。

网格中的行数和列数,存储为窗体的两个元素水平向量(行峡路)

此属性是只读的。

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

此属性是只读的。

的最小值和最大值x-坐标在局部框架中,存储为窗体的两个元素水平矢量(最小最大).局部帧定义为localorigininworld.财产。

此属性是只读的。

的最小值和最大值y-坐标在局部框架中,存储为窗体的两个元素水平矢量(最小最大).局部帧定义为localorigininworld.财产。

此属性是只读的。

的最小值和最大值x-坐标,存储为窗体的两个元素水平矢量(最小最大).这些值表示的世界范围x-坐标在网格里。

此属性是只读的。

的最小值和最大值y-坐标,存储为该形式的两个元素向量(最小最大).这些值表示的世界范围y-坐标在网格里。

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

在世界坐标系中局部坐标系原点的位置,指定为一个二元向量,[xLocal yLocal].使用移动随着车辆移动,将本地帧移位的功能。

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

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

对象的功能

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

例子

全部折叠

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

地图= binaryOccupancyMap(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)

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含一个类型为image的对象。

以给定的半径膨胀所占据的位置。

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

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含一个类型为image的对象。

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

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

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

setOccupancy(地图,ij, 0(5、1),“网格”图显示(图)

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含一个类型为image的对象。

这个示例演示了如何将图像转换为二进制占用网格,以便与映射和路径规划一起使用。

进口的形象。

形象= imread (“imageMap.png”);

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

grayimage = rgb2gray(图片);Bwimage = grayimage < 0.5;

用黑白图像作为矩阵输入,实现二进制占用网格。

网格= binaryOccupancyMap (bwimage);显示(网格)

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含一个类型为image的对象。

这个例子展示了如何转换.pgm文件到一个binaryOccupancyMap对象,在MATLAB中使用。

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

形象= imread (“playpen_map.pgm”);imageCropped =图像(750:1250 750:1250);imshow (imageCropped)

图中包含一个轴对象。axis对象包含一个image类型的对象。

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

imagew = imageCropped < 100;imshow (imageBW)

图中包含一个轴对象。axis对象包含一个image类型的对象。

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

地图= binaryOccupancyMap (imageBW);显示(图)

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含一个类型为image的对象。

兼容性的考虑

全部展开

未来版本中的行为改变

扩展功能

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

在R2015A介绍