1 #ifndef OMPL_INTERFACE_H 2 #define OMPL_INTERFACE_H 6 #include <KrisLibrary/planning/CSpace.h> 7 #include <KrisLibrary/planning/AnyMotionPlanner.h> 8 #include <ompl/base/spaces/RealVectorStateSpace.h> 9 #include <ompl/base/StateValidityChecker.h> 10 #include <ompl/base/MotionValidator.h> 11 #include <ompl/base/Planner.h> 12 namespace ob = ompl::base;
15 class CSpaceOMPLSpaceInformation;
16 class CSpaceOMPLStateSpace;
17 class CSpaceOMPLStateSampler;
18 class CSpaceOMPLValidityChecker;
19 class KrisLibraryOMPLPlanner;
24 class OMPLCSpace :
public CSpace 27 OMPLCSpace(
const ob::SpaceInformationPtr& si);
28 virtual ~OMPLCSpace();
29 void SetSpaceBounds(
const Config& qmin,
const Config& qmax);
31 void SetSpaceBounds(
const double& qmin,
const double& qmax);
33 ob::State * ToOMPL(
const Config& q);
35 void ToOMPL(
const Config& q,ob::State * s);
37 Config FromOMPL(
const ob::State *);
39 void FromOMPL(
const ob::State *,
Config& q);
41 virtual void SampleNeighborhood(
const Config& c,Real r,
Config& x);
42 virtual bool IsFeasible(
const Config& x);
45 virtual void Midpoint(
const Config& x,
const Config& y,
Config& out) { Interpolate(x,y,0.5,out); }
46 virtual EdgePlannerPtr PathChecker(
const Config& x,
const Config& y);
49 ob::SpaceInformationPtr si_;
50 ob::StateSamplerPtr sampler_;
51 ob::State *stemp1, *stemp2, *stemp3;
63 class KrisLibraryOMPLPlanner :
public ob::Planner
69 virtual ob::PlannerStatus solve (
const ob::PlannerTerminationCondition &ptc);
70 virtual void getPlannerData (ob::PlannerData &data)
const;
73 std::shared_ptr<OMPLCSpace> cspace;
74 std::shared_ptr<MotionPlannerInterface> planner;
82 class CSpaceOMPLSpaceInformation :
public ob::SpaceInformation
85 CSpaceOMPLSpaceInformation(
CSpace* space);
86 ob::State * ToOMPL(
const Config& q)
const;
87 Config FromOMPL(
const ob::State *)
const;
98 class CSpaceOMPLStateSpace :
public ob::RealVectorStateSpace
101 CSpaceOMPLStateSpace(
CSpace* space,CSpaceOMPLSpaceInformation* si);
102 virtual unsigned int getDimension (
void)
const;
103 virtual double getMaximumExtent (
void)
const;
104 virtual void enforceBounds (ob::State *state)
const;
105 virtual bool satisfiesBounds (
const ob::State *state)
const;
106 virtual double distance (
const ob::State *state1,
const ob::State *state2)
const;
107 virtual void interpolate (
const ob::State *from,
const ob::State *to,
const double t, ob::State *state)
const;
108 virtual ob::StateSamplerPtr allocDefaultStateSampler (
void)
const;
111 CSpaceOMPLSpaceInformation* si;
112 std::vector<double> minimum,maximum;
118 class CSpaceOMPLStateSampler :
public ob::StateSampler
121 CSpaceOMPLStateSampler(
const CSpaceOMPLStateSpace* space);
122 virtual void sampleUniform (ob::State *state);
123 virtual void sampleUniformNear (ob::State *state,
const ob::State *near,
const double distance);
124 virtual void sampleGaussian (ob::State *state,
const ob::State *mean,
const double stdDev);
134 class CSpaceOMPLValidityChecker :
public ob::StateValidityChecker
137 CSpaceOMPLValidityChecker(CSpaceOMPLSpaceInformation* space);
138 virtual bool isValid(
const ob::State* state)
const;
148 class CSpaceOMPLMotionValidator :
public ob::MotionValidator
151 CSpaceOMPLMotionValidator(CSpaceOMPLSpaceInformation* space);
152 virtual bool checkMotion (
const ob::State *s1,
const ob::State *s2)
const;
153 virtual bool checkMotion (
const ob::State *s1,
const ob::State *s2, std::pair< ob::State *, double > &lastValid)
const;
virtual void Properties(PropertyMap &)
Returns properties of the space that might be useful for planners.
Definition: CSpace.cpp:127
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:39
A motion planner creator.
Definition: AnyMotionPlanner.h:257
virtual Real Distance(const Config &x, const Config &y)
optionally overrideable (default uses euclidean space)
Definition: CSpace.h:61
A simple map from keys to values.
Definition: PropertyMap.h:27