主要内容

occupancyMap3D

创建三维入住地图

描述

occupancyMap3D类存储3-D地图和地图信息。映射以概率值的形式存储在八叉树数据结构.该类处理任意环境,并根据观察输入动态扩展其大小。你可以添加观察到的点云或具体点云xyz的位置。这些观测更新了概率值。概率值表示位置的占用。八叉树数据结构适当地修剪数据,使其在内存和磁盘上都保持高效。

创建

描述

的核心= occupancyMap3D创建一个空的3-D占用地图,没有观测值和默认属性值。

例子

的核心= occupancyMap3D (res在单元格/仪表中指定映射分辨率并设置决议财产。

的核心= occupancyMap3D (res、名称、值)创建具有由一个或多个指定的附加选项的对象名称,值对参数。例如,“FreeThreshold”,0.25设置阈值以考虑细胞无障碍的概率值为0.25。将每个属性名用引号括起来。

属性

全部展开

以每米单元格为单位的网格分辨率,指定为标量。明确施工决议。插入精度高于该值的观测值将被舍入并应用于该分辨率。

将细胞视为无障碍的阈值,指定为正标量。低于这个阈值的概率值被认为是无障碍的。

将单元格视为已占用的阈值,指定为正标量。超过这个阈值的概率值被认为已被占用。

概率值的饱和限制,指定为(最小最大)向量。高于或低于这些饱和度值设置为最小值马克斯值。当合并多个观察时,这一特性降低了细胞的过饱和。

对象的功能

checkOccupancy 检查场所是否空闲或被占用
getOccupancy 得到位置的占用概率
膨胀 膨胀地图
insertPointCloud 在地图中插入三维点或点云观测
rayIntersection 找到光线和被占用的地图单元格的交点
setOccupancy 设置位置的占用概率
显示 地图显示占用
updateOccupancy 更新各地点的占用概率

例子

全部折叠

occupancyMap3D物体将障碍物存储在三维空间中,利用传感器观测来绘制环境地图。创建一张地图,从点云中添加点来识别障碍。然后将地图上的障碍物充气,以确保障碍物周围的安全操作空间。

创建一个occupancyMap3D物体的地图分辨率为10单元格/米。

map3D = occupancyMap3D (10);

定义一组三维点作为一个姿势的观察[x y z qw qx qy qz].这个姿势是为了观察这些点并以原点为中心的传感器。定义两组点以插入多个观察值。

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

使用。插入第一组点insertPointCloud.该功能使用传感器姿态和给定的点将观测数据插入到地图中。显示的颜色与点的高度相关,只是为了说明的目的。

insertPointCloud (map3D姿势,点,maxRange)显示(map3D)

图中包含一个轴对象。标题为“占用地图”的axis对象包含一个patch类型的对象。

插入第二组点。在传感器姿态(原点)和这些点之间的射线与先前插入的点重叠。因此,将传感器与新点之间的空闲空间进行更新,并标记为空闲空间。

insertPointCloud (map3D姿势,points2 maxRange)显示(map3D)

图中包含一个轴对象。标题为“占用地图”的axis对象包含一个patch类型的对象。

膨胀地图,以增加一个缓冲区周围的障碍安全操作。定义车辆半径和安全距离,并使用这些值的总和来定义地图的膨胀半径。

vehicleRadius = 0.2;safetyRadius = 0.3;inflationRadius =车辆半径+安全半径;充气(map3D inflationRadius);显示(map3D)

图中包含一个轴对象。标题为“占用地图”的axis对象包含一个patch类型的对象。

算法

全部展开

参考文献

Hornung, Armin, Kai M. Wurm, Maren Bennewitz, Cyrill Stachniss和Wolfram Burgard。OctoMap:基于八叉树的高效概率3D映射框架。自主机器人, Vol. 34, No. 3, 2013, pp. 189-206 ..doi: 10.1007 / s10514 - 012 - 9321 - 0。

扩展功能

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

介绍了R2019b