主要内容

占领子

使用概率值创建占用映射

描述

占领子创建一个2-D占用网格映射对象。占用电网中的每个单元具有表示该细胞占用概率的值。接近1的值表示单元格包含障碍的高概率。接近0的值表示细胞未占用和障碍物的高概率。

占用地图用于导航算法,如路径规划(见plannerRRT).它们也被用于寻找无碰撞路径的映射应用程序,执行避免碰撞和计算定位(参见蒙特克洛克罗科化).您可以修改占用映射以适合您的特定应用程序。

占领子对象支持局部坐标万博1manbetx、世界坐标和网格索引。第一个带有索引的网格位置(1,1)从网格的左上角开始。

使用占领子类创建一个环境的2-D映射,具有表示世界上不同障碍的概率值。您可以指定单元的确切概率值,或者包括来自激光扫描仪等传感器的观察。

使用二进制贝叶斯滤波器存储概率值以估计每个网格单元的占用率。使用log-odds表示,存储有值int16减少地图存储的大小,并允许实时应用程序。

创建

描述

地图= itepancymap(宽度高度创建一个表示的世界空间的二维占用地图对象宽度高度在米。默认的网格分辨率是每米1个单元格。

例子

地图= itepancymap(宽度高度解决创建具有指定网格分辨率的占用映射,每个仪表中的单元格。解决设置解决财产。

地图= itepancymap(关口解决,'网格')创建具有指定行数和列的占用映射,并在每米单元格中的分辨率。价值关口设置网格化财产。

地图= itepancymap(P.根据矩阵中的值创建占用地图P..网格尺寸与矩阵的大小匹配,每个小区概率值从矩阵位置解释。

例子

地图= itepancymap(P.解决根据指定的矩阵和每米单元格的分辨率创建占用图。

地图= occupancyMap (Sourcemap.使用另一个值创建一个对象占领子目的。

地图= occupancyMap (Sourcemap.解决使用另一个值创建一个对象占领子对象,但是重新开始矩阵以具有指定的分辨率。

输入参数

全部展开

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

地图高度,指定为米的标量。

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

网格中的行数,指定为正标量整数。

网格中的列数,指定为正标量整数。

输入占用网格,指定为概率值的矩阵0.1.网格的大小与矩阵的大小相匹配。每个矩阵元素对应网格单元位置被占用的概率。值接近1代表细胞包含障碍的高度确定性。值接近0.表示细胞没有被占用和没有障碍的确定性。

占用地图对象,指定为a占领子目的。

属性

全部展开

阈值,低于该阈值的单元被认为是无障碍的,在其之间指定为标量0.1包括的。具有以下阈值的概率值的细胞被认为是无障碍物的。此属性还定义使用对象时的路径规划的自由位置plannerRRT

数据类型:

阈值,高于此阈值的单元格被认为已被占用,指定为标量。概率值高于此阈值的单元格被认为已占用。

数据类型:

概率限制为概率限制,指定为表示最小值和最大值的1×2实值矢量。这些饱和值高于或下方的值被设置为最小值和最大值。该属性在结合多次观察时减少了细胞的过度尿布。

数据类型:

此属性是只读的。

网格中的行数和列数,存储为表示行数和列数的1×2实值矢量。

数据类型:

此属性是只读的。

网格分辨率,存储为表示网格位置的数量和大小的每米单元格中的标量。

数据类型:

此属性是只读的。

最小值和最大值X-坐标在局部框架中,存储为窗体的两个元素水平矢量[min max].本地框架由localorigininworld.财产。

数据类型:

此属性是只读的。

最小值和最大值y-坐标在局部框架中,存储为窗体的两个元素水平矢量[min max].本地框架由localorigininworld.财产。

数据类型:

此属性是只读的。

的最小和最大世界范围值X- 以该顺序以表示最小值和最大值的1×2向量存储。

数据类型:

此属性是只读的。

的最小和最大世界范围值y- 以该顺序以表示最小值和最大值的1×2向量存储。

数据类型:

[Xy网格左下角的世界坐标,指定为1乘2的向量。

数据类型:

世界坐标的本地帧的起源的位置,指定为双元素矢量,[xlocal ylocal].使用移动随着车辆移动,将本地帧移位的功能。

数据类型:

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

数据类型:

未指定地图位置的默认值,包括地图之外的区域,指定为之间的标量0.1包括的。

数据类型:

对象的功能

检查电动扫描 检查免费,占用或未知值的位置
复制 创建占用网格的副本
getOc​​upancy. 获得地点的入住价值
grid2local. 将网格索引转换为本地坐标
grid2world. 将网格指数转换为世界坐标
膨胀 膨胀每个被占用的网格位置
insertray 从激光扫描观察插入射线
local2grid 将本地坐标转换为网格指数
local2world. 将当地坐标转换为世界坐标
移动 在世界框架中移动地图
占领yatmatrix. 将占用网格转换为双矩阵
雷播 沿着射线计算单元格指数
rayIntersection 查找光线和占用地图单元的交叉点
setoccupancy. 设定位置的占用价值
显示 在图中显示网格值
syncwith. 同步地图与重叠地图
updateOccupancy 在地点整合概率观察
world2grid 将世界坐标转换为网格指数
world2local 将世界坐标转换为当地坐标

例子

全部折叠

创建空占用网格图。

地图=占领扬声器(10,10,20);

输入车辆的姿态,距离,角度和激光扫描的最大范围。

构成= (5 5 0);范围= 3 * 1 (100 1);角= linspace(-π/ 2π/ 2100);maxrange = 20;

创建一个lidarScan对象具有指定的范围和角度。

扫描= lidarScan(范围、角度);

将激光扫描数据插入占用映射。

insertRay(地图,姿势,扫描,maxrange);

显示地图以查看插入激光扫描的结果。

显示地图)

图中包含一个坐标轴。具有标题占用网格的轴包含类型图像的对象。

直接在车辆前检查点的入住。

getOccupancy(地图,5 [8])
ANS = 0.7000.

添加第二次读取并将更新视图到占用值。额外的读数增加了读数的置信度。自由和占用的值变得更加明显。

insertRay(地图,姿势,扫描,maxrange);显示地图)

图中包含一个坐标轴。具有标题占用网格的轴包含类型图像的对象。

getOccupancy(地图,5 [8])
ans = 0.8448.

将包含ROS映射的便携式GrayMap(PGM)文件转换为占领子用于Matlab。

使用以下命令导入图像Imread..将图像裁剪到游戏笔区域。

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

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

PGM值表示为0至255uint8.将裁剪后的图像转换为规格化这些值并将每个单元分划分255.此图像显示障碍物,因为值接近0.从1中减去归一化图像以获得1表示占用空间的占用值。

imageNorm = (imageCropped) / 255年翻一番;imageOccupancy = 1 - imageNorm;

创建占领子对象使用调整后的地图图像。导入的地图分辨率为每米20个单元格。

地图= occupancyMap (imageOccupancy 20);显示地图)

图中包含一个坐标轴。具有标题占用网格的轴包含类型图像的对象。

限制

占用值的分辨率有限±0.001。值存储为int16使用log-odds表示。此数据类型限制了解决方案,但在MATLAB中存储大地图时会保存内存®.当调用setoccupancy.然后getOc​​upancy.,返回的值可能不等于您设置的值。有关更多信息,请参阅“日志赔率表示”部分占用网格

如果内存大小有限制,可以考虑使用binaryoccupancymap.反而。二进制占用映射使用具有二进制值的更少的内存,但仍然适用于导航工具箱™算法和其他应用程序。

扩展功能

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

在R2019B中介绍