Parasol Planning Library (PPL)
MPTask.h
Go to the documentation of this file.
1 #ifndef PMPL_MP_TASK_TYPE_H_
2 #define PMPL_MP_TASK_TYPE_H_
3 
4 #include "nonstd/status.h"
5 
6 #include "Utilities/MPUtils.h"
7 
8 #include <memory>
9 #include <string>
10 #include <vector>
11 
12 class Boundary;
13 class Cfg;
14 class Constraint;
15 class MPProblem;
16 class Robot;
17 class XMLNode;
18 class Environment;
19 
20 
46 class MPTask final {
47 
48  public:
49 
52 
54  typedef std::vector<std::unique_ptr<Constraint>> ConstraintSet;
55 
59 
62  explicit MPTask(Robot* const _robot);
63 
67  explicit MPTask(MPProblem* const _problem, XMLNode& _node, Environment* _env = nullptr);
68 
69  MPTask(const MPTask& _other);
70  MPTask(MPTask&& _other);
71 
73 
77 
78  MPTask& operator=(const MPTask& _other);
79  MPTask& operator=(MPTask&& _other);
80 
84 
86  Robot* GetRobot() const noexcept;
87 
90  void SetRobot(Robot* const _r);
91 
93  const std::string& GetLabel() const noexcept;
94 
97  void SetLabel(const std::string& _label) noexcept;
98 
100  nonstd::status& GetStatus() noexcept;
101  const nonstd::status& GetStatus() const noexcept;
102 
106  bool Empty() const noexcept;
107 
109  size_t GetNumGoals() const noexcept;
110 
116 
119  void SetStartConstraint(std::unique_ptr<Constraint>&& _c);
120 
123  void AddPathConstraint(std::unique_ptr<Constraint>&& _c);
124 
127  void AddGoalConstraint(std::unique_ptr<Constraint>&& _c);
128 
130  const Constraint* GetStartConstraint() const noexcept;
132  const ConstraintSet& GetPathConstraints() const noexcept;
134  const ConstraintSet& GetGoalConstraints() const noexcept;
135 
137  void ClearGoalConstraints();
138 
141  void SetCapability(const std::string& _capability);
142 
145  const std::string& GetCapability() const noexcept;
146 
151 
154  void SetEstimatedStartTime(const double _time) noexcept;
157  void SetEstimatedCompletionTime(const double _time) noexcept;
158 
160  double GetEstimatedStartTime() const noexcept;
162  double GetEstimatedCompletionTime() const noexcept;
163 
165  void SetReleaseWindow(const std::pair<double,double> _release) noexcept;
167  void SetDeadlineWindow(const std::pair<double,double> _deadline) noexcept;
168 
170  std::pair<double,double> GetReleaseWindow() const noexcept;
172  std::pair<double,double> GetDeadlineWindow() const noexcept;
173 
177 
181  bool EvaluateCapability(const Robot* const _r) const;
182 
186  bool EvaluateStartConstraints(const Cfg& _cfg) const;
187 
191  bool EvaluatePathConstraints(const Cfg& _cfg) const;
192 
196  bool EvaluateGoalConstraints(const Cfg& _cfg) const;
197 
202  bool EvaluateGoalConstraints(const Cfg& _cfg, const size_t _index) const;
203 
205 
206  private:
207 
210 
211  Robot* m_robot{nullptr};
212 
213  std::string m_label;
214  nonstd::status m_status;
215 
216  std::unique_ptr<Constraint> m_startConstraint;
217  ConstraintSet m_pathConstraints;
218  ConstraintSet m_goalConstraints;
219  std::string m_capability;
220 
221  double m_startTime{0};
222  double m_finishTime{0};
223 
225  std::pair<double,double> m_releaseWindow;
226 
228  std::pair<double,double> m_deadlineWindow;
230 
231 };
232 
233 #endif
Definition: Boundary.h:30
Definition: Cfg.h:38
Definition: Constraint.h:23
Definition: Environment.h:137
Definition: MPProblem.h:34
Definition: MPTask.h:46
const ConstraintSet & GetPathConstraints() const noexcept
Get all path constraints.
Definition: MPTask.cpp:206
bool EvaluatePathConstraints(const Cfg &_cfg) const
Definition: MPTask.cpp:309
std::vector< std::unique_ptr< Constraint > > ConstraintSet
A set of constraints.
Definition: MPTask.h:54
bool EvaluateGoalConstraints(const Cfg &_cfg) const
Definition: MPTask.cpp:319
void SetLabel(const std::string &_label) noexcept
Definition: MPTask.cpp:142
double GetEstimatedCompletionTime() const noexcept
Get the estimated completion time for the task.
Definition: MPTask.cpp:255
MPTask & operator=(MPTask &&_other)
Move.
const Constraint * GetStartConstraint() const noexcept
Get start constraint.
Definition: MPTask.cpp:199
Robot * GetRobot() const noexcept
Get the robot associated with this task.
Definition: MPTask.cpp:114
void AddGoalConstraint(std::unique_ptr< Constraint > &&_c)
Definition: MPTask.cpp:192
MPTask(MPTask &&_other)
Move.
void AddPathConstraint(std::unique_ptr< Constraint > &&_c)
Definition: MPTask.cpp:185
void SetCapability(const std::string &_capability)
Definition: MPTask.cpp:226
bool Empty() const noexcept
Definition: MPTask.cpp:163
void SetEstimatedStartTime(const double _time) noexcept
Definition: MPTask.cpp:241
const ConstraintSet & GetGoalConstraints() const noexcept
Get all goal constraints.
Definition: MPTask.cpp:213
MPTask & operator=(const MPTask &_other)
Copy.
Definition: MPTask.cpp:83
void SetEstimatedCompletionTime(const double _time) noexcept
Definition: MPTask.cpp:248
std::pair< double, double > GetReleaseWindow() const noexcept
Get the release window.
Definition: MPTask.cpp:279
void SetReleaseWindow(const std::pair< double, double > _release) noexcept
Set release window.
Definition: MPTask.cpp:268
double GetEstimatedStartTime() const noexcept
Get the estimated start time for the task.
Definition: MPTask.cpp:262
void ClearGoalConstraints()
Remove all goal constraints.
Definition: MPTask.cpp:220
void SetStartConstraint(std::unique_ptr< Constraint > &&_c)
Definition: MPTask.cpp:178
MPTask(Robot *const _robot)
Definition: MPTask.cpp:16
nonstd::status & GetStatus() noexcept
Get the status object for this task.
Definition: MPTask.cpp:149
const std::string & GetCapability() const noexcept
Definition: MPTask.cpp:233
bool EvaluateCapability(const Robot *const _r) const
Definition: MPTask.cpp:293
void SetDeadlineWindow(const std::pair< double, double > _deadline) noexcept
Set deadline window.
Definition: MPTask.cpp:273
std::pair< double, double > GetDeadlineWindow() const noexcept
Get the deadline window.
Definition: MPTask.cpp:285
const std::string & GetLabel() const noexcept
Get the semantic label for this task.
Definition: MPTask.cpp:135
size_t GetNumGoals() const noexcept
Get the number of goals in this task.
Definition: MPTask.cpp:170
void SetRobot(Robot *const _r)
Definition: MPTask.cpp:121
bool EvaluateStartConstraints(const Cfg &_cfg) const
Definition: MPTask.cpp:301
Definition: Robot.h:31
Definition: XMLNode.h:27