robot_base_calculation_approach.cpp
Go to the documentation of this file.
1 
2 #include <xmlrpcpp/XmlRpc.h>
3 #include <filesystem>
4 
5 
7 #include "reader/robot_reader.h"
8 #include "reader/wing_reader.h"
9 
10 #include "bridge/abstract_base.h"
12 #include "bridge/simple_base.h"
14 
15 #include "robot/abstract_robot.h"
16 #include "robot/ceti_robot.h"
19 
20 
24 
27 
30 
31 
32 int main(int argc, char **argv){
33  ros::init(argc, argv, "robot_base_calculation_apprioach");
34  std::shared_ptr<ros::NodeHandle> n(new ros::NodeHandle);
35 
36  std::shared_ptr<Abstract_base> simple_base = std::make_shared<Simple_base>(n);
37  std::shared_ptr<Abstract_base_implementation> simple_base_implementation = std::make_shared<Simple_base_implementation>();
38  std::shared_ptr<Base_calculation_mediator> mediator = std::make_shared<Base_calculation_mediator>(n);
39 
40  simple_base->set_implementation(simple_base_implementation);
41 
42  std::map<const std::string, std::vector<pcl::PointXYZ>> results = simple_base->base_calculation();
43 
44  auto rd = mediator->robot_reader()->robot_data();
45  for (int i = 0; i < rd.size() ;i++){
46  std::unique_ptr<Abstract_robot> ceti = std::make_unique<Ceti_robot>(rd[i].name_, rd[i].pose_, rd[i].size_);
47  std::unique_ptr<Panda_decorator> ceti_panda = std::make_unique<Panda_decorator>(std::move(ceti));
48  ROS_INFO("penis");
49  mediator->connect_robots(std::move(ceti_panda));
50  }
51  mediator->set_result_vector(results);
52 
53 
54 
55  //mediator->set_dirname(filename);
56 
57  auto wd = mediator->wing_reader()->wing_data();
58 
59  for (int i = 0; i < mediator->robots().size(); i++){
60  // iterate wing date
61  try{
62  for(object_data& w : wd.at(mediator->robots()[i]->name()).first){
63  // calculate relative panel transform
64  w.pose_ = mediator->robots()[i]->tf().inverse() * w.pose_;
65  }
66  } catch(const std::out_of_range& oor) {
67  ROS_INFO("No panel data for %s", mediator->robots()[i]->name().c_str());
68  }
69 
70  // set mask data
71  try{
72  auto ceti_bot = dynamic_cast<Ceti_robot*>(mediator->robots()[i]->next());
73  ceti_bot->set_observer_mask(static_cast<wing_config>(wd.at(mediator->robots()[i]->name()).second));
74  } catch(const std::out_of_range& oor) {
75  ROS_INFO("No mask data for %s", mediator->robots()[i]->name().c_str());
76  }
77  }
78 
79  mediator->set_panel();
80 
81  //mediator->mediate();
82 
83 
84 
85  /*
86  //map_loader->write_task(robo);
87 
88  //free(rviz_right);
89  //free(rviz_mid);
90  //free(rviz_left);
91 
92 
93  free(map_loader);
94  free(strategy);
95 
96  //free(robo);
97 
98  //free(robo2);
99  */
100  return 0;
101 }
abstract_robot_element.h
Ceti_robot::set_observer_mask
void set_observer_mask(int i)
Definition: ceti_robot.h:118
log_decorator.h
abstract_robot_decorator.h
abstract_param_reader.h
abstract_base.h
ceti_robot.h
abstract_robot.h
base_calculation_mediator.h
abstract_mediator.h
object_data
Definition: abstract_param_reader.h:13
main
int main(int argc, char **argv)
Definition: robot_base_calculation_approach.cpp:32
rviz_panel.h
wing_reader.h
robot_reader.h
Ceti_robot
Concrete Ceti-Robot.
Definition: ceti_robot.h:22
abstract_robot_element_decorator.h
wing_config
wing_config
Definition: impl/abstract_robot.h:14
simple_base.h
panda_decorator.h
panel.h
simple_base_implementation.h
abstract_base_implementation.h


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