KrisLibrary  1.0.0
Public Member Functions | List of all members
EdgePlanner Class Referenceabstract

Abstract base class for an edge planner / edge checker (i.e., local planner). More...

#include <EdgePlanner.h>

Inheritance diagram for EdgePlanner:
Interpolator BisectionEpsilonEdgePlanner EdgeChecker PathEdgeChecker EndpointEdgeChecker EpsilonEdgeChecker FalseEdgeChecker Geometric2DEdgeChecker ObstacleDistanceEdgeChecker PiggybackEdgePlanner TrueEdgeChecker EdgePlannerWithCSpaceContainer IncrementalizedEdgePlanner MultiEdgePlanner StatUpdatingEdgePlanner

Public Member Functions

virtual bool IsVisible ()=0
 
virtual CSpaceSpace () const =0
 
virtual std::shared_ptr< EdgePlannerCopy () const =0
 
virtual std::shared_ptr< EdgePlannerReverseCopy () 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 ConfigStart () const =0
 
virtual const ConfigEnd () const =0
 
virtual Real ParamStart () const
 
virtual Real ParamEnd () const
 

Detailed Description

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:


The documentation for this class was generated from the following file: