Parasol Planning Library (PPL)
Decomposition.h
Go to the documentation of this file.
1 #ifndef PPL_DECOMPOSITION_H_
2 #define PPL_DECOMPOSITION_H_
3 
4 #include "SemanticTask.h"
5 #include "SubtaskFlow.h"
6 
7 class MPProblem;
8 
9 class Decomposition {
10 
11  public:
12 
15 
16  Decomposition();
17 
19  Decomposition(std::shared_ptr<SemanticTask> _mainTask);
20 
25  Decomposition(XMLNode& _node, MPProblem* _problem);
26 
28 
32 
34  const std::string GetLabel() const;
35 
37  Robot* GetCoordinator() const;
38 
42  void SetCoordinator(Robot* _robot);
43 
46 
49  void SetRootTask(SemanticTask* _task);
50 
53  void AddTask(std::shared_ptr<SemanticTask> _task);
54 
57  SemanticTask* GetTask(std::string _label);
58 
60  std::vector<SemanticTask*>& GetMotionTasks();
61 
64  std::vector<SemanticTask*>& GetGroupMotionTasks();
65 
68  void AddMotionTask(SemanticTask* _task);
69 
73  void AddGroupMotionTask(SemanticTask* _task);
74 
76  const std::unordered_map<std::string,std::shared_ptr<
77  SemanticTask>>& GetTaskMap() const;
78 
81  void SetComplete(bool _complete=true);
82 
84  bool IsComplete();
85 
87 
88  private:
91 
95  void ParseTask(XMLNode& _node, MPProblem* _problem);
96 
100 
103  std::unordered_map<std::string,std::shared_ptr<
104  SemanticTask>> m_taskMap;
105 
107  std::vector<SemanticTask*> m_motionTasks;
108 
110  std::vector<SemanticTask*> m_groupMotionTasks;
111 
113  SemanticTask* m_rootTask;
114 
116  std::string m_label;
117 
119  Robot* m_coordinator;
120 
122  bool m_complete{false};
123 
125  std::unique_ptr<SubtaskFlow> m_subtaskFlow;
126 
128 };
129 #endif
Definition: Decomposition.h:9
Robot * GetCoordinator() const
Return the robot responsible for the decomposition.
Definition: Decomposition.cpp:61
void AddTask(std::shared_ptr< SemanticTask > _task)
Definition: Decomposition.cpp:85
Decomposition()
Definition: Decomposition.cpp:8
void SetComplete(bool _complete=true)
Definition: Decomposition.cpp:186
bool IsComplete()
Checks if the decompsition has been marked complete.
Definition: Decomposition.cpp:192
void AddGroupMotionTask(SemanticTask *_task)
Definition: Decomposition.cpp:127
std::vector< SemanticTask * > & GetMotionTasks()
Return the set of tasks with corresponding motion tasks.
Definition: Decomposition.cpp:109
const std::string GetLabel() const
Return the label for the decomposition.
Definition: Decomposition.cpp:55
const std::unordered_map< std::string, std::shared_ptr< SemanticTask > > & GetTaskMap() const
Return the map of all semantic tasks in the decomposition.
Definition: Decomposition.cpp:133
void SetCoordinator(Robot *_robot)
Definition: Decomposition.cpp:67
std::vector< SemanticTask * > & GetGroupMotionTasks()
Definition: Decomposition.cpp:115
void SetRootTask(SemanticTask *_task)
Definition: Decomposition.cpp:79
SemanticTask * GetTask(std::string _label)
Definition: Decomposition.cpp:95
~Decomposition()
Definition: Decomposition.cpp:49
SemanticTask * GetRootTask()
Return the root task in the decomposition tree.
Definition: Decomposition.cpp:73
void AddMotionTask(SemanticTask *_task)
Definition: Decomposition.cpp:121
Definition: MPProblem.h:34
Definition: Robot.h:31
Definition: SemanticTask.h:13
Definition: XMLNode.h:27