updateOccupancy

Update occupancy probability at locations

Since R2019b

Syntax

``updateOccupancy(map3D,xyz,obs)``

Description

example

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

Examples

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; setOccupancy(map3D,xyzGround,occval)```

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; updateOccupancy(map3D,xyzBuildings,obs) show(map3D)```

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') delete("citymap.ot") end ```

Export the map as an octree file.

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

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`.

Version History

Introduced in R2019b