dubinsConnection

Dubins path connection type

Description

The dubinsConnection object holds information for computing a dubinsPathSegment path segment to connect between poses. A Dubins path segment connects two poses as a sequence of three motions. The motion options are:

  • Straight

  • Left turn at maximum steer

  • Right turn at maximum steer

A Dubins path segment only allows motion in the forward direction.

Use this connection object to define parameters for a robot motion model, including the minimum turning radius and options for path types. To generate a path segment between poses using this connection type, call the connect function.

Creation

Description

example

dubConnObj = dubinsConnection creates an object using default property values.

dubConnObj = dubinsConnection(Name,Value) specifies property values using name-value pairs. To set multiple properties, specify multiple name-value pairs.

Properties

expand all

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

Data Types: double

Dubins path types to disable, specified as a cell array of three-element character vectors or vector of string scalars. The cell array defines three sequences of motions that are prohibited by the vehicle motion model.

Motion TypeDescription
"S"Straight
"L"

Left turn at the maximum steering angle of the vehicle

"R"

Right turn at the maximum steering angle of the vehicle

To see all available path types, see the AllPathTypes property.

For Dubins connections, the available path types are: {"LSL"} {"LSR"} {"RSL"} {"RSR"} {"RLR"} {"LRL"}.

Example: ["LSL","LSR"]

Data Types: string | cell

This property is read-only.

All possible path types, returned as a cell array of character vectors. This property lists all types. To disable certain types, specify types from this list in DisabledPathTypes.

For Dubins connections, the available path types are: {'LSL'} {'LSR'} {'RSL'} {'RSR'} {'RLR'} {'LRL'}.

Data Types: cell

Object Functions

connectConnect poses for given connection type

Examples

collapse all

Create a dubinsConnection object.

dubConnObj = dubinsConnection;

Define start and goal poses as [x y theta] vectors.

startPose = [0 0 0];
goalPose = [1 1 pi];

Calculate a valid path segment to connect the poses.

[pathSegObj, pathCosts] = connect(dubConnObj,startPose,goalPose);

Show the generated path.

show(pathSegObj{1})

Create a dubinsConnection object.

dubConnObj = dubinsConnection;

Define start and goal poses as [x y theta] vectors.

startPose = [0 0 0];
goalPose = [1 1 pi];

Calculate a valid path segment to connect the poses.

pathSegObj = connect(dubConnObj,startPose,goalPose);

Show the generated path. Notice the direction of the turns.

show(pathSegObj{1})

pathSegObj{1}.MotionTypes
ans = 1x3 cell array
    {'R'}    {'L'}    {'R'}

Disable this specific motion sequence in a new connection object. Reduce the MinTurningRadius if the robot is more maneuverable. Connect the poses again to get a different path.

dubConnObj = dubinsConnection('DisabledPathTypes',{'RLR'});
dubConnObj.MinTurningRadius = 0.5;

[pathSegObj, pathCosts] = connect(dubConnObj,startPose,goalPose);
pathSegObj{1}.MotionTypes
ans = 1x3 cell array
    {'L'}    {'S'}    {'L'}

show(pathSegObj{1})

References

[1] Shkel, Andrei M., and Vladimir Lumelsky. "Classification of the Dubins set." Robotics and Autonomous Systems. Vol. 34, No. 4, 2001, pp. 179–202.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Introduced in R2019b