# obstacleGeometry

Geometric properties of obstacles

Since R2020b

## Syntax

``[obstacleIDs,geomStruct] = obstacleGeometry(capsuleListObj)``
``[obstacleIDs,geomStruct] = obstacleGeometry(capsuleListObj,selectObstacleIDs)``
``[obstacleIDs,geomStruct,status] = obstacleGeometry(capsuleListObj,selectObstacleIDs)``

## Description

````[obstacleIDs,geomStruct] = obstacleGeometry(capsuleListObj)` returns the obstacle ID and the geometry parameters for each obstacle in the capsule list.```

example

````[obstacleIDs,geomStruct] = obstacleGeometry(capsuleListObj,selectObstacleIDs)` specifies which obstacle to return the ID and geometry parameters for.```
````[obstacleIDs,geomStruct,status] = obstacleGeometry(capsuleListObj,selectObstacleIDs)` returns an indicator of whether each ID in `selectobstacleIDs` exists.```

## Examples

collapse all

Add obstacles to an environment using the `dynamicCapsuleList` object. Modify the properties of the obstacles. Remove an obstacle from the environment. Visualize the states of all objects in the environment at different timestamps.

Create the `dynamicCapsuleList` object. Extract the maximum number of steps to use as the number of time stamps for the object paths.

```capsuleList = dynamicCapsuleList; numSteps = capsuleList.MaxNumSteps;```

Specify the states for the two obstacles as a linear path from x = 0 m to x = 100 m. The two obstacles are separated by 10 m in opposite directions on the y-axis.

```obsState = linspace(0,1,numSteps)'.*[100 0 0]; obsState1 = obsState+[0 10 0]; obsState2 = obsState+[0 -10 0];```

Generate default poses and geometric structures for the two obstacles using obstacle IDs.

```[obsIDs,obsPoseStruct] = obstaclePose(capsuleList,[1 2]); [obsIDs,obsGeomStruct] = obstacleGeometry(capsuleList,obsIDs);```

Update Obstacles

Assign the states to the obstacles.

```obsPoseStruct(1).States = obsState1; obsPoseStruct(2).States = obsState2;```

Increase the radius of the first obstacle to 2 m.

`obsGeomStruct(1).Geometry.Radius = 2;`

update the obstacles using the `updateObstaclePose` and `updateObstacleGeometry` object functions.

```updateObstaclePose(capsuleList,obsIDs,obsPoseStruct); updateObstacleGeometry(capsuleList,obsIDs,obsGeomStruct);```

Visualize the obstacles.

```show(capsuleList,'TimeStep',1:numSteps); axis equal```

Remove Obstacles

Remove the first obstacle from the capsule list by specifying its ID.

`removeObstacle(capsuleList,1);`

Visualize the obstacles again.

```show(capsuleList,'TimeStep',1:numSteps); axis equal```

## Input Arguments

collapse all

Dynamic capsule list, specified as a `dynamicCapsuleList` or `dynamicCapsuleList3D` object.

Obstacle IDs, specified as a vector of positive integers. The function returns the obstacle IDs and geometry parameters for only the obstacles specified in this vector.

## Output Arguments

collapse all

IDs of obstacles, returned as a vector of positive integers.

Geometry parameters for obstacles, returned as a structure or structure array where each structure contains the fields from the structure in the `Geometry` field of the associated obstacle. The fields of this structure depend on whether you are using a `dynamicCapsuleList` or `dynamicCapsuleList3D` object.

Indication of obstacle existence, returned as a N-element column vector of ones, zeros, and negative ones. Each value indicates whether the associated obstacle exists (`1`), updated (`0`), or a duplicate (`-1`). If you specify the same ego body ID more than once in the `selectObstacleIDs` argument, then the function marks all instances of that ID after the first as duplicates and ignores them.

## Version History

Introduced in R2020b