Class ODESolver

Inheritance Relationships

Derived Types

Class Documentation

class ODESolver

Abstract base class for an object that can solve ordinary differential equations (ODE) of the type q’ = f(q,u) using numerical integration. Classes deriving from this must implement the solve method. The user must supply the ODE to solve.

Subclassed by ompl::control::ODEAdaptiveSolver< Solver >, ompl::control::ODEBasicSolver< Solver >, ompl::control::ODEErrorSolver< Solver >

Public Types

using StateType = std::vector<double>

Portable data type for the state values.

using ODE = std::function<void(const StateType&, const Control*, StateType&)>

Callback function that defines the ODE. Accepts the current state, input control, and output state.

using PostPropagationEvent = std::function<void(const base::State*, const Control*, double, base::State*)>

Callback function to perform an event at the end of numerical integration. This functionality is optional.

Public Functions

inline ODESolver(SpaceInformationPtr si, ODE ode, double intStep)

Parameterized constructor. Takes a reference to SpaceInformation, an ODE to solve, and the integration step size.

virtual ~ODESolver() = default

Destructor.

inline void setODE(const ODE &ode)

Set the ODE to solve.

inline double getIntegrationStepSize() const

Return the size of a single numerical integration step.

inline void setIntegrationStepSize(double intStep)

Set the size of a single numerical integration step.

inline const SpaceInformationPtr &getSpaceInformation() const

Get the current instance of the space information.

Public Static Functions

static inline StatePropagatorPtr getStatePropagator(ODESolverPtr solver, const PostPropagationEvent &postEvent = nullptr)

Retrieve a StatePropagator object that solves a system of ordinary differential equations defined by an ODESolver. An optional PostPropagationEvent can also be specified as a callback after numerical integration is finished for further operations on the resulting state.

Protected Functions

virtual void solve(StateType &state, const Control *control, double duration) const = 0

Solve the ODE given the initial state, and a control to apply for some duration.

Protected Attributes

const SpaceInformationPtr si_

The SpaceInformation that this ODESolver operates in.

ODE ode_

Definition of the ODE to find solutions for.

double intStep_

The size of the numerical integration step. Should be small to minimize error.