# stateSpaceDubins

State space for Dubins vehicles

Since R2019b

## Description

The `stateSpaceDubins` object stores parameters and states in the Dubins state space, which is composed of state vectors represented by [x, y, θ]. x and y are Cartesian coordinates, and θ is the orientation angle. The Dubins state space has a lower limit on the turning radius (specified by the `MinTurningRadius` property in the object) for navigating between states and uses the shortest feasible curve to connect states.

## Creation

### Syntax

``space = stateSpaceDubins``
``space = stateSpaceDubins(bounds)``

### Description

example

````space = stateSpaceDubins` creates a Dubins state space object with default state bounds for x, y, and θ. ```
````space = stateSpaceDubins(bounds)` specifies the `bounds` for x, y, and θ. The state values beyond the bounds are truncated to the bounds. The input, `bounds`, allows you to set the value of the StateBounds property.```

## Properties

expand all

Name of state space, specified as a string.

This property is read-only.

Dimension of the state space, specified as a positive integer.

Bounds of state variables, specified as a 3-by-2 real-valued matrix.

• The first row specifies the lower and upper bounds for the x state in meters.

• The second row specifies the lower and upper bounds for the y state in meters.

• The third row specifies the lower and upper bounds for the θ state in radians.

Data Types: `double`

Minimum turning radius in meters, specified as a positive scalar. The minimum turning radius is for the smallest circle the vehicle can make with maximum steer in a single direction.

## Object Functions

 `copy` Create deep copy of state space object `distance` Distance between two states `enforceStateBounds` Reduce state to state bounds `interpolate` Interpolate between states `sampleGaussian` Sample state using Gaussian distribution `sampleUniform` Sample state using uniform distribution

## Examples

collapse all

Create a Dubins state space and set the minimum turing radius to `0.2`.

```ss = stateSpaceDubins; ss.MinTurningRadius = 0.2;```

Create an `occupancyMap`-based state validator using the created state space.

`sv = validatorOccupancyMap(ss);`

Create an occupancy map from an example map and set map resolution as 10 cells/meter.

```load exampleMaps map = occupancyMap(simpleMap,10); sv.Map = map;```

Set validation distance for the validator.

`sv.ValidationDistance = 0.01;`

Update state space bounds to be the same as map limits.

`ss.StateBounds = [map.XWorldLimits;map.YWorldLimits; [-pi pi]];`

Create the path planner and increase max connection distance.

```planner = plannerRRT(ss,sv); planner.MaxConnectionDistance = 0.3;```

Set the start and goal states.

```start = [0.5,0.5,0]; goal = [2.5,0.2,0];```

Plan a path with default settings.

```rng(100,'twister'); % repeatable result [pthObj,solnInfo] = planner.plan(start,goal);```

Visualize the results.

```show(map); hold on; plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-'); % tree expansion plot(pthObj.States(:,1), pthObj.States(:,2),'r-','LineWidth',2) % draw path```

## Version History

Introduced in R2019b