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

A class that needs to be subclassed in order to implement a minimum constraint displacement problem. More...

#include <DisplacementPlanner.h>

Inheritance diagram for ObstacleDisplacementCSpace:
CSpace

Public Member Functions

virtual std::shared_ptr< CSpaceDisplacementSpace (int obstacle) const
 
virtual bool IsFeasible (const Config &q, int obstacle, const Vector &d)=0
 
virtual bool IsFeasibleAll (const Config &q, int obstacle)
 
virtual bool IsVisibleAll (const Config &a, const Config &b, int obstacle)
 
virtual void SetDisplacement (int obstacle, const Vector &d)
 
virtual void GetDisplacement (int obstacle, Vector &d) const
 
virtual void SetDisplacementRef (int obstacle, const Vector &d)
 
virtual void GetDisplacementRef (int obstacle, Vector &d) const
 
bool IsDisplaceable (int obstacle) const
 
virtual bool IsFeasible (const Config &q, int obstacle)
 
void InitZeroDisplacements ()
 
- Public Member Functions inherited from CSpace
void AddConstraint (const std::string &name, CSet *constraint)
 
void AddConstraint (const std::string &name, const std::shared_ptr< CSet > &constraint)
 
void AddConstraint (const std::string &name, CSet::CPredicate test)
 
void CopyConstraints (const CSpace *space, const std::string &prefix="")
 
virtual int NumDimensions ()
 
virtual std::string VariableName (int i)
 
virtual int NumConstraints ()
 
virtual std::string ConstraintName (int i)
 
virtual std::shared_ptr< CSetConstraint (int i)
 
virtual void Sample (Config &x)=0
 
virtual void SampleNeighborhood (const Config &c, Real r, Config &x)
 
virtual bool IsFeasible (const Config &)
 
virtual EdgePlannerPtr LocalPlanner (const Config &a, const Config &b)
 
virtual EdgePlannerPtr PathChecker (const Config &a, const Config &b)
 
virtual EdgePlannerPtr PathChecker (const Config &a, const Config &b, int constraint)
 
virtual Real Distance (const Config &x, const Config &y)
 optionally overrideable (default uses euclidean space)
 
virtual void Interpolate (const Config &x, const Config &y, Real u, Config &out)
 
virtual void Midpoint (const Config &x, const Config &y, Config &out)
 
virtual bool ProjectFeasible (Config &x)
 
virtual Optimization::NonlinearProgramFeasibleNumeric ()
 If possible, give the feasible set as a nonlinear program.
 
virtual Real ObstacleDistance (const Config &a)
 for local planners using obstacle distance
 
virtual void Properties (PropertyMap &)
 Returns properties of the space that might be useful for planners. More...
 
virtual void CheckConstraints (const Config &, std::vector< bool > &satisfied)
 Returns a vector indicating which constraints are satisfied.
 
void GetFeasibleNames (const Config &q, std::vector< std::string > &names)
 Gets a list of feasible obstacles for the given configuration.
 
void GetInfeasibleNames (const Config &q, std::vector< std::string > &names)
 Gets a list of infeasible obstacles for the given configuration.
 
void PrintInfeasibleNames (const Config &q, std::ostream &out=std::cout, const char *prefix="", const char *suffix="\n")
 Prints out the list of infeasible obstacles for the given configuration.
 

Public Attributes

std::vector< VectorobstacleDisplacements
 
std::vector< std::shared_ptr< CSpace > > displacementSpaces
 
- Public Attributes inherited from CSpace
std::vector< std::string > constraintNames
 
std::vector< std::shared_ptr< CSet > > constraints
 

Detailed Description

A class that needs to be subclassed in order to implement a minimum constraint displacement problem.

Each displaceable constraint accepts a displacement parameter d[i] which lies in a space Di. Di must be returned via the method DisplacementSpace that should be overridden by the subclass. If displaceable, the subclass should allocate a new CSpace via new, otherwise it should return NULL. Di should return a displacement cost in the Distance(a,b) method (when called by the planner, b will always be zero).

The space stores a current displacement in obstacleDisplacements. These are initialized to the zero vector.

Subclasses should override IsFeasible(q,i,d). They should also override IsFeasibleAll(q,i) if a bound can be placed on the span of all obstacles instantiated over valid displacements (i.e., if IsFeasibleAll(q,i) is true, then IsFeasible(q,i,d) should return true for all feasible d).

If the subclass uses special local planners that are not simply based on discretization, then the EdgePlanner should also use the current setting of obstacleDisplacements when checking visibility.

Besides these methods, the subclass also needs to override the CSpace method Sample(), the ExplicitCSpace NumObstacles() and LocalPlanner() method, and optionally the CSpace Distance(), Interpolate(), and Midpoint() methods.


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