占领子

使用概率值创建占用映射

描述

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

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

占领子对象支持本地坐标金宝app,世界坐标和网格指数。具有索引的第一个网格位置(1,1)从网格的左上角开始。

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

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

创建

描述

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

例子

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

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

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

例子

地图= itepancymap(P.解析度从指定的矩阵和每米的单元格中创建占用映射和分辨率。

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

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

输入参数

展开全部

映射宽度,指定为以米为单位的标量。

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

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

输入占用网格,指定为概率值的矩阵0.1。网格的大小与矩阵的大小匹配。每个矩阵元素对应于被占用的网格单元位置的概率。接近1的值表示电池包含障碍的高确定性。接近0的值表示Cell未占用和障碍物的确定性。

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

特性

展开全部

低于哪个小区被认为是无障碍物的阈值,指定为零和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. 将占用网格转换为双矩阵
雷播 沿线计算单元指数
瑞射线 查找光线和占用地图单元的交叉点
setoccupancy. 设定位置的占用价值
展示 显示图中的网格值
syncwith. 与重叠地图同步地图
updateoccupancy. 在地点整合概率观察
World2Grid. 将世界坐标转换为网格指数
World2local. 将世界坐标转换为当地坐标

例子

全部收缩

创建空占用网格图。

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

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

姿势= [5,5,0];范围= 3 *那些(100,1);角度= Linspace(-PI / 2,PI / 2,100);maxrange = 20;

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

扫描= LIDARSCAN(范围,角度);

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

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

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

显示地图)

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

getOc​​upancy(地图,[8 5])
ANS = 0.7000.

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

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

getOc​​upancy(地图,[8 5])
ans = 0.8448.

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

使用导入图像Imread.。将图像裁剪到Playpen地区。

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

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

Imagenorm = Double(Imagecropped)/ 255;imageCcupancy = 1  -  ImageNorm;

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

地图=占领扬声器(ImageCcupancy,20);显示地图)

限制

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

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

扩展能力

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

在R2019B中介绍