libmove3d-planners
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros Groups Pages
task.hpp
1 #ifndef TASK_HPP
2 #define TASK_HPP
3 
4 
5 #include "GTP/GTPTools/grid.hpp"
6 #include "GTP/GTPTools/worldState.hpp"
7 #include "GTP/GTPTools/geometricTools/geometricComputations.hpp"
8 #include "GTP/GTPTools/geometricTools/geometricForms-pkg.hpp"
9 #include "GTP/GTPTools/taskConstraints.hpp"
10 #include "GTP/GTPTools/solutionTools/structTools.hpp"
11 #include "lightPlanner/proto/ManipulationPlanner.hpp"
12 
13 #include "Logging/Logger.h"
14 
15 #include "database/semantics/Sem_SemanticsManager.hpp"
16 
17 
18 
19 #include "move3d-headless.h"
20 #include "Planner-pkg.h"
21 #include "Collision-pkg.h"
22 #include "planner/planEnvironment.hpp"
23 
24 #include "API/Device/robot.hpp"
25 #include "GTP/GTPTools/solutionTools/gtpPlan.hpp"
26 
27 
28 #include <iostream>
29 #include <map>
30 
31 
32 
33 #define MAXIKLOOP 200
34 
35 class WorldState;
36 class TaskSubSolution;
37 
38 template < typename T > std::string toString( const T& n );
39 class TaskAllSolutions;
40 class TaskSolution;
41 class TaskConstraints;
42 class PlanTree;
43 
44 class Task
45 {
46  MOVE3D_STATIC_LOGGER;
47 public:
48  Task();
49  virtual bool initAll() = 0;
50  virtual bool initialize() = 0;
51  virtual bool finalize() = 0;
52  virtual bool findCandidateSolutions() = 0;
53  virtual bool findConfigurations() =0;
54  virtual bool findTrajectories() =0;
55  virtual bool setToSolution(int solutionId, bool computeMP) = 0;
56  virtual bool testConstraints(int alternativeId) = 0;
57  //validatePoint();
58  virtual bool setAgents(std::multimap<std::string,std::string> agents_name) = 0;
59  virtual bool setObjects(std::multimap<std::string,std::string> objects_name) = 0;
60  virtual bool setPoints(std::multimap<std::string,p3d_point> points) = 0;
61  virtual bool setdata(std::multimap<std::string,std::string> additionalData) = 0;
62  virtual bool run(std::multimap<std::string,std::string> agents_name,
63  std::multimap<std::string,std::string> objects_name,
64  std::multimap<std::string,p3d_point> point3d,
65  std::multimap<std::string,std::string> additionalData,
66  WorldState* WS, bool computeMP);
67  virtual double heuristic(std::multimap<std::string,std::string> agents_name,
68  std::multimap<std::string,std::string> objects_name,
69  std::multimap<std::string,p3d_point> point3d,
70  std::multimap<std::string,std::string> additionalData,
71  WorldState* WS, bool computeMP);
72  virtual TaskSolution* findAlternative(bool computeMP) = 0;
73  virtual double computeCost(int altId) = 0;
74  virtual double computeHeuristicCost();
75  virtual bool computeSolutionTrajectories(int alternativeId) = 0;
76  p3d_traj* compute_traj(confPtr_t q_init, confPtr_t q_goal, int& status);
77  virtual bool computeManipulationConfs(confPtr_t& approachC, confPtr_t& graspC, confPtr_t& graspOC, confPtr_t& escapeC, p3d_matrix4 objectPosMat,
78  gpGrasp grasp, p3d_vector3 approachDir, double approachDist , p3d_vector3 escapeDir, double escapeDist);
79  virtual bool computeInverseKinematic(Robot* ag, p3d_matrix4 target_pos, confPtr_t &solution, int armId, bool fromCurPos);
80  p3d_traj* compute_traj_using_localPath(confPtr_t q_init, confPtr_t q_goal, int& status);
81 // virtual vector<TaskSubSolution*> setNextTraj(TaskSubSolution* doneTSS) =0;
82  virtual void smoothSolution(int alternativeId) = 0;
83  int getId();
84  void setId(int id);
85  std::string getType() { return type; }
86  TasksId getTypeId() { return typeId; }
87  virtual std::string getDescr() = 0;
88  virtual std::string getTextFromValues() = 0;
89  TaskSubSolution* getSubSolAt(int alternativeId, int id);
90  int getSubSolNumberOfTrajs(int alternativeId);
91 
92  virtual double getSSSizeLeft();
93 
94  TaskAllSolutions* getResult(){return result; }
95  void setResult(TaskAllSolutions* r){result = r; }
96 
97  void setConstraints(TaskConstraints* c) {_currConstraints = c;}
98  TaskConstraints* getCurrConstraint(){return _currConstraints;}
99 
106  virtual std::vector<int> getJointsIdsToUse() {return std::vector<int>(0);}
107 
108  void setGraph(Graph* g) {_taskGraph = g;}
109  Graph* getGraph() {return _taskGraph;}
110 
111  void setPlanTree(PlanTree* pt) {_planTree = pt;}
112  PlanTree* getPlanTree() {return _planTree;}
113 
114  void setCurrentDataType(type_data pt) {currentDataType = pt;}
115  type_data getCurrentDataType() {return currentDataType;}
116 
117  std::vector<SurfaceAttachement> createRecursiveAttachements(Robot* r);
118  std::vector<SurfaceAttachement> createAndLoadSurfaceAttachements(Robot* r);
119  void removeSurfaceAttachements(std::vector<SurfaceAttachement> s);
120 
121 
122  SolutionData* SD;
123 
124 protected:
125  int task_id;
126  std::string type;
127  TasksId typeId;
128  TaskAllSolutions* result;
129  WorldState* _WS;
130 
131  int nbMaxLoops;
132  TaskConstraints* _currConstraints;
133 
134  int _returnReportcount;
135  int _returnReportcountMax;
136 
137  Graph* _taskGraph;
138  PlanTree* _planTree;
139  type_data currentDataType;
140 
141 };
142 #endif // TASK_HPP
Definition: taskSolution.hpp:9
Definition: taskConstraints.hpp:34
Definition: taskSubSolution.hpp:10
Definition: structTools.hpp:54
virtual std::vector< int > getJointsIdsToUse()
getJointsIdsToUse
Definition: task.hpp:106
Definition: graph.hpp:28
This class holds a the robot represented by a kinematic chain.
Definition: robot.hpp:42
Definition: gtpPlan.hpp:14
This file implements macros to help with the logging, in a way similar to ROS, using log4cxx...
Definition: worldState.hpp:30
Definition: taskAllSolutions.hpp:7
Definition: task.hpp:44
Info storage class.
Definition: solutiondata.h:19