入住网格

概观

使用占用网格将机器人的工作空间表示为一个离散网格。有关环境的信息可以从传感器实时收集,也可以从先验知识中加载。激光测距仪、碰撞传感器、摄像机和深度传感器通常用于发现机器人环境中的障碍物。

占用网格在机器人算法,如路径规划(见使用mobileRobotPRM(机器人系统工具箱)要么plannerRRT)。它们被用于在离散地图中集成传感器信息的制图应用,在寻找无碰撞路径的路径规划中,以及在已知环境中定位机器人(见monteCarloLocalization要么matchScans)。您可以创建不同大小和分辨率的地图,以适合您的特定应用程序。金宝搏官方网站

对于3-d占用地图,请参阅occupancyMap3D

对于二维占用网格,有两种表示:

二进制占用网格使用真正值来表示占用工作区(障碍物)和表示空闲工作区的值。这个网格显示了障碍物的位置以及机器人是否可以通过这个空间。如果内存大小是应用程序中的一个因素,则使用二进制占用网格。

概率占用网格使用概率值来创建更详细的地图表示。这种表示是使用占用网格的首选方法。此网格通常简称为占用网格。占用网格中的每个单元格都有一个表示该单元格占用概率的值。接近1的值表示该单元格包含障碍的高度确定性。接近0的值表示确定单元格没有被占用并且没有障碍。概率值可以提高目标的保真度,提高某些算法的应用性能。

二进制和概率占用电网分享几个属性和算法的细节。网格和世界坐标适用于这两种类型的占用网格。通胀功能也适用于网格,而且每个网格实现它的不同。对数比值表示和概率饱和的影响仅适用于概率占用网格。

世界,网格和本地坐标

当与MATLAB占用网格工作®,你可以使用世界,当地或网格坐标。

机器人在其中工作的绝对参考系称为世界坐标系在占用网格中。世界上最执行操作框架,并使用MATLAB函数时的默认选择工具箱。世界坐标用作具有固定原点的绝对坐标框架,点可以用任何分辨率指定。然而,位置转换为网格的位置,因为所有数据存储和分辨率限制地图本身。

当地框架是指用于车辆导航地图中的自我中心帧。的GridOriginInLocalLocalOriginInWorld属性定义在本地坐标的网格,并在世界坐标中的本地帧的相对位置的原点。您可以使用此调整本地帧移动函数。有关使用本地帧作为自中心地图来模拟车辆移动并发送本地障碍物的示例,请参见使用距离传感器创建以自我为中心的占用地图

网格坐标定义了占用网格的实际分辨率和障碍物的有限位置。网格坐标的原点在网格的左上角,第一个位置的索引为(1,1)。但是,那GridLocationInWorld在MATLAB占用网格的属性定义在世界坐标网格的左下角。当创建一个占用网格对象,属性,如XWorldLimitsYWorldLimits由输入被定义宽度,高度决议。该图示出了这些特性的视觉表示和世界和网格坐标之间的关系。

坐标的通货膨胀

二进制文件以及正常占用电网有充气障碍物的选项。这种通货膨胀是用来添加的障碍的安全系数,并创建缓冲区的环境中机器人与障碍物之间的区域。的膨胀占用网格对象的函数转换指定半径到的细胞数量从舍入分辨率*半径值。每个算法单独使用该单元格的值修改绕过障碍物值。

二进制占用网格

膨胀函数需要占用每个小区和直接围绕每个点添加占用空间膨胀它。这个基本的通货膨胀实施例说明了半径值的使用方式。

在二进制占用网格中充气障碍物

这个例子显示了如何创建地图,设置障碍物的位置,并通过1米半径它充气。图上的帮助额外图说明膨胀和换挡由于转换到网格位置。

创建二进制占用电网。的位置[5,5]组占用。

MAP = binaryOccupancyMap(10,10,5);setOccupancy(地图,[5 5],1);

通过膨胀占据1米在地图上的空间。

充气(图1);显示(图)

标绘原位置,转换网格位置,画原圆。从图中可以看出,网格中心为[4.9 4.9],从[5 5]位置偏移。从那里绘制一个1m的圆,注意任何接触这个圆的单元格都被标记为已占用。图形被放大到相关区域。

保持θ= linspace(0, 2 *π);x = 4.9 + cos(θ);%X坐标圈y = 4.9 +罪(θ);%Y坐标圈图(5 5‘* b”,'MarkerSize', 10)%原位置图(4.9,4.9,'XR','MarkerSize', 10)%网格定位中心积(X,Y,'-r','行宽',2);半径为1m%圈。轴([3.6 6 3.6 6])AX = GCA;ax.XTick = [3.6:0.2:6];ax.YTick = [3.6:0.2:6];格传说(“原始位置”,“电网馆”,'通货膨胀')

可以看到从上面的图,甚至细胞几乎没有重叠的通货膨胀半径贴上。

入住网格

膨胀函数使用膨胀半径以执行概率通胀。概率通货膨胀充当局部最大值操作者和工具发现附近的小区的最高概率值。的膨胀函数使用该定义,以在整个网格膨胀更高的概率值。这种通货膨胀增加任何被占用的位置的大小,并为机器人导航绕过障碍物的缓冲地带。此示例示出了如何膨胀与一系列概率值。

充气障碍在入住网格

这个例子展示了如何对障碍物的充气方法进行概率性充气膨胀的大小和创建区域的缓冲区域与障碍物的概率较高。

创建10米* 10米的空映射。

MAP = occupancyMap(10,10,10);

世界中的位置的更新占有率在特定值pvalues

X = [1.2;2.3;3.4;4.5;5.6];Y = [5.0;4.0;3.0;2.0;1.0]; pvalues = [0.2 0.4 0.6 0.8 1]; updateOccupancy(map,[x y],pvalues) figure show(map)

充气由给定半径占领的地区。较大的占用值写在较小的值。您可以复制你的地图事先恢复任何不需要的更改。

savedMap = (map)复印件;充气(图0.5)图显示(图)

数赔率概率值的表示

当使用占用电网用概率值,目标是估计在实时机器人应用的障碍位置的概率。的occupancyMap类使用登录赔率表示每个单元格的概率值。每个概率值转换成对应的内部存储log-odds值。当被访问时,该值被转换回概率。这种表示用最少的操作有效地更新概率值。因此,您可以快速将传感器数据集成到地图中。

日志赔率表示使用下列公式:

请注意

数优势值存储为INT16值。此数据类型限制概率值以±0.001的分辨率,但极大地提高了存储器大小,并允许创建更大的地图。

概率饱和

当使用对数概率表示更新具有观测值的占用网格时,其值的范围为负无穷到正无穷。这个范围意味着如果一个机器人多次观察一个位置,比如一扇关闭的门,这个位置的对数概率值会变得不必要的高,或者概率值会饱和。如果门随后打开,机器人需要多次观察门是否打开,然后概率才会从被占领变为自由。在动态环境中,您希望映射对更改作出反应,以便更准确地跟踪动态对象。

为了防止这种饱和,更新ProbabilitySaturation在合并多个观测值时,限制允许的最小和最大概率值的性质。此属性是日志胜率值的上界和下界,使映射能够根据环境中的更改快速更新。饱和度限制的默认最小值和最大值是[0.001 0.999]。对于动态的环境中,所建议的值是至少[0.12 0.97]。考虑修改这一范围内,如果地图不针对多次观测足够迅速地更新。

也可以看看

||

相关话题