Main Content

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

dubConnObj = dubinsConnection creates an object using default property values.

example

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})

Figure contains an axes object. The axes object contains 12 objects of type line, scatter. These objects represent Path, Heading, Start Position, Goal Position.

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})

Figure contains an axes object. The axes object contains 12 objects of type line, scatter. These objects represent Path, Heading, Start Position, Goal Position.

pathSegObj{1}.MotionTypes
ans = 1x3 cell
    {'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
    {'L'}    {'S'}    {'L'}

show(pathSegObj{1})

Figure contains an axes object. The axes object contains 10 objects of type line, scatter. These objects represent Path, Heading, Start Position, Goal Position.

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

Version History

Introduced in R2019b