Occupancy Grids

Occupancy Grids

Occupancy grids用于将机器人工作空间表示为离散网格。Occupancy grids用于机器人算法,如路径规划 (see mobileRobotPRM or plannerRRT)。它们被用于将传感器信息整合到离散地图中的测绘应用中,用于寻找无碰撞路径规划和在已知环境中定位机器人 (see monteCarloLocalization or matchScans)。您可以创建不同大小和分辨率的地图,以适应您的特定应用程序。

For 3-D occupancy maps, see occupancyMap3D.

For 2-D occupancy grids, there are two representations:

  • Binary occupancy grid (see binaryOccupancyMap)

  • Probability occupancy grid (see occupancyMap)

A binary occupancy grid uses true values来表示占用的工作空间(障碍) and false values to represent空闲工作空间。这个网格显示了障碍物的位置,以及机器人是否可以通过这个空间。如果内存大小是应用程序中的一个因素,则使用二进制占用网格。

A probability occupancy grid uses probability values来创建更详细的地图表示,占用网格中的每个单元都有一个值,表示该单元占用的概率,接近0的值表示单元格没有被占用并且没有障碍。该概率值可以提高目标的精确度,提高算法的性能。

网格和世界坐标适用于两种类型的occupancy grid。The inflation function膨胀函数也适用于这两个网格,但是每个网格实现的方式不同。log-odds表示和概率饱和的影响只适用于概率占用网格。

map = binaryOccupancyMap(10,10,5);
setOccupancy(map,[5 5], 0);
inflate(map,1);
show(map)

hold on
theta = linspace(0,2*pi);
x = 4.9+cos(theta); % x circle coordinates
y = 4.9+sin(theta); % y circle coordinates
plot(5,5,'*b','MarkerSize',10) % Original location
plot(4.9,4.9,'xr','MarkerSize',10) % Grid location center
plot(x,y,'-r','LineWidth',2); % Circle of radius 1m.
axis([3.6 6 3.6 6])
ax = gca;
ax.XTick = [3.6:0.2:6];
ax.YTick = [3.6:0.2:6];
grid on
legend('Original Location','Grid Center','Inflation')

World, Grid, and Local Coordinates

InflDtLon of Coordinates

这个膨胀是用来增加安全系数,并在机器人和环境中的障碍之间创建缓冲区的。占用网格对象的膨胀函数将指定的半径转换为从分辨率*半径值四舍五入的单元格数。每个算法分别使用这个单元格值来修改障碍物周围的值。

猜你喜欢

转载自www.cnblogs.com/RSheng16/p/12566588.html