KrisLibrary
1.0.0
|
Abstract base class for an edge planner / edge checker (i.e., local planner). More...
#include <EdgePlanner.h>
Public Member Functions | |
virtual bool | IsVisible ()=0 |
virtual CSpace * | Space () const =0 |
virtual std::shared_ptr< EdgePlanner > | Copy () const =0 |
virtual std::shared_ptr< EdgePlanner > | ReverseCopy () const =0 |
virtual bool | IsIncremental () const |
virtual Real | Priority () const |
virtual bool | Plan () |
virtual bool | Done () const |
virtual bool | Failed () const |
Public Member Functions inherited from Interpolator | |
virtual void | Eval (Real u, Config &x) const =0 |
virtual Real | Length () const =0 |
virtual const Config & | Start () const =0 |
virtual const Config & | End () const =0 |
virtual Real | ParamStart () const |
virtual Real | ParamEnd () const |
Abstract base class for an edge planner / edge checker (i.e., local planner).
There is a subtle difference between edge planners and edge checkers, and for the most part we use checkers as planners. The specific difference is this:
As an example, both EpsilonEdgeChecker and BisectionEpsilonEdgePlanner cut the path into a number of segments and checks each for feasibility. They are equivalent if the space's Interpolate method is a geodesic, so that the interpolant between any two points on a curve is a subset of the curve itself. If not, however, the BisectionEpsilonEdgePlanner creates a different path after it is done. This is used, for example, with CSpaces that lie on submanifolds and use projection during interpolation.
NOTE: Sharing pointers between edge planners is dangerous; the only pointer that can be copied is the configuration space! Use shared_ptr's if data must be shared among instances.
There is a difference between one-shot and incremental EdgePlanners. One-shot EdgePlanners implement the following methods:
In addition, incremental planners implement the following: