From e73b64aa67c599d5fc45c625e92175f4af218469 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu>
Date: Wed, 7 Aug 2019 10:57:04 +0200
Subject: [PATCH] Add one level of structure to sensor laser params

---
 include/laser/sensor/sensor_laser_2D.h | 16 ++++++++--------
 src/yaml/sensor_laser_2D_yaml.cpp      | 24 ++++++++++++------------
 test/yaml/sensor_laser_2D.yaml         | 17 +++++++++--------
 3 files changed, 29 insertions(+), 28 deletions(-)

diff --git a/include/laser/sensor/sensor_laser_2D.h b/include/laser/sensor/sensor_laser_2D.h
index f352cfc46..0d52eb63a 100644
--- a/include/laser/sensor/sensor_laser_2D.h
+++ b/include/laser/sensor/sensor_laser_2D.h
@@ -25,14 +25,14 @@ struct IntrinsicsLaser2D : public IntrinsicsBase
         IntrinsicsLaser2D(std::string _unique_name, const wolf::ParamsServer & _server) :
             IntrinsicsBase(_unique_name, _server)
         {
-            scan_params.angle_min_      = _server.getParam<double>(_unique_name + "/angle_min");
-            scan_params.angle_max_      = _server.getParam<double>(_unique_name + "/angle_max");
-            scan_params.angle_step_     = _server.getParam<double>(_unique_name + "/angle_step");
-            scan_params.scan_time_      = _server.getParam<double>(_unique_name + "/scan_time");
-            scan_params.range_min_      = _server.getParam<double>(_unique_name + "/range_min");
-            scan_params.range_max_      = _server.getParam<double>(_unique_name + "/range_max");
-            scan_params.range_std_dev_  = _server.getParam<double>(_unique_name + "/range_std_dev");
-            scan_params.angle_std_dev_  = _server.getParam<double>(_unique_name + "/angle_std_dev");
+            scan_params.angle_min_      = _server.getParam<double>(_unique_name + "/LaserScanParams/angle_min");
+            scan_params.angle_max_      = _server.getParam<double>(_unique_name + "/LaserScanParams/angle_max");
+            scan_params.angle_step_     = _server.getParam<double>(_unique_name + "/LaserScanParams/angle_step");
+            scan_params.scan_time_      = _server.getParam<double>(_unique_name + "/LaserScanParams/scan_time");
+            scan_params.range_min_      = _server.getParam<double>(_unique_name + "/LaserScanParams/range_min");
+            scan_params.range_max_      = _server.getParam<double>(_unique_name + "/LaserScanParams/range_max");
+            scan_params.range_std_dev_  = _server.getParam<double>(_unique_name + "/LaserScanParams/range_std_dev");
+            scan_params.angle_std_dev_  = _server.getParam<double>(_unique_name + "/LaserScanParams/angle_std_dev");
         }
         std::string print()
         {
diff --git a/src/yaml/sensor_laser_2D_yaml.cpp b/src/yaml/sensor_laser_2D_yaml.cpp
index 7edaac553..66aff15a5 100644
--- a/src/yaml/sensor_laser_2D_yaml.cpp
+++ b/src/yaml/sensor_laser_2D_yaml.cpp
@@ -30,23 +30,23 @@ IntrinsicsBasePtr createIntrinsicsLaser2D(const std::string& _filename_dot_yaml)
 
     if (config["type"].as<std::string>() == "LASER 2D")
     {
+        YAML::Node ls_params = config["LaserScanParams"];
 
+        IntrinsicsLaser2DPtr params = std::make_shared<IntrinsicsLaser2D>();
 
-    IntrinsicsLaser2DPtr params = std::make_shared<IntrinsicsLaser2D>();
+        params->scan_params.angle_min_      = ls_params["/angle_min"]      .as<double>();
+        params->scan_params.angle_max_      = ls_params["/angle_max"]      .as<double>();
+        params->scan_params.angle_step_     = ls_params["/angle_step"]     .as<double>();
+        params->scan_params.scan_time_      = ls_params["/scan_time"]      .as<double>();
+        params->scan_params.range_min_      = ls_params["/range_min"]      .as<double>();
+        params->scan_params.range_max_      = ls_params["/range_max"]      .as<double>();
+        params->scan_params.range_std_dev_  = ls_params["/range_std_dev"]  .as<double>();
+        params->scan_params.angle_std_dev_  = ls_params["/angle_std_dev"]  .as<double>();
 
-    params->scan_params.angle_min_      = config["/angle_min"]      .as<double>();
-    params->scan_params.angle_max_      = config["/angle_max"]      .as<double>();
-    params->scan_params.angle_step_     = config["/angle_step"]     .as<double>();
-    params->scan_params.scan_time_      = config["/scan_time"]      .as<double>();
-    params->scan_params.range_min_      = config["/range_min"]      .as<double>();
-    params->scan_params.range_max_      = config["/range_max"]      .as<double>();
-    params->scan_params.range_std_dev_  = config["/range_std_dev"]  .as<double>();
-    params->scan_params.angle_std_dev_  = config["/angle_std_dev"]  .as<double>();
-
-    return params;
+        return params;
     }
 
-    std::cout << "Bad configuration file. No processor type found." << std::endl;
+    std::cout << "Bad configuration file " << _filename_dot_yaml << ". No processor type found." << std::endl;
     return nullptr;
 
 }
diff --git a/test/yaml/sensor_laser_2D.yaml b/test/yaml/sensor_laser_2D.yaml
index 709c3fe33..0010bf5cf 100644
--- a/test/yaml/sensor_laser_2D.yaml
+++ b/test/yaml/sensor_laser_2D.yaml
@@ -4,11 +4,12 @@ type          : "LASER 2D"
   # no params so far
   
 # from sensor laser 2D
-angle_min     : 1
-angle_max     : 2
-angle_step    : 3
-scan_time     : 4
-range_min     : 5
-range_max     : 6
-range_std_dev : 7
-angle_std_dev : 8
+LaserScanParams:
+  angle_min     : 1
+  angle_max     : 2
+  angle_step    : 3
+  scan_time     : 4
+  range_min     : 5
+  range_max     : 6
+  range_std_dev : 7
+  angle_std_dev : 8
-- 
GitLab