%% Convert PGM Image to Map
% Convert a portable graymap (.pgm) file containing a ROS map into an OccupancyGrid map for use in MATLAB.
% Import the image using imread. Crop the image to the relevant area.

image = imread('playpen_map.pgm');
imageCropped = image(750:1250,750:1250);
imshow(imageCropped)

%
% PGM values are expressed from 0 to 255 as uint8. Normalize these values by converting the cropped image to double and dividing each cell by 255. This image shows obstacles as values close to 0. Subtract the normalized image from 1 to get occupancy values with 1 representing occupied space.

imageNorm = double(imageCropped)/255;
imageOccupancy = 1 - imageNorm;

%
% Create the OccupancyGrid object using an adjusted map image. The imported map resolution is 20 cells per meter.

map = robotics.OccupancyGrid(imageOccupancy,20);
show(map)