3 #ifndef SE2EZ_PLAN_GOALS_ 4 #define SE2EZ_PLAN_GOALS_ 6 #include <ompl/base/Constraint.h> 7 #include <ompl/datastructures/NearestNeighborsGNAT.h> 8 #include <ompl/base/goals/GoalLazySamples.h> 20 bool isSatisfied(
const State *state)
const override;
21 bool isSatisfied(
const State *state,
double *distance)
const override;
37 void function(
const ompl::base::State *state,
38 Eigen::Ref<Eigen::VectorXd> out)
const override;
39 void function(
const Eigen::Ref<const Eigen::VectorXd> &x,
40 Eigen::Ref<Eigen::VectorXd> out)
const override;
42 double distance(
const ompl::base::State *state)
const override;
43 bool isSatisfied(
const ompl::base::State *state)
const override;
54 Foliation(
const unsigned int ambientDim,
const unsigned int coDim,
const unsigned int leafDim,
55 double tolerance = magic::CONSTRAINT_PROJECTION_TOLERANCE);
57 virtual FoliationPtr copy()
const = 0;
59 virtual Eigen::VectorXd getTransversal(
const Eigen::Ref<const Eigen::VectorXd> &state)
const = 0;
61 virtual ConstraintPtr getLeaf(
const Eigen::Ref<const Eigen::VectorXd> &tv)
const = 0;
63 virtual FoliationPtr getFrond(
const Eigen::Ref<const Eigen::VectorXd> &a,
64 const Eigen::Ref<const Eigen::VectorXd> &b)
const = 0;
66 unsigned int getLeafDimension()
const;
67 unsigned int getTransverseDimension()
const;
68 void setLeafDimension(
unsigned int p);
69 void setTransverseDimension(
unsigned int t);
81 double tolerance = magic::CONSTRAINT_PROJECTION_TOLERANCE);
83 FoliationPtr copy()
const override;
85 void function(
const Eigen::Ref<const Eigen::VectorXd> &x,
86 Eigen::Ref<Eigen::VectorXd> out)
const override;
88 void jacobian(
const Eigen::Ref<const Eigen::VectorXd> &x,
89 Eigen::Ref<Eigen::MatrixXd> out)
const override;
91 Eigen::VectorXd getTransversal(
const Eigen::Ref<const Eigen::VectorXd> &state)
const override;
92 ConstraintPtr getLeaf(
const Eigen::Ref<const Eigen::VectorXd> &tv)
const override;
93 FoliationPtr getFrond(
const Eigen::Ref<const Eigen::VectorXd> &a,
94 const Eigen::Ref<const Eigen::VectorXd> &b)
const override;
97 void addConstraint(
const FoliationPtr &constraint);
107 ConstraintGoal(
const ConstraintPtr &constraint, SpaceInformationPtr si,
double threshold = 1e-5);
113 bool sample(
const GoalLazySamples *gls, State *state);
114 void update(
const State *state);
116 Eigen::Ref<Eigen::VectorXd> getVector(State *state)
const;
117 const Eigen::Ref<const Eigen::VectorXd> getVectorConst(
const State *state)
const;
128 const unsigned int tries_{5};
129 const unsigned int maxSample_{100};
130 ConstraintPtr allocateConstraint(
const ConstraintPtr &constraint)
const;
const std::shared_ptr< GoalRegion > goal_
bool isSatisfied(const State *state) const override
const StateSamplerPtr sampler_
void setThreshold(double threshold)
std::vector< FoliationPtr > foliations_
Constituent constraints.
unsigned int t_
Transverse dimension.
double distanceGoal(const State *state) const override
void print(std::ostream &out=std::cout) const override
const ConstraintPtr constraint_
WrapperGoalRegion(const SpaceInformationPtr &si, const std::shared_ptr< GoalRegion > &goal)
double getThreshold() const
std::shared_ptr< NearestNeighbors< Transition > > transverse_
OMPL_CLASS_FORWARD(WrapperGoal)
unsigned int p_
Leaf dimension.
const bool isConstrained_
const std::shared_ptr< GoalRegion > goal_