1 #ifndef ROBOTICS_CSPACE_H 2 #define ROBOTICS_CSPACE_H 5 #include <KrisLibrary/math/vector.h> 7 #include <KrisLibrary/utils/PropertyMap.h> 12 class NonlinearProgram;
19 typedef std::shared_ptr<EdgePlanner> EdgePlannerPtr;
38 void AddConstraint(
const std::string& name,
CSet* constraint);
39 void AddConstraint(
const std::string& name,
const std::shared_ptr<CSet>& constraint);
40 void AddConstraint(
const std::string& name,CSet::CPredicate test);
41 void CopyConstraints(
const CSpace* space,
const std::string& prefix=
"");
42 virtual int NumDimensions();
43 virtual std::string VariableName(
int i);
44 virtual int NumConstraints() {
return (
int)constraints.size(); }
45 virtual std::string ConstraintName(
int i) {
return constraintNames[i]; }
46 virtual std::shared_ptr<CSet> Constraint(
int i) {
return constraints[i]; }
48 virtual void SampleNeighborhood(
const Config& c,Real r,
Config& x);
49 virtual bool IsFeasible(
const Config&);
50 virtual bool IsFeasible(
const Config&,
int constraint);
51 virtual EdgePlannerPtr LocalPlanner(
const Config& a,
const Config& b);
52 virtual EdgePlannerPtr PathChecker(
const Config& a,
const Config& b);
53 virtual EdgePlannerPtr PathChecker(
const Config& a,
const Config& b,
int constraint);
62 virtual bool ProjectFeasible(
Config& x);
68 virtual Real ObstacleDistance(
const Config& a);
96 virtual void CheckConstraints(
const Config&,std::vector<bool>& satisfied);
99 void GetFeasibleNames(
const Config& q,std::vector<std::string>& names);
101 void GetInfeasibleNames(
const Config& q,std::vector<std::string>& names);
103 void PrintInfeasibleNames(
const Config& q,std::ostream& out=std::cout,
const char* prefix=
"",
const char* suffix=
"\n");
105 std::vector<std::string> constraintNames;
106 std::vector<std::shared_ptr<CSet> > constraints;
Namespace for classes and functions in the Optimization package.
Definition: CSet.h:7
Real Sample(const Interval &s)
Uniformly samples the given intervals.
Definition: sample.cpp:116
Vector Config
an alias for Vector
Definition: RobotKinematics3D.h:14
Motion planning configuration space base class. The configuration space implements an interpolation s...
Definition: CSpace.h:34
Abstract base class for an edge planner / edge checker (i.e., local planner).
Definition: EdgePlanner.h:49
virtual Real Distance(const Config &x, const Config &y)
optionally overrideable (default uses euclidean space)
Definition: CSpace.h:56
A base class for all 1D interpolators.
Definition: Interpolator.h:10
Standard vector/matrix metrics.
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
A simple map from keys to values.
Definition: PropertyMap.h:27
A structure defining a nonlinear program.
Definition: NonlinearProgram.h:22
A subset of a CSpace, which establishes a constraint for a configuration to be feasible.
Definition: CSet.h:20