主要内容

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 (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 x 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)

图中包含一个轴对象。标题为Binary Occupancy Grid的axis对象包含一个image类型的对象。

按给定半径膨胀已占用位置。

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

图中包含一个轴对象。标题为Binary Occupancy Grid的axis对象包含一个image类型的对象。

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

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

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

setooccupancy (map, ij, 0 (5,1),“网格”数字展示(地图)

图中包含一个轴对象。标题为Binary Occupancy Grid的axis对象包含一个image类型的对象。

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

进口的形象。

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

在给定阈值的基础上,先转换为灰度图像,再转换为黑白图像。

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

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

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

图中包含一个轴对象。标题为Binary Occupancy Grid的axis对象包含一个image类型的对象。

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

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

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

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

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

imageBW = imageCropped < 100;imshow (imageBW)

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

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

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

图中包含一个轴对象。标题为Binary Occupancy Grid的axis对象包含一个image类型的对象。

扩展功能

版本历史

在R2015a中引入

全部展开

另请参阅

主题