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