From e33460fbf6e8815e27c7cf89a1995ea0dfab5c58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu>
Date: Fri, 2 Aug 2019 04:05:46 +0200
Subject: [PATCH] Remove sensor from processor creators

---
 include/IMU/processor/processor_IMU.h |  6 +++---
 src/processor/processor_IMU.cpp       | 12 +++++-------
 test/gtest_processor_IMU.cpp          | 14 +++++++-------
 3 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/include/IMU/processor/processor_IMU.h b/include/IMU/processor/processor_IMU.h
index 34b2b1491..420990451 100644
--- a/include/IMU/processor/processor_IMU.h
+++ b/include/IMU/processor/processor_IMU.h
@@ -35,6 +35,9 @@ class ProcessorIMU : public ProcessorMotion{
         virtual ~ProcessorIMU();
         virtual void configure(SensorBasePtr _sensor) override { };
 
+        // Factory method for high level API
+        static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params);
+
     protected:
         virtual void computeCurrentDelta(const Eigen::VectorXs& _data,
                                          const Eigen::MatrixXs& _data_cov,
@@ -78,9 +81,6 @@ class ProcessorIMU : public ProcessorMotion{
         ProcessorParamsIMUPtr params_motion_IMU_;
         Eigen::Matrix<Scalar, 9, 9> unmeasured_perturbation_cov_;
 
-    public:
-        //for factory
-        static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr sensor_ptr = nullptr);
 };
 
 }
diff --git a/src/processor/processor_IMU.cpp b/src/processor/processor_IMU.cpp
index 0bda304c2..fb2803d72 100644
--- a/src/processor/processor_IMU.cpp
+++ b/src/processor/processor_IMU.cpp
@@ -21,16 +21,14 @@ ProcessorIMU::~ProcessorIMU()
     //
 }
 
-ProcessorBasePtr ProcessorIMU::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr _sen_ptr)
+ProcessorBasePtr ProcessorIMU::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params)
 {
-    std::shared_ptr<ProcessorParamsIMU> prc_imu_params;
-    if (_params)
-        prc_imu_params = std::static_pointer_cast<ProcessorParamsIMU>(_params);
-    else
-        prc_imu_params = std::make_shared<ProcessorParamsIMU>();
+    auto prc_imu_params = std::static_pointer_cast<ProcessorParamsIMU>(_params);
+
+    auto prc_ptr = std::make_shared<ProcessorIMU>(prc_imu_params);
 
-    ProcessorIMUPtr prc_ptr = std::make_shared<ProcessorIMU>(prc_imu_params);
     prc_ptr->setName(_unique_name);
+
     return prc_ptr;
 }
 
diff --git a/test/gtest_processor_IMU.cpp b/test/gtest_processor_IMU.cpp
index 8b5e45c73..9abf094e6 100644
--- a/test/gtest_processor_IMU.cpp
+++ b/test/gtest_processor_IMU.cpp
@@ -98,17 +98,17 @@ TEST(ProcessorIMU_constructors, ALL)
     ASSERT_EQ(prc1->getDistTraveled(), param_ptr->dist_traveled);
     ASSERT_EQ(prc1->getAngleTurned(), param_ptr->angle_turned);
 
-    //Factory constructor without yaml
+    //Factory constructor with pointers
     std::string wolf_root = _WOLF_IMU_ROOT_DIR;
     ProblemPtr problem = Problem::create("POV", 3);
     Vector7s extrinsics = (Vector7s()<<1,0,0, 0,0,0,1).finished();
     SensorBasePtr sensor_ptr = problem->installSensor("IMU", "Main IMU", extrinsics, wolf_root + "/demos/sensor_imu.yaml");
-    ProcessorBasePtr processor_ptr = problem->installProcessor("IMU", "IMU pre-integrator", "Main IMU", "");
-    ProcessorParamsIMU params_default;
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(),   params_default.max_time_span);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxBuffLength(), params_default.max_buff_length);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(),  params_default.dist_traveled);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(),   params_default.angle_turned);
+    ProcessorParamsIMUPtr params_default = std::make_shared<ProcessorParamsIMU>();
+    ProcessorBasePtr processor_ptr = problem->installProcessor("IMU", "IMU pre-integrator", sensor_ptr, params_default);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(),   params_default->max_time_span);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxBuffLength(), params_default->max_buff_length);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(),  params_default->dist_traveled);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(),   params_default->angle_turned);
 
     //Factory constructor with yaml
     processor_ptr = problem->installProcessor("IMU", "Sec IMU pre-integrator", "Main IMU", wolf_root + "/demos/processor_imu.yaml");
-- 
GitLab