mediator/abstract_mediator.h
Go to the documentation of this file.
1 #ifndef ABSTRACT_MEDIATOR_
2 #define ABSTRACT_MEDIATOR_
3 
4 #include <ros/ros.h>
6 #include "robot/abstract_robot.h"
7 #include "robot/ceti_robot.h"
8 
9 
11 
12 #include "reader/wing_reader.h"
13 #include "reader/ts_reader.h"
14 
15 #include <ros/package.h>
16 #include <yaml-cpp/yaml.h>
17 #include <fstream>
18 
19 #include <octomap/octomap.h>
20 #include <pcl/point_cloud.h>
21 #include <pcl/octree/octree.h>
22 
23 struct wing_BP {
24  std::string name_;
25  tf2::Transform pos_;
26  tf2::Vector3 size_;
27 };
28 
30 
33 class Abstract_mediator {
34  protected:
35  std::shared_ptr<ros::NodeHandle> nh_;
36  std::unique_ptr<Ts_reader> task_space_reader_;
37  std::vector<std::unique_ptr<Abstract_robot_decorator>> robots_;
38  std::vector<std::vector<std::vector<tf2::Transform>>> relative_bounds_;
39 
40  std::map<const std::string, std::vector<pcl::PointXYZ>> result_vector_;
41  std::map<const std::string, std::vector<std::unique_ptr<Abstract_robot_element>>> wings_;
42  std::string dirname_;
43 
44  public:
46 
50  Abstract_mediator(std::shared_ptr<ros::NodeHandle> const& d);
51 
53 
56  inline void set_result_vector(std::map<const std::string, std::vector<pcl::PointXYZ>>& res) {result_vector_ = res;}
57 
59 
62  inline std::map<const std::string, std::vector<std::unique_ptr<Abstract_robot_element>>>& wings() {return wings_;}
63 
65 
68  inline std::map<const std::string, std::vector<pcl::PointXYZ>>& result_vector() {return result_vector_;}
69 
71 
74  inline std::vector<std::unique_ptr<Abstract_robot_decorator>>& robots(){return robots_;}
75 
77 
80  inline void set_dirname(std::string& dirn) {dirname_ = dirn;}
81 
83 
86  inline std::string& dirname() {return dirname_;}
87 
88 
90 
95  pcl::PointCloud< pcl::PointXYZ >::Ptr vector_to_cloud(std::vector<pcl::PointXYZ>& vector);
96 
98 
101  virtual void connect_robots(std::unique_ptr<Abstract_robot_decorator> robot)=0;
102 
104 
107  virtual bool check_collision( const int& robot)=0;
108 
110  virtual void mediate()=0;
111 
113 
118  virtual void build_wings(std::bitset<3>& wing, int& robot)=0;
119 
120 
121 };
122 
123 
124 #endif
wing_BP::pos_
tf2::Transform pos_
Definition: impl/abstract_mediator.h:28
Abstract_mediator::result_vector_
std::map< const std::string, std::vector< pcl::PointXYZ > > result_vector_
Result_vector of base positions linked to robot.
Definition: mediator/abstract_mediator.h:40
Abstract_mediator::Abstract_mediator
Abstract_mediator(std::vector< std::vector< tf2::Transform >> objects, ros::Publisher *pub)
Definition: impl/abstract_mediator.h:48
abstract_robot_element.h
Abstract_mediator::relative_bounds_
std::vector< std::vector< std::vector< tf2::Transform > > > relative_bounds_
total bound a workspace
Definition: impl/abstract_mediator.h:37
Abstract_mediator::robots_
std::vector< std::unique_ptr< Abstract_robot_decorator > > robots_
Robots agents.
Definition: mediator/abstract_mediator.h:37
Abstract_mediator::set_result_vector
void set_result_vector(std::map< const std::string, std::vector< pcl::PointXYZ >> &res)
Set result vector.
Definition: mediator/abstract_mediator.h:56
Abstract_mediator
Abstract mediator.
Definition: impl/abstract_mediator.h:33
wing_BP
Definition: impl/abstract_mediator.h:26
Abstract_mediator::check_collision
virtual bool check_collision(const int &robot)=0
Abstract_mediator::set_dirname
void set_dirname(std::string &dirn)
Set dirname.
Definition: mediator/abstract_mediator.h:80
Abstract_mediator::wings_
std::map< const std::string, std::vector< std::unique_ptr< Abstract_robot_element > > > wings_
Definition: mediator/abstract_mediator.h:41
abstract_robot_decorator.h
Abstract_mediator::robots
std::vector< std::unique_ptr< Abstract_robot_decorator > > & robots()
Get robots.
Definition: mediator/abstract_mediator.h:74
ceti_robot.h
Abstract_mediator::wings
std::map< const std::string, std::vector< std::unique_ptr< Abstract_robot_element > > > & wings()
Get wings.
Definition: mediator/abstract_mediator.h:62
wing_BP::name_
std::string name_
Definition: impl/abstract_mediator.h:27
abstract_robot.h
Abstract_mediator::wings_
std::vector< std::vector< Abstract_robot_element * > > wings_
Definition: impl/abstract_mediator.h:40
Abstract_mediator::vector_to_cloud
pcl::PointCloud< pcl::PointXYZ >::Ptr vector_to_cloud(std::vector< pcl::PointXYZ > &vector)
Definition: impl/abstract_mediator.cpp:16
Abstract_mediator::task_space_reader_
std::unique_ptr< Ts_reader > task_space_reader_
Task_space reader which provides drop off positions.
Definition: mediator/abstract_mediator.h:36
wing_BP::size_
tf2::Vector3 size_
Definition: impl/abstract_mediator.h:29
Abstract_mediator::result_vector_
std::vector< std::vector< pcl::PointXYZ > > result_vector_
Definition: impl/abstract_mediator.h:39
Abstract_mediator::dirname_
std::string dirname_
Dirname of the reference protobuff.
Definition: impl/abstract_mediator.h:41
Abstract_mediator::result_vector
std::map< const std::string, std::vector< pcl::PointXYZ > > & result_vector()
Get result_vector.
Definition: mediator/abstract_mediator.h:68
Abstract_mediator::mediate
virtual void mediate()=0
Abstract_mediator::connect_robots
virtual void connect_robots(Abstract_robot *robot)=0
wing_reader.h
ts_reader.h
Abstract_mediator::build_wings
virtual void build_wings(std::bitset< 3 > &wing, int &robot)=0
Abstract_mediator::dirname
std::string & dirname()
Get dirname.
Definition: mediator/abstract_mediator.h:86
Abstract_mediator::robots_
std::vector< Abstract_robot * > robots_
Definition: impl/abstract_mediator.h:35
Abstract_mediator::nh_
std::shared_ptr< ros::NodeHandle > nh_
Ros nodehandle object.
Definition: mediator/abstract_mediator.h:35


multi_cell_builder
Author(s): MA
autogenerated on Thu Jan 12 2023 23:45:43