occupancyMap3D

创建3-d占用地图

描述

occupancyMap3D类存储3-d地图和地图信息。地图被存储作为在概率值八叉树数据结构。类处理任意环境,并扩大其规模动态地根据观察输入。您可以添加意见的点云或具体XYZ位置。这些观察结果更新概率值。概率值表示的位置的占用。八叉树数据结构装饰数据合适地以无论是在存储器和磁盘上保持效率。

创建

描述

OMAP= occupancyMap3D创建一个空的3-d占用地图,没有观察和默认属性值。

OMAP= occupancyMap3D(水库指定地图的分辨率在细胞/米和套解析度属性。

OMAP= occupancyMap3D(水库,名称,值)创建了由一个或多个指定的具有附加的选项的对象名称,值对参数。例如,'FreeThreshold',0.25设置阈值,以考虑细胞无障碍作为0.25的概率值。在引号中每个属性的名称。

属性

展开全部

网格分辨率在每米的牢房,被指定为一个标量。指定施工分辨率。插入的观察与精度高于这个值是(四舍五入),在该分辨率下应用。

门槛要考虑细胞无障碍物,指定为正标量。低于这个阈值的概率值被认为是无障碍。

门槛要考虑细胞占据,指定为正标量。高于此阈值的概率值被认为占据。

饱和度限制了对概率值,指定为[最小最大]向量。高于或低于这些的饱和度值的值被设置为要么最大值。此属性减少,包括多个观察当细胞的过饱和。

对象函数

checkOccupancy 检查地点是免费或占用
getOc​​cupancy 获取的位置占据概率
膨胀 充气地图
insertPointCloud 插入件3-d点或点云观测到地图
rayIntersection 找到光线的交叉点并占领地图细胞
setOccupancy 位置设置占据概率
显示 展会占用地图
updateOccupancy 在位置更新占用概率

例子

全部收缩

occupancyMap3D对象存储在3-d空间障碍,使用传感器观测到映射的环境。创建一个地图,从一个点云加点来识别障碍。然后膨胀在地图的障碍,以确保安全操作空间周围的障碍物。

创建occupancyMap3D用10个细胞/米的地图分辨率对象。

map3d的= occupancyMap3D(10);

定义一组3-d点作为从姿态的观察[arrow-QW QX QY QZ]。这个姿势是为观察这些点,并集中在原点传感器。定义两个点集插入多观察。

姿态= [0 0 0 1 0 0 0];点= repmat((0:0.25:2)”,1,3);points2 = [(0:0.25:2) '(2:-0.25:0)'(0:0.25:2)'];maxRange = 5;

插入使用第一组点insertPointCloud。该函数使用传感器姿态和给定的点以插入观测到地图。颜色显示关联到仅用于说明目的点的高度。

insertPointCloud(map3d的,姿势,点,maxRange)显示(map3d的)

插入第二组点。传感器姿态(原点)和来自先前插入这些点重叠点之间的射线。因此,传感器和新的点之间的自由空间被更新,并且标记为自由空间。

insertPointCloud(map3d的,姿势,points2,maxRange)显示(map3d的)

充气地图添加一个缓冲区安全操作绕过障碍物。限定车辆半径和安全距离,并使用这些值的总和以限定用于地图充气半径。

vehicleRadius = 0.2;safetyRadius = 0.3;inflationRadius = vehicleRadius + safetyRadius;膨胀(map3d的,inflationRadius);秀(map3d的)

算法

展开全部

参考

[1]霍农,阿明,启M.亚龙,麻仁Bennewitz,Cyrill Stachniss,和沃尔夫勒姆·伯加德。“OctoMap:一个有效的概率3D映射框架基于八叉树。”自主机器人卷。34,第3期,2013,第189-206 .. DOI:10.1007 / s10514-012-9321-0。

介绍了在R2019b