se2ez
helper.h
Go to the documentation of this file.
1 /* Author: Zachary Kingston */
2 
3 #ifndef SE2EZ_PLAN_HELPER_
4 #define SE2EZ_PLAN_HELPER_
5 
6 #include <ompl/base/Constraint.h>
7 #include <ompl/base/ConstrainedSpaceInformation.h>
8 
9 #include <ompl/geometric/SimpleSetup.h>
10 
12 
13 namespace se2ez
14 {
15  /** \cond IGNORE */
16  SE2EZ_CLASS_FORWARD(Robot)
17  SE2EZ_CLASS_FORWARD(State)
18  /** \endcond */
19 
20  namespace plan
21  {
22  /** \cond IGNORE */
23  SE2EZ_CLASS_FORWARD(StateSpace)
24  /** \endcond */
25 
26  /** \cond IGNORE */
27  SE2EZ_CLASS_FORWARD(EZPlans)
28  /** \endcond */
29 
30  class EZPlans
31  {
32  public:
33  EZPlans(const RobotPtr &robot);
34  virtual ~EZPlans();
35 
36  template <typename T, typename... Args>
38  {
39  auto p = std::make_shared<T>(info, std::forward<Args>(args)...);
40  p->setup();
41  return p;
42  }
43 
44  template <typename T, typename... Args>
45  std::shared_ptr<T> setPlanner(Args &&... args)
46  {
47  auto planner = makePlanner<T>(std::forward<Args>(args)...);
48  setup->setPlanner(planner);
49  return planner;
50  }
51 
52  virtual void initialize();
53  virtual void updateValidityChecker();
54 
55  void createPlanners();
56 
57  /* \name State Functions
58  \{ */
59  bool setStart(const std::string &name);
60  bool setGoal(const std::string &name);
61  bool setStartGoal(const std::string &start, const std::string &goal);
62 
63  bool setStart(const Eigen::VectorXd &vec);
64  bool setGoal(const Eigen::VectorXd &vec);
65  bool setStartGoal(const Eigen::VectorXd &start, const Eigen::VectorXd &goal);
66 
67  bool setStart(const StatePtr &state);
68  bool setGoal(const StatePtr &state);
69  bool setStartGoal(const StatePtr &start, const StatePtr &goal);
70 
71  virtual bool postSetState(const ompl::base::State *state);
72  /* \} */
73 
74  /* \name Path Functions
75  \{ */
76  std::vector<std::string> getPlanners();
77  void setPlanner(const std::string &name);
78 
79  void postprocess(bool simplify, bool interpolate);
80 
81  std::vector<StatePtr> extractPath() const;
82  /* \} */
83 
84  /* \name Utility Functions
85  \{ */
86  virtual StatePtr getState(ompl::base::State *state) const;
87  virtual const StatePtr getStateConst(const ompl::base::State *state) const;
88  /* \} */
89 
90  StateSpacePtr rspace;
91  ompl::base::StateSpacePtr space;
92  ompl::base::SpaceInformationPtr info;
93  ompl::geometric::SimpleSetupPtr setup;
94 
95  protected:
98  };
99 
101  {
105  };
106 
107  /** \cond IGNORE */
109  /** \endcond */
110 
111  class EZPlansConstraint : public EZPlans
112  {
113  public:
114  EZPlansConstraint(const RobotPtr &robot, const ompl::base::ConstraintPtr &constraint,
115  ConstraintType method);
116 
117  virtual ~EZPlansConstraint();
118 
119  void initialize() override;
120  void updateValidityChecker() override;
121  bool postSetState(const ompl::base::State *state) override;
122 
123  ompl::base::ConstraintPtr constraint;
125 
126  StatePtr getState(ompl::base::State *state) const override;
127  const StatePtr getStateConst(const ompl::base::State *state) const override;
128 
129  protected:
130  void anchor(const ompl::base::State *state);
131  bool checkConstraint(const ompl::base::State *state) const;
132  };
133  } // namespace plan
134 } // namespace se2ez
135 
136 #endif
ompl::geometric::SimpleSetupPtr setup
Definition: helper.h:93
ompl::base::SpaceInformationPtr info
Definition: helper.h:92
A shared pointer wrapper for se2ez::State.
const ConstraintType method
Definition: helper.h:124
StateSpacePtr rspace
Definition: helper.h:90
std::shared_ptr< T > makePlanner(Args &&... args)
Definition: helper.h:37
std::shared_ptr< T > setPlanner(Args &&... args)
Definition: helper.h:45
ompl::base::ConstraintPtr constraint
Definition: helper.h:123
const RobotPtr robot_
Definition: helper.h:96
A shared pointer wrapper for se2ez::Robot.
ompl::base::StateSpacePtr space
Definition: helper.h:91
std::map< std::string, ompl::base::PlannerPtr > planners_
Definition: helper.h:97
Main namespace.
Definition: collision.h:11
#define SE2EZ_CLASS_FORWARD(C)
Definition: class_forward.h:9
ConstraintType
Definition: helper.h:100