Main Content


Update occupancy probability at locations



updateOccupancy(map3D,xyz,obs) probabilistically integrates the observation values, obs, to each specified xyz coordinate in the occupancyMap3D object, map3D.


collapse all

Create an occupancyMap3D object.

map3D = occupancyMap3D;

Create a ground plane and set occupancy values to 0.

[xGround,yGround,zGround] = meshgrid(0:100,0:100,0);
xyzGround = [xGround(:) yGround(:) zGround(:)];
occval = 0;

Create obstacles in specific world locations of the map.

[xBuilding1,yBuilding1,zBuilding1] = meshgrid(20:30,50:60,0:30);
[xBuilding2,yBuilding2,zBuilding2] = meshgrid(50:60,10:30,0:40);
[xBuilding3,yBuilding3,zBuilding3] = meshgrid(40:60,50:60,0:50);
[xBuilding4,yBuilding4,zBuilding4] = meshgrid(70:80,35:45,0:60);

xyzBuildings = [xBuilding1(:) yBuilding1(:) zBuilding1(:);...
                xBuilding2(:) yBuilding2(:) zBuilding2(:);...
                xBuilding3(:) yBuilding3(:) zBuilding3(:);...
                xBuilding4(:) yBuilding4(:) zBuilding4(:)];

Update the obstacles with new probability values and display the map.

obs = 0.65;

Check if the map file named citymap.ot already exist in the current directory and delete it before creating the map file.

if exist("citymap.ot",'file')

Export the map as an octree file.

filePath = fullfile(pwd,"citymap.ot");

Input Arguments

collapse all

3-D occupancy map, specified as an occupancyMap3D object.

World coordinates, specified as an n-by-3 matrix of [x y z] points, where n is the number of world coordinates.

Probability observation values, specified as a numeric or logical scalar, or as an n-by-1 column vector with the same size as xyz.

obs values can be from 0 to 1, but if obs is a logical array, the function uses the default observation values of 0.7 (true) and 0.4 (false). If obs is a numeric or logical scalar, the value is applied to all coordinates in xyz.

Introduced in R2019b