主要内容

binaryOccupancyMap

用二进制值创建占用网格

描述

binaryOccupancyMap创建一个二维入住率地图对象,您可以使用它来表示和想象机器人工作空间,包括障碍。传感器数据的集成和位置估计的近似位置创建一个空间表示的障碍。

占用网格用于机器人路径规划等算法。他们也用在地图应用程序,比如寻找无碰撞路径,执行避碰和计算定位。您可以修改您的入住率网格来适应您的特定应用程序。

占用网格中的每个细胞有一个值代表占用状态的细胞。被表示为一个被占领的位置真正的(1)和一个免费的位置表示为假(0)

对象跟踪三个参考系:世界,地方、网格。世界坐标系原点的定义GridLocationInWorld,它定义了手机的左下角时世界地图相对于框架。的LocalOriginInWorld属性指定的位置的起源地方坐标系相对于世界坐标系。第一个网格索引位置(1,1)从网格的左上角开始。

请注意

这个对象以前命名的robotics.BinaryOccupancyGrid

创建

描述

例子

地图= binaryOccupancyMap创建一个二维二元占用网格宽度和高度为10米。默认的网格分辨率是每米一个细胞。

例子

地图= binaryOccupancyMap (宽度,高度)创建一个二维的二进制占用网格代表一个工作空间宽度高度在米。默认的网格分辨率是每米一个细胞。

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

地图= binaryOccupancyMap(行、关口决议“网格”)创建一个二维二元占用网格的大小(,关口)。

例子

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

地图= 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 世界坐标转换为局部坐标

例子

全部折叠

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

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

图包含一个坐标轴对象。坐标轴对象与标题二进制占用网格,包含X [m], ylabel Y(米)包含一个类型的对象的形象。

由给定半径膨胀占据位置。

充气(图0.5)图显示(图)

图包含一个坐标轴对象。坐标轴对象与标题二进制占用网格,包含X [m], ylabel Y(米)包含一个类型的对象的形象。

从世界得到网格位置的位置。

ij = world2grid(地图,[x y]);

设置网格位置自由的位置。

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

图包含一个坐标轴对象。坐标轴对象与标题二进制占用网格,包含X [m], ylabel Y(米)包含一个类型的对象的形象。

这个例子展示了如何将图像转换成一个二进制占用网格使用映射和路径规划。

进口的形象。

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

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

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

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

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

图包含一个坐标轴对象。坐标轴对象与标题二进制占用网格,包含X [m], ylabel Y(米)包含一个类型的对象的形象。

这个例子展示了如何将一个.pgm文件到一个binaryOccupancyMap对象用于MATLAB。

导入图片使用imread。图像是相当大的,应该出现相关的区域。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

未知领域(灰色)应该删除并视为自由空间。创建一个基于阈值逻辑矩阵。根据你的图片,这个值是不同的。占据的空间应该设置为1(白色图像)。

imageBW = imageCropped < 100;imshow (imageBW)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

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

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

图包含一个坐标轴对象。坐标轴对象与标题二进制占用网格,包含X [m], ylabel Y(米)包含一个类型的对象的形象。

扩展功能

版本历史

介绍了R2015a

全部展开

另请参阅

主题