From 24bc07a24624f194f6651efc96b1b6aedd82e0ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joaquim=20Casals=20Bu=C3=B1uel?= <jcasals@iri.upc.edu>
Date: Wed, 30 Jan 2019 15:29:48 +0100
Subject: [PATCH] Fixed parsing yaml with unique name

---
 hello_plugin/parser_yaml.hpp           |  6 ++++--
 hello_wolf/processor_range_bearing.cpp |  4 ++--
 src/processor/processor_odom_2D.cpp    | 15 +++++++--------
 src/sensor/sensor_odom_2D.cpp          |  6 +++---
 4 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/hello_plugin/parser_yaml.hpp b/hello_plugin/parser_yaml.hpp
index ade8b47dd..455561e01 100644
--- a/hello_plugin/parser_yaml.hpp
+++ b/hello_plugin/parser_yaml.hpp
@@ -205,11 +205,13 @@ void parserYAML::parse(){
     this->parseFirstLevel(this->_file);
     for(auto it : _paramsSens){
         vector<string> tags = vector<string>();
-        this->walkTreeR(it.n , tags , it._type + "/" + it._name);
+        // this->walkTreeR(it.n , tags , it._type + "/" + it._name);
+        this->walkTreeR(it.n , tags , it._name);
     }
     for(auto it : _paramsProc){
         vector<string> tags = vector<string>();
-        this->walkTreeR(it.n , tags , it._type + "/" + it._name);
+        // this->walkTreeR(it.n , tags , it._type + "/" + it._name);
+        this->walkTreeR(it.n , tags , it._name);
     }
 }
 map<string, string> parserYAML::fetchAsMap(YAML::Node n){
diff --git a/hello_wolf/processor_range_bearing.cpp b/hello_wolf/processor_range_bearing.cpp
index c6e1b8fba..470405c20 100644
--- a/hello_wolf/processor_range_bearing.cpp
+++ b/hello_wolf/processor_range_bearing.cpp
@@ -116,8 +116,8 @@ ProcessorBasePtr ProcessorRangeBearing::createNew(const std::string& _unique_nam
 {
     SensorRangeBearingPtr       sensor_rb = std::static_pointer_cast<SensorRangeBearing>(_sensor_ptr);
     ProcessorParamsRangeBearingPtr params = std::make_shared<ProcessorParamsRangeBearing>();
-    params->voting_active = _server.getParam<bool>("voting_active", "false");
-    params->time_tolerance = _server.getParam<double>("time_tolerance", "0.01");
+    params->voting_active = _server.getParam<bool>(_unique_name + "/voting_active", "false");
+    params->time_tolerance = _server.getParam<double>(_unique_name + "/time_tolerance", "0.01");
 
     // construct processor
     ProcessorRangeBearingPtr prc = std::make_shared<ProcessorRangeBearing>(sensor_rb, params);
diff --git a/src/processor/processor_odom_2D.cpp b/src/processor/processor_odom_2D.cpp
index eb17c030e..a0f584296 100644
--- a/src/processor/processor_odom_2D.cpp
+++ b/src/processor/processor_odom_2D.cpp
@@ -196,14 +196,13 @@ ProcessorBasePtr ProcessorOdom2D::createNew(const std::string& _unique_name, con
 
     std::shared_ptr<ProcessorParamsOdom2D> params;
     params = std::make_shared<ProcessorParamsOdom2D>();
-
-    params->voting_active               = _server.getParam<bool>("voting_active", "true");
-    params->time_tolerance              = _server.getParam<double>("time_tolerance", "0.1");
-    params->max_time_span               = _server.getParam<double>("max_time_span", "999");
-    params->dist_traveled               = _server.getParam<double>("dist_traveled", "0.95"); // Will make KFs automatically every 1m displacement
-    params->angle_turned                = _server.getParam<double>("angle_turned", "999");
-    params->cov_det                     = _server.getParam<double>("cov_det", "999");
-    params->unmeasured_perturbation_std = _server.getParam<double>("unmeasured_perturbation_std", "0.0001");
+    params->voting_active               = _server.getParam<bool>(_unique_name + "/voting_active", "true");
+    params->time_tolerance              = _server.getParam<double>(_unique_name + "/time_tolerance", "0.1");
+    params->max_time_span               = _server.getParam<double>(_unique_name + "/max_time_span", "999");
+    params->dist_traveled               = _server.getParam<double>(_unique_name + "/dist_traveled", "0.95"); // Will make KFs automatically every 1m displacement
+    params->angle_turned                = _server.getParam<double>(_unique_name + "/angle_turned", "999");
+    params->cov_det                     = _server.getParam<double>(_unique_name + "/cov_det", "999");
+    params->unmeasured_perturbation_std = _server.getParam<double>(_unique_name + "/unmeasured_perturbation_std", "0.0001");
 
     prc_ptr = std::make_shared<ProcessorOdom2D>(params);
     prc_ptr->setName(_unique_name);
diff --git a/src/sensor/sensor_odom_2D.cpp b/src/sensor/sensor_odom_2D.cpp
index 092479c1b..ac9e1bf77 100644
--- a/src/sensor/sensor_odom_2D.cpp
+++ b/src/sensor/sensor_odom_2D.cpp
@@ -69,12 +69,12 @@ SensorBasePtr SensorOdom2D::create(const std::string& _unique_name, const Eigen:
 SensorBasePtr SensorOdom2D::createNew(const std::string& _unique_name, const paramsServer& _server)
 {
     // Eigen::VectorXs _extrinsics_po = Eigen::Vector3s(0,0,0);
-    Eigen::VectorXs _extrinsics_po = _server.getParam<Eigen::VectorXs>("ODOM 2D/"+ _unique_name + "/extrinsic/pos", "[0,0,0]");
+    Eigen::VectorXs _extrinsics_po = _server.getParam<Eigen::VectorXs>(_unique_name + "/extrinsic/pos", "[0,0,0]");
     assert(_extrinsics_po.size() == 3 && "Bad extrinsics vector length. Should be 3 for 2D.");
     SensorOdom2DPtr odo;
     IntrinsicsOdom2D params;
-    params.k_disp_to_disp = _server.getParam<double>("ODOM 2D/"+ _unique_name + "/intrinsic/k_disp_to_disp", "1");
-    params.k_rot_to_rot   = _server.getParam<double>("ODOM 2D/"+ _unique_name + "/intrinsic/k_rot_to_rot", "1");
+    params.k_disp_to_disp = _server.getParam<double>(_unique_name + "/intrinsic/k_disp_to_disp", "1");
+    params.k_rot_to_rot   = _server.getParam<double>(_unique_name + "/intrinsic/k_rot_to_rot", "1");
     odo = std::make_shared<SensorOdom2D>(_extrinsics_po, params);
     odo->setName(_unique_name);
     return odo;
-- 
GitLab