主要内容

occupancyMap3D

创建3d入住率地图

描述

occupancyMap3D对象存储3d地图和地图信息。映射作为概率值存储在八叉树数据结构.该类处理任意环境,并根据观察输入动态扩展其大小。您可以添加观测作为点云或特定云xyz位置。这些观察结果更新了概率值。概率值表示位置的占用率。八叉树数据结构对数据进行适当的修剪,以保持内存和磁盘上的效率。

创建

描述

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

例子

的核心= occupancyMap3D (res指定以单元格/米为单位的映射分辨率并设置决议财产。

的核心= occupancyMap3D (res、名称、值)使用一个或多个名称-值参数指定属性。例如,“FreeThreshold”,0.25将单元无障碍的阈值设置为概率值0.25。

属性

全部展开

网格分辨率(单元格/米),指定为标量。在构造时指定分辨率。插入精度高于此值的观测值向下四舍五入,并以此分辨率应用。

将单元格视为无障碍的阈值,指定为正标量。低于此阈值的概率值被认为是无障碍的。

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

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

对象的功能

checkOccupancy 检查场地是否空闲或有人
getOccupancy 获取地点的占用概率
膨胀 给每个被占领的位置充气
insertPointCloud 在地图中插入三维点或点云观测
rayIntersection 找到射线的交点和被占用的地图单元格
setOccupancy 设置地点的占用概率
显示 显示3d入住率地图
updateOccupancy 更新各地点的占用率

例子

全部折叠

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

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

map3D = occupancyMap3D (10);

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

Pose = [0 0 0 1 0 0 0];Points = 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)

图中包含一个axes对象。标题为Occupancy Map的axis对象包含一个类型为patch的对象。

插入第二组点。传感器位置(原点)和这些点之间的射线与之前插入的点重叠。因此,传感器和新点之间的空闲空间被更新并标记为空闲空间。

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

图中包含一个axes对象。标题为Occupancy Map的axis对象包含一个类型为patch的对象。

膨胀地图以添加缓冲区,以便在障碍物周围安全操作。定义车辆半径和安全距离,并使用这些值的和来定义地图的充气半径。

vehicleRadius = 0.2;safetyRadius = 0.3;inflationRadius = vehicleRadius + safetyRadius;充气(map3D inflationRadius);显示(map3D)

图中包含一个axes对象。标题为Occupancy Map的axis对象包含一个类型为patch的对象。

算法

全部展开

参考文献

[1] Hornung, Armin, Kai M. Wurm, Maren Bennewitz, Cyrill Stachniss, Wolfram Burgard。“OctoMap:基于八叉树的高效概率三维映射框架。”自主机器人34岁的没有。3(2013年4月):189-206。https://doi.org/10.1007/s10514 - 012 - 9321 - 0。

扩展功能

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

版本历史

介绍了R2019b

Baidu
map