KrisLibrary
1.0.0
|
A class used for kinodynamic planning. Combines a CSpace defining the state space, as well as a ControlSpace. More...
#include <KinodynamicSpace.h>
Public Member Functions | |
KinodynamicSpace (const std::shared_ptr< CSpace > &xspace, const std::shared_ptr< ControlSpace > &uspace) | |
std::shared_ptr< ControlSpace > | GetControlSpace () const |
std::shared_ptr< CSpace > | GetStateSpace () const |
std::shared_ptr< CSet > | GetControlSet (const Config &x) |
virtual EdgePlannerPtr | PathChecker (const InterpolatorPtr &path) |
virtual EdgePlannerPtr | TrajectoryChecker (const ControlInput &u, const InterpolatorPtr &path) |
virtual EdgePlannerPtr | TrajectoryChecker (const KinodynamicMilestonePath &path) |
Return an edge planner that checks the path for feasibility. | |
bool | IsValidControl (const State &x, const ControlInput &u) |
InterpolatorPtr | Simulate (const State &x0, const ControlInput &u) |
void | Successor (const State &x0, const ControlInput &u, State &x1) |
Executes the simulation function x1 = f(x0,u) | |
bool | NextState (const State &x0, const ControlInput &u, State &x1) |
bool | PreviousState (const State &x1, const ControlInput &u, State &x0) |
virtual void | Properties (PropertyMap &props) const |
Marks this as being a dynamic problem. | |
Public Attributes | |
std::shared_ptr< CSpace > | stateSpace |
std::shared_ptr< ControlSpace > | controlSpace |
A class used for kinodynamic planning. Combines a CSpace defining the state space, as well as a ControlSpace.
Kinodynamic planning is used for systems with nonholonomic constraints as well as other types of state-dependent constraints.
A ControlSpace gives a simulation function x' = f(x,u) where x is the input state, u is the control input, and x' is the next state. The control space
For differential constraints, please use IntegratedKinodynamicSpace.
bool KinodynamicSpace::NextState | ( | const State & | x0, |
const ControlInput & | u, | ||
State & | x1 | ||
) |
If the trajectory from x0 controlled by u is feasible, sets x1 to the end state and returns true. If infeasible, returns false. (implementation calls Simulate() and TrajectoryChecker()->IsVisible())
Referenced by Successor().
bool KinodynamicSpace::PreviousState | ( | const State & | x1, |
const ControlInput & | u, | ||
State & | x0 | ||
) |
If the trajectory from x1 reverse-controlled by u is feasible, sets x0 to the initial state and returns true. If infeasible, returns false. (implementation calls ReverseSimulate() and TrajectoryChecker()->IsVisible())
Referenced by Successor().
|
inline |
Executes the simulation function f(x0,u) and records its trace in the result. The trace is an interpolator between x0 and the successor state
Referenced by KinodynamicMilestonePath::MakeEdges().
|
virtual |
Return an edge planner that checks the simulation trace p for feasibility Typically, just return the state space's PathChecker
Reimplemented in IntegratedKinodynamicSpace, StateCostKinodynamicSpace, and DoubleIntegratorKinodynamicSpace.
Referenced by KinodynamicMilestonePath::MakeEdges(), KinodynamicMilestonePath::SimulateFromControls(), and StateCostKinodynamicSpace::TrajectoryChecker().