主要内容

occupancyMap

用概率值创建入住率映射

描述

occupancyMap创建一个二维占用网格地图对象。占用网格中的每个细胞有一个值代表细胞的入住率的概率。值接近1代表一个细胞包含高概率的一个障碍。值接近于0代表一个高概率的自由细胞不是占领和障碍。

入住率地图是用于导航算法路径规划等plannerRRT)。他们也用在地图应用程序寻找无碰撞路径,执行避碰和本地化(见计算monteCarloLocalization)。你可以修改你的入住率地图来适应您的特定应用程序。

occupancyMap对象支持当地坐标金宝app、世界坐标和网格索引。第一个网格索引位置(1,1)从网格的左上角开始。

使用occupancyMap类来创建二维地图概率值代表不同的环境障碍你的世界。您可以指定精确概率的细胞或包括来自传感器的观测值,如激光扫描仪。

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

创建

描述

地图= occupancyMap (宽度,高度)创建一个二维入住率地图对象代表一个空间世界宽度高度在米。默认的网格分辨率是1细胞每米。

例子

地图= occupancyMap (宽度,高度,决议)创建一个占用指定网格分辨率的地图细胞每米。决议设置决议财产。

地图= occupancyMap (,关口,决议“网格”)创建一个占用地图与指定的行数和列和细胞每米的分辨率。的值关口设置GridSize财产。

地图= occupancyMap (p)创建一个占用值的映射矩阵p。网格大小匹配矩阵的大小,与每一个细胞从矩阵位置概率值解释。

例子

地图= occupancyMap (p,决议)创建一个入住率从指定的映射矩阵和决议在细胞每米。

地图= occupancyMap (sourcemap)创建一个对象使用另一个值occupancyMap对象。

地图= occupancyMap (sourcemap,决议)创建一个对象使用另一个值occupancyMap对象,但重新取样矩阵指定的决议。

输入参数

全部展开

在米图宽度,指定为一个标量。

在米图的高度,指定为一个标量。

网格分辨率,指定为在细胞每米一个标量。

在网格的行数,指定为一个积极的标量整数。

在网格的列数,指定为一个积极的标量整数。

输入占用网格,指定为一个矩阵的概率值01。网格的大小匹配矩阵的大小。每个矩阵元素对应于网格单元的位置被占据的概率。值接近1代表高的细胞包含一个障碍。值接近0代表的自由细胞不是占领和障碍。

入住率地图对象,指定为一个occupancyMap对象。

属性

全部展开

阈值低于细胞被认为是无障碍,指定为一个标量之间01包容性。细胞的概率值低于这个阈值被认为是障碍。这个属性还定义了免费位置路径规划时使用对象plannerRRT

数据类型:

阈值以上的细胞被认为是占领,指定为一个标量。细胞的概率值高于该阈值被认为是占领。

数据类型:

饱和限制概率,指定为1×2实值向量代表的最小值和最大值,在这种秩序。值高于或低于这些饱和值的最小值和最大值。这个属性可以减少细胞oversaturating当合并多个观测。

数据类型:

这个属性是只读的。

在网格的行数和列,存储为1×2实值向量代表的行数和列顺序。

数据类型:

这个属性是只读的。

网格分辨率,作为一个标量存储在细胞每米代表的数量和大小网格的位置。

数据类型:

这个属性是只读的。

最小和最大的值x坐标在当地坐标系,存储为一个双元素水平向量的形式(最小最大)。当地的框架定义的LocalOriginInWorld财产。

数据类型:

这个属性是只读的。

最小和最大的值y坐标在当地坐标系,存储为一个双元素水平向量的形式(最小最大)。当地的框架定义的LocalOriginInWorld财产。

数据类型:

这个属性是只读的。

最小和最大世界范围的值x坐标,存储为1×2向量表示的最小值和最大值,在这种秩序。

数据类型:

这个属性是只读的。

最小和最大世界范围的值y坐标,存储为1×2向量表示的最小值和最大值,在这种秩序。

数据类型:

(x,y)世界角落的左下角的坐标网格,指定为1×2向量。

数据类型:

当地的起源框架的位置在世界坐标系中,指定为一个双元素向量,[xLocal yLocal]。使用移动函数将当地的帧作为车辆移动。

数据类型:

手机的左下角时网格在当地的位置坐标,指定为一个双元素向量,[xLocal yLocal]

数据类型:

默认值以外的未指定的地区位置包括地图地图,指定为一个标量之间01包容性。

数据类型:

对象的功能

checkOccupancy 免费检查位置,占据,或未知值
复制 创建的副本占用网格
getOccupancy 会占用位置的价值
grid2local 网格指标转换为局部坐标
grid2world 转换为世界坐标网格索引
膨胀 增加每个网格位置
insertRay 插入射线从激光扫描观察
local2grid 局部坐标转换为网格索引
local2world 局部坐标转换为世界坐标
移动 在世界地图坐标系移动
occupancyMatrix 将占用网格转换成双矩阵
raycast 沿着射线计算细胞指数
rayIntersection 找到交集点的射线和占领地图细胞
setOccupancy 入住率值设置的位置
显示 显示网格值在图
syncWith 同步地图重叠的地图
updateOccupancy 集成概率观察的位置
world2grid 世界坐标转换为网格索引
world2local 世界坐标转换为局部坐标

例子

全部折叠

创建一个空占用网格地图。

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

转换一个便携式graymap (PGM)文件包含ROS映射成一个occupancyMap用于MATLAB。

导入图片使用imread。作物图像到游戏围栏区域。

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

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

的PGM值是表示从0到255uint8。裁剪的图像转换为规范化这些值和每个细胞除以255。这张照片显示障碍值接近于0。1减去归一化图像占用值和1代表占据空间。

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

创建occupancyMap对象使用一个调整地图图像。导入的图分辨率是20细胞每米。

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

图包含一个坐标轴对象。坐标轴对象与标题占用网格包含一个类型的对象的形象。

限制

入住率值有限解决±0.001。存储的值int16使用log-odds表示。这个数据类型的极限分辨率,但在MATLAB节省内存存储时大地图®。当调用setOccupancy然后getOccupancy,返回的值可能不等于你设置的价值。有关更多信息,请参见log-odds表示部分占用网格

如果内存大小限制,考虑使用binaryOccupancyMap代替。二进制入住率与二进制值地图使用更少的内存,但仍与导航工具箱™算法和其他应用程序。

扩展功能

版本历史

介绍了R2019b