KrisLibrary
1.0.0
|
A class that needs to be subclassed in order to implement a minimum constraint displacement problem. More...
#include <DisplacementPlanner.h>
Public Member Functions | |
virtual std::shared_ptr< CSpace > | DisplacementSpace (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< CSet > | Constraint (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::NonlinearProgram * | FeasibleNumeric () |
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< Vector > | obstacleDisplacements |
std::vector< std::shared_ptr< CSpace > > | displacementSpaces |
Public Attributes inherited from CSpace | |
std::vector< std::string > | constraintNames |
std::vector< std::shared_ptr< CSet > > | constraints |
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.