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