www.gusucode.com > robotics 案例源码程序 matlab代码 > robotics/InflateBinaryOccupancyGridExample.m
%% Inflate Obstacles in a Binary Occupancy Grid % This example shows how to create the map, set the obstacle locations and % inflate it by a radius of 1m. Extra plots on the figure help illustrate % the inflation and shifting due to conversion to grid locations. %% % Create binary occupancy grid. Set occupancy of position [5,5]. map = robotics.BinaryOccupancyGrid(10,10,5); setOccupancy(map,[5 5], 1); %% % Inflate occupied spaces on map by 1m. inflate(map,1); show(map) %% % Plot original location, converted grid position and draw the original % circle. You can see from this plot, that the grid center is [4.9 4.9], % which is shifted from the [5 5] lcoation. A 1m circle is drawn from there % and notice that any cells that touch this circle are marked as occupied. % Figure is zoomed in to relevant area. 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') %% % As you can see from the above figure, even cells that barely overlap with % the inflation radius are labeled as occupied.