KrisLibrary
1.0.0
|
A class that produces a KinodynamicCSpace from a dynamics function subclassed from IntegratedControlSpace. Collision checking is performed at the integration resolution given in the dynamics function. More...
#include <KinodynamicSpace.h>
Public Member Functions | |
IntegratedKinodynamicSpace (const std::shared_ptr< CSpace > &xspace, const std::shared_ptr< IntegratedControlSpace > &controlSpace) | |
virtual EdgePlannerPtr | TrajectoryChecker (const ControlInput &u, const InterpolatorPtr &path) |
Public Member Functions inherited from KinodynamicSpace | |
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 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< IntegratedControlSpace > | controlSpace |
Public Attributes inherited from KinodynamicSpace | |
std::shared_ptr< CSpace > | stateSpace |
std::shared_ptr< ControlSpace > | controlSpace |
A class that produces a KinodynamicCSpace from a dynamics function subclassed from IntegratedControlSpace. Collision checking is performed at the integration resolution given in the dynamics function.
A differential constraint is expressed as x' = g(x,u), where x is a state, x' is its time derivative, and u is the control input. x is still subject to the standard feasibility constraints (checked using IsFeasible() declared in CSpace), but also u is subject to validity constraints.
This constraint is described by a "simulation function". Given an initial state x0 and control input u, the function f(x0,u) returns a new state x1. In the case of the nonholonomic constraint x'=g(x,u), we could define f as the Euler step
f(x0,u) = x0 + dt*g(x0,u)
or any other type of PDE integrator. The functionality should be implemented in the function Simulate().
Note: the choice of time step dt can potentially create a resolution issue. It may be wise to include dt in the control input variable. I.e. let u = [dt, v], and g = g(x,v). This allows some flexibility in choosing the time step during sampling.
|
virtual |
Return an edge planner that checks the simulation trace p for feasibility Typically, just return the state space's PathChecker
Reimplemented from KinodynamicSpace.
References KinodynamicMilestonePath::MakePaths(), and KinodynamicMilestonePath::SimulateFromControls().