Main Content

nav.StatePropagator class

Package: nav

State propagator for control-based planning


The nav.StatePropagator class is an interface for all state propagators used with the kinodynamic path planners derived from nav.StateSpace. Derive from this class if you are defining a propagator for your custom motion model or control system. For a concrete implementation for mobile robots, see the mobileRobotPropagator object.

This class generates controls, propagates state, and estimates cost or distance between states. Controlled systems utilize two main equations for two steps:

Initial Control

  • [u(i),steps] = controlFcn(q(i-1),u(i-1),qTgt) generates the next control command from the previous state, control input, and target state.

Propagate the System

  • q(i) = q(i-1) + integrate(q,u(i),steps) propagates the state q(i-1) using the generated command u(i) for the specified number of steps. The propagator uses a fixed step size, specified by the ControlStepSize property.

The propagateWhileValid method defines the integration and optionally, the control behavior, and also checks whether the generated states are valid within the state space. To skip state validation, use the propagate method.

When creating an instance of class, specify the StateSpace property, which defines the number of state variables, state bounds, and sampling behavior of the propagator. Also, specify the control limits on creation, which determines the value of the NumControlOutput property.

When you change properties, such as the state space, you may need to change the internal behavior of the propagator. To do this, implement the changes in the setup method and call setup(obj) before calling other methods again.

The nav.StatePropagator class is a handle class.



propagatorObj = nav.StatePropagator(stateSpace,stepSize,numControlOutput) creates a state propagator object for propagating a kinodynamic system.


expand all

Public Properties

State space for sampling during planning, specified as an object of a subclass of nav.StateSpace.

The state space is responsible for representing configuration space of a system. The class should include all state information related to the propagated system. Systems employing multi-layer cascade controllers can append persistent low-level control information directly to the state vector, whereas the state propagator directly manages top-level control commands.

Duration of each control command, specified as a positive scalar.

Protected Properties

Number of variables in the control command, specified as a positive integer.




expand all

Version History

Introduced in R2021b