Main Content


Set up the mobile robot state propagator

Since R2021b



setup(mobileProp) sets up the mobileRobotPropagator object based on the properties of the object. If you change the properties of the object, use this object function before you use the object to sample controls, propagate the system, or calculate distances.


Override this function to implement custom functionality to run in the setup.


collapse all

Create a state propagator and specify the distance metric for estimating propagation cost.

propagator = mobileRobotPropagator(DistanceEstimator="dubins");

Create a Dubins state space.

dubinsSpace = stateSpaceDubins([0 25; 0 25; -pi pi]);

Update the state space of the state propagator using the created state space.

propagator.StateSpace = dubinsSpace;

Create a navPath object based on multiple waypoints in a Dubins space.

path = navPath(dubinsSpace);
waypoints = [8 10 pi/2;
             7 14 pi/4;
             10 17 pi/2;
             10 10 -pi];

Interpolate that path so that it contains exactly 250 points.

numStates = 250;

Extract the sequence of motions from the path.

q1 = path.States(1:end-1,:); % Initial states
q2 = path.States(2:end,:);   % Final states

Estimate the cost of propagating to target state.

cost = distance(propagator,q1,q2);

Generate a series of control commands and number of steps to move from the current state q1 with control command u toward the target state q2.

u = zeros(size(q1,1),propagator.NumControlOutput);
steps = zeros(size(q1,1),1);
for i = 1:size(q1,1)
    [u(i+1,:),steps(i)] = sampleControl(propagator,q1(i,:),u(i,:),q2(i,:));

Create a control-based path object with the specified state propagator and a sequence of specified states, controls, targets, and durations.

states = path.States;
controls = u(2:end,:);
targets = q2;
durations = steps*propagator.ControlStepSize;
path2 = navPathControl(propagator,states,controls,targets,durations);

Visualize the results.

grid on
axis equal
hold on

Input Arguments

collapse all

Mobile robot state propagator, specified as a mobileRobotPropagator object.

Version History

Introduced in R2021b