diff --git a/src/examples/test_diff_drive.cpp b/src/examples/test_diff_drive.cpp index acd78de25e0973f134c0cfca0458332748a24ce2..07d272178f3f622745ff8def9848d2512523a426 100644 --- a/src/examples/test_diff_drive.cpp +++ b/src/examples/test_diff_drive.cpp @@ -219,6 +219,7 @@ int main(int argc, char** argv) t.set(stamp_secs); auto processor_diff_drive_ptr = std::static_pointer_cast<ProcessorDiffDrive>(wolf_problem_ptr_->getProcessorMotionPtr()); + processor_diff_drive_ptr->setTimeTolerance(period_secs/2); // overwrite time tolerance based on new evidence // Set the origin // Create one capture to store the Odometry data. diff --git a/src/examples/test_imuPlateform_Offline.cpp b/src/examples/test_imuPlateform_Offline.cpp index 487fac3754c1960e6979cc19fdc87a209fea5e6f..7ea086fa410d2a18219da118edb3a85be0d8c959 100644 --- a/src/examples/test_imuPlateform_Offline.cpp +++ b/src/examples/test_imuPlateform_Offline.cpp @@ -83,7 +83,7 @@ int main(int argc, char** argv) // SENSOR + PROCESSOR IMU SensorBasePtr sen0_ptr = wolf_problem_ptr_->installSensor("IMU", "Main IMU", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_imu.yaml"); - ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>(); + ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>(); prc_imu_params->max_time_span = 10; prc_imu_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass prc_imu_params->dist_traveled = 1000000000; @@ -96,7 +96,7 @@ int main(int argc, char** argv) // SENSOR + PROCESSOR ODOM 3D SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D.yaml"); - ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>(); + ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>(); prc_odom3D_params->max_time_span = 1.9999; prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass prc_odom3D_params->dist_traveled = 1000000000; diff --git a/src/examples/test_imu_constrained0.cpp b/src/examples/test_imu_constrained0.cpp index 185406733ff2d9f5f13520d3a7de08e4c2539952..914f0ee78f74e0e084ee560f8b5e0128be4a89b1 100644 --- a/src/examples/test_imu_constrained0.cpp +++ b/src/examples/test_imu_constrained0.cpp @@ -105,7 +105,7 @@ int main(int argc, char** argv) // SENSOR + PROCESSOR IMU SensorBasePtr sen0_ptr = wolf_problem_ptr_->installSensor("IMU", "Main IMU", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_imu.yaml"); - ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>(); + ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>(); prc_imu_params->max_time_span = 10; prc_imu_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass prc_imu_params->dist_traveled = 1000000000; @@ -118,7 +118,7 @@ int main(int argc, char** argv) // SENSOR + PROCESSOR ODOM 3D SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D_HQ.yaml"); - ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>(); + ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>(); prc_odom3D_params->max_time_span = 20.9999; prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass prc_odom3D_params->dist_traveled = 1000000000; diff --git a/src/processor_IMU.cpp b/src/processor_IMU.cpp index c31c0533e4a779820d3aebe2fa09f2c7813f8072..06b1522286268331335fdc8bbdedcf3eda87e4d8 100644 --- a/src/processor_IMU.cpp +++ b/src/processor_IMU.cpp @@ -3,13 +3,13 @@ namespace wolf { -ProcessorIMU::ProcessorIMU(ProcessorIMUParamsPtr _params) : - ProcessorMotion("IMU", 10, 10, 9, 6, 6, 0.01), - max_time_span_ (_params ? _params ->max_time_span : 1.0 ), - max_buff_length_(_params ? _params ->max_buff_length : 10000 ), - dist_traveled_ (_params ? _params ->dist_traveled : 1.0 ), - angle_turned_ (_params ? _params ->angle_turned : 0.2 ), - voting_active_ (_params ? _params ->voting_active : false ) +ProcessorIMU::ProcessorIMU(const ProcessorParamsIMU& _params) : + ProcessorMotion("IMU", 10, 10, 9, 6, 6, _params.time_tolerance), + max_time_span_ (_params.max_time_span ), + max_buff_length_(_params.max_buff_length ), + dist_traveled_ (_params.dist_traveled ), + angle_turned_ (_params.angle_turned ), + voting_active_ (_params.voting_active ) { // Set constant parts of Jacobians jacobian_delta_preint_.setIdentity(9,9); // dDp'/dDp, dDv'/dDv, all zeros @@ -24,12 +24,22 @@ ProcessorIMU::~ProcessorIMU() ProcessorBasePtr ProcessorIMU::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr _sen_ptr) { - // cast inputs to the correct type - std::shared_ptr<ProcessorIMUParams> prc_imu_params = std::static_pointer_cast<ProcessorIMUParams>(_params); + if (_params) + { + // cast inputs to the correct type + std::shared_ptr<ProcessorParamsIMU> prc_imu_params = std::static_pointer_cast<ProcessorParamsIMU>(_params); - ProcessorIMUPtr prc_ptr = std::make_shared<ProcessorIMU>(prc_imu_params); - prc_ptr->setName(_unique_name); - return prc_ptr; + ProcessorIMUPtr prc_ptr = std::make_shared<ProcessorIMU>(*prc_imu_params); + prc_ptr->setName(_unique_name); + return prc_ptr; + } + else + { + ProcessorIMUPtr prc_ptr = std::make_shared<ProcessorIMU>(); + + prc_ptr->setName(_unique_name); + return prc_ptr; + } } bool ProcessorIMU::voteForKeyFrame() diff --git a/src/processor_IMU.h b/src/processor_IMU.h index b0c77d6b903ee6399caef17f9d0897859ce44f4e..911d50f8cb26f230f1ba8e7e9802bfb1ec820a99 100644 --- a/src/processor_IMU.h +++ b/src/processor_IMU.h @@ -8,27 +8,15 @@ namespace wolf { -WOLF_STRUCT_PTR_TYPEDEFS(ProcessorIMUParams); +WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsIMU); -struct ProcessorIMUParams : public ProcessorParamsBase +struct ProcessorParamsIMU : public ProcessorParamsBase { - Scalar max_time_span; - Size max_buff_length; - Scalar dist_traveled; - Scalar angle_turned; - bool voting_active; //IMU will not vote for key Frames to be created - - - ProcessorIMUParams() : - max_time_span(0.5), - max_buff_length(10), - dist_traveled(5), - angle_turned(.5), - voting_active(false) - { - type = "IMU"; - name = ""; - } + Scalar max_time_span = 0.5; + Size max_buff_length = 10; + Scalar dist_traveled = 5; + Scalar angle_turned = 0.5; + bool voting_active = false; //IMU will not vote for key Frames to be created }; WOLF_PTR_TYPEDEFS(ProcessorIMU); @@ -36,7 +24,7 @@ WOLF_PTR_TYPEDEFS(ProcessorIMU); //class class ProcessorIMU : public ProcessorMotion{ public: - ProcessorIMU(ProcessorIMUParamsPtr _params = nullptr); + ProcessorIMU(const ProcessorParamsIMU& _params = ProcessorParamsIMU()); virtual ~ProcessorIMU(); protected: diff --git a/src/processor_base.h b/src/processor_base.h index 87ba0f2f73c77b4daf1f2eb0a643b15bcdf8754e..7d7fe4226957be55b61cb601f57bc9cf08e7e416 100644 --- a/src/processor_base.h +++ b/src/processor_base.h @@ -110,7 +110,7 @@ struct ProcessorParamsBase { std::string type; std::string name; - Scalar time_tolerance; + Scalar time_tolerance; ///< maximum time difference between a Keyframe time stamp and a particular Capture of this processor to allow assigning this Capture to the Keyframe. }; //class ProcessorBase diff --git a/src/processor_loopclosure_base.h b/src/processor_loopclosure_base.h index fa3af48e3496b8aa697edf8012f5e0bc1a9db3a1..1dd3becb335af5c26227465f605bec95e466949e 100644 --- a/src/processor_loopclosure_base.h +++ b/src/processor_loopclosure_base.h @@ -8,7 +8,7 @@ namespace wolf{ struct ProcessorParamsLoopClosure : public ProcessorParamsBase { - virtual ~ProcessorParamsLoopClosure() = default; +// virtual ~ProcessorParamsLoopClosure() = default; // add neccesery parameters for loop closure initialisation here and initialize // them in constructor diff --git a/src/processor_odom_2D.cpp b/src/processor_odom_2D.cpp index c95bda8bcf458252e69fec35144a49e105855620..38c37f5c15c42cb38fe978e835b949d910c7aaaf 100644 --- a/src/processor_odom_2D.cpp +++ b/src/processor_odom_2D.cpp @@ -2,19 +2,14 @@ namespace wolf { -ProcessorOdom2D::ProcessorOdom2D(const Scalar& _dist_traveled_th, - const Scalar& _theta_traveled_th, - const Scalar& _cov_det_th, - const Scalar& _elapsed_time_th, - const Scalar& _unmeasured_perturbation_std, - const Scalar& _time_tolerance) : - ProcessorMotion("ODOM 2D", 3, 3, 3, 2, 0, _time_tolerance), - dist_traveled_th_(_dist_traveled_th), - theta_traveled_th_(_theta_traveled_th), - cov_det_th_(_cov_det_th), - elapsed_time_th_(_elapsed_time_th) +ProcessorOdom2D::ProcessorOdom2D(const ProcessorParamsOdom2D& _params) : + ProcessorMotion("ODOM 2D", 3, 3, 3, 2, 0, _params.time_tolerance), + dist_traveled_th_(_params.dist_traveled_th_), + theta_traveled_th_(_params.theta_traveled_th_), + cov_det_th_(_params.cov_det_th_), + elapsed_time_th_(_params.elapsed_time_th_) { - unmeasured_perturbation_cov_ = _unmeasured_perturbation_std * _unmeasured_perturbation_std * Matrix3s::Identity(); + unmeasured_perturbation_cov_ = _params.unmeasured_perturbation_std_ * _params.unmeasured_perturbation_std_ * Matrix3s::Identity(); } ProcessorOdom2D::~ProcessorOdom2D() @@ -181,11 +176,7 @@ ProcessorBasePtr ProcessorOdom2D::create(const std::string& _unique_name, const { std::shared_ptr<ProcessorParamsOdom2D> params = std::static_pointer_cast<ProcessorParamsOdom2D>(_params); - prc_ptr = std::make_shared<ProcessorOdom2D>(params->dist_traveled_th_, - params->theta_traveled_th_, - params->cov_det_th_, - params->elapsed_time_th_, - params->unmeasured_perturbation_std_); + prc_ptr = std::make_shared<ProcessorOdom2D>(*params); } else { diff --git a/src/processor_odom_2D.h b/src/processor_odom_2D.h index 251533a254b5b1a3b08c1335fed48a8f2d37e4f3..4434b2a84f1a0d186c0ad9e6c7041a5cc2f73a08 100644 --- a/src/processor_odom_2D.h +++ b/src/processor_odom_2D.h @@ -21,23 +21,19 @@ WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsOdom2D); struct ProcessorParamsOdom2D : public ProcessorParamsBase { - Scalar dist_traveled_th_ = 1.0; - Scalar theta_traveled_th_ = 0.17; - Scalar cov_det_th_ = 1.0; - Scalar elapsed_time_th_ = 1.0; - Scalar unmeasured_perturbation_std_ = 0.001; + Scalar dist_traveled_th_ = 1.0; // 1m + Scalar theta_traveled_th_ = 0.17; // 90 degrees + Scalar cov_det_th_ = 1.0; // 1 rad^2 + Scalar elapsed_time_th_ = 1.0; // 1s + Scalar unmeasured_perturbation_std_ = 0.001; // no particular dimension: the same for displacement and angle }; class ProcessorOdom2D : public ProcessorMotion { public: - ProcessorOdom2D(const Scalar& _traveled_dist_th = 1.0, - const Scalar& _theta_traveled_th = 0.17, - const Scalar& _cov_det_th = 1.0, - const Scalar& _elapsed_time_th = 1.0, - const Scalar& _unmeasured_perturbation_std = 0.001, - const Scalar& _time_tolerance = 0.01); + ProcessorOdom2D(const ProcessorParamsOdom2D& _params = ProcessorParamsOdom2D()); virtual ~ProcessorOdom2D(); + virtual bool voteForKeyFrame() override; protected: diff --git a/src/processor_odom_3D.cpp b/src/processor_odom_3D.cpp index d0eb4dc5f353af9cf84bf03bfd68c737bffd4237..b5e619163571bdf11ee888d8631ad5ef62826b18 100644 --- a/src/processor_odom_3D.cpp +++ b/src/processor_odom_3D.cpp @@ -2,12 +2,12 @@ namespace wolf { -ProcessorOdom3D::ProcessorOdom3D(ProcessorOdom3DParamsPtr _params, SensorOdom3DPtr _sensor_ptr) : - ProcessorMotion("ODOM 3D", 7, 7, 6, 6, 0, (_params ? _params->time_tolerance : 0.01) ), - max_time_span_ (_params ? _params ->max_time_span : 1.0 ), - max_buff_length_(_params ? _params ->max_buff_length : 10 ), - dist_traveled_ (_params ? _params ->dist_traveled : 1.0 ), - angle_turned_ (_params ? _params ->angle_turned : 0.5 ), +ProcessorOdom3D::ProcessorOdom3D(const ProcessorParamsOdom3D& _params, SensorOdom3DPtr _sensor_ptr) : + ProcessorMotion("ODOM 3D", 7, 7, 6, 6, 0, _params.time_tolerance ), + max_time_span_ ( _params.max_time_span ), + max_buff_length_( _params.max_buff_length ), + dist_traveled_ ( _params.dist_traveled ), + angle_turned_ ( _params.angle_turned ), p1_(nullptr), p2_(nullptr), p_out_(nullptr), q1_(nullptr), q2_(nullptr), q_out_(nullptr) { @@ -261,12 +261,12 @@ Motion ProcessorOdom3D::interpolate(const Motion& _motion_ref, Motion& _motion_s ProcessorBasePtr ProcessorOdom3D::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr _sen_ptr) { // cast inputs to the correct type - std::shared_ptr<ProcessorOdom3DParams> prc_odo_params = std::static_pointer_cast<ProcessorOdom3DParams>(_params); + std::shared_ptr<ProcessorParamsOdom3D> prc_odo_params = std::static_pointer_cast<ProcessorParamsOdom3D>(_params); SensorOdom3DPtr sen_odo =std::static_pointer_cast<SensorOdom3D>(_sen_ptr); // construct processor - ProcessorOdom3DPtr prc_odo = std::make_shared<ProcessorOdom3D>(prc_odo_params, sen_odo); + ProcessorOdom3DPtr prc_odo = std::make_shared<ProcessorOdom3D>(*prc_odo_params, sen_odo); // setup processor prc_odo->setName(_unique_name); diff --git a/src/processor_odom_3D.h b/src/processor_odom_3D.h index 0827cd3bdd1b63f4910ab911310f355f52e359e7..1dbbf2ad3658c48cf5cf0bc257ade424d6e1f9b2 100644 --- a/src/processor_odom_3D.h +++ b/src/processor_odom_3D.h @@ -18,25 +18,14 @@ namespace wolf { -WOLF_STRUCT_PTR_TYPEDEFS(ProcessorOdom3DParams); +WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsOdom3D); -struct ProcessorOdom3DParams : public ProcessorParamsBase +struct ProcessorParamsOdom3D : public ProcessorParamsBase { - Scalar max_time_span; - Size max_buff_length; - Scalar dist_traveled; - Scalar angle_turned; - - - ProcessorOdom3DParams() : - max_time_span(0), - max_buff_length(0), - dist_traveled(0), - angle_turned(0) - { - type = "ODOM 3D"; - name = ""; - } + Scalar max_time_span = 1.0; + Size max_buff_length = 10; + Scalar dist_traveled = 1.0; + Scalar angle_turned = 0.5; }; @@ -67,7 +56,7 @@ WOLF_PTR_TYPEDEFS(ProcessorOdom3D); class ProcessorOdom3D : public ProcessorMotion { public: - ProcessorOdom3D(ProcessorOdom3DParamsPtr _params = nullptr, SensorOdom3DPtr _sensor_ptr = nullptr); + ProcessorOdom3D(const ProcessorParamsOdom3D& _params = ProcessorParamsOdom3D(), SensorOdom3DPtr _sensor_ptr = nullptr); virtual ~ProcessorOdom3D(); void setup(SensorOdom3DPtr sen_ptr); diff --git a/src/serialization/cereal/serialization_processor_odom3d_params.h b/src/serialization/cereal/serialization_processor_odom3d_params.h index 06770f759cbcf96ca77faf3d83a2a16f0822db04..9b658a233d1832f914a2986d133ab61207e3ff52 100644 --- a/src/serialization/cereal/serialization_processor_odom3d_params.h +++ b/src/serialization/cereal/serialization_processor_odom3d_params.h @@ -8,7 +8,7 @@ namespace cereal { template <class Archive> -void serialize(Archive& ar, wolf::ProcessorOdom3DParams& o, +void serialize(Archive& ar, wolf::ProcessorParamsOdom3D& o, std::uint32_t const /*version*/) { ar( cereal::make_nvp("ProcessorParamsBase", @@ -22,6 +22,6 @@ void serialize(Archive& ar, wolf::ProcessorOdom3DParams& o, } // namespace cereal -CEREAL_REGISTER_TYPE_WITH_NAME(wolf::ProcessorOdom3DParams, "ProcessorOdom3DParams") +CEREAL_REGISTER_TYPE_WITH_NAME(wolf::ProcessorParamsOdom3D, "ProcessorOdom3DParams") #endif /* _WOLF_SERIALIZATION_CEREAL_PROCESSOR_ODOM3D_PARAMS_H_ */ diff --git a/src/test/gtest_constraint_IMU.cpp b/src/test/gtest_constraint_IMU.cpp index 4c4c85369af796d32bcb6d9f0d207957a7006905..35c5155373f43765b6ad2fce8d95ab1ce19e826d 100644 --- a/src/test/gtest_constraint_IMU.cpp +++ b/src/test/gtest_constraint_IMU.cpp @@ -887,7 +887,7 @@ class ConstraintIMU_ODOM_biasTest_Move_NonNullBiasRot : public testing::Test WOLF_TRACE("IMU cov: ", sensor_imu->getNoiseCov().diagonal().transpose()); WOLF_TRACE("ODO cov: ", sensor_odo->getNoiseCov().diagonal().transpose()); - ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>(); + ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>(); prc_odom3D_params->max_time_span = 0.0099; prc_odom3D_params->max_buff_length = 1000; //make it very high so that this condition will not pass prc_odom3D_params->dist_traveled = 1000; @@ -1064,7 +1064,7 @@ class ConstraintIMU_ODOM_biasTest_Move_NonNullBiasRotY : public testing::Test // SENSOR + PROCESSOR ODOM 3D SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D_HQ.yaml"); - ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>(); + ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>(); prc_odom3D_params->max_time_span = 0.9999; prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass prc_odom3D_params->dist_traveled = 1000000000; @@ -1205,7 +1205,7 @@ class ConstraintIMU_ODOM_biasTest_Move_NonNullBiasRotXY : public testing::Test // SENSOR + PROCESSOR ODOM 3D SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D_HQ.yaml"); - ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>(); + ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>(); prc_odom3D_params->max_time_span = 0.9999; prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass prc_odom3D_params->dist_traveled = 1000000000; diff --git a/src/test/gtest_feature_IMU.cpp b/src/test/gtest_feature_IMU.cpp index 5178fb63deec0af50a7e9a5ded8707c0cf44ba30..9f7e9c444d28dbc28efa29d8a7c01806731a9f26 100644 --- a/src/test/gtest_feature_IMU.cpp +++ b/src/test/gtest_feature_IMU.cpp @@ -39,7 +39,7 @@ class FeatureIMU_test : public testing::Test IMU_extrinsics << 0,0,0, 0,0,0,1; // IMU pose in the robot IntrinsicsIMUPtr sen_imu_params = std::make_shared<IntrinsicsIMU>(); SensorBasePtr sensor_ptr = problem->installSensor("IMU", "Main IMU", IMU_extrinsics, sen_imu_params); - ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>(); + ProcessorParamsIMUPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>(); processor_ptr_ = problem->installProcessor("IMU", "IMU pre-integrator", sensor_ptr, prc_imu_params); // Time and data variables diff --git a/src/test/gtest_processor_IMU.cpp b/src/test/gtest_processor_IMU.cpp index 7d8e3e549fa7a6e7d105184a6799f24608c0c10b..38552b3334d5e0798f29aed417355e11d4ce94f7 100644 --- a/src/test/gtest_processor_IMU.cpp +++ b/src/test/gtest_processor_IMU.cpp @@ -85,19 +85,20 @@ TEST(ProcessorIMU_constructors, ALL) //constructor without any argument ProcessorIMUPtr prc0 = std::make_shared<ProcessorIMU>(); - ASSERT_EQ(prc0->getMaxTimeSpan(), 1.0); - ASSERT_EQ(prc0->getMaxBuffLength(), 10000); - ASSERT_EQ(prc0->getDistTraveled(), 1.0); - ASSERT_EQ(prc0->getAngleTurned(), 0.2); + ProcessorParamsIMU params_default; + ASSERT_EQ(prc0->getMaxTimeSpan(), params_default.max_time_span); + ASSERT_EQ(prc0->getMaxBuffLength(), params_default.max_buff_length); + ASSERT_EQ(prc0->getDistTraveled(), params_default.dist_traveled); + ASSERT_EQ(prc0->getAngleTurned(), params_default.angle_turned); //constructor with ProcessorIMUParamsPtr argument only - ProcessorIMUParamsPtr param_ptr = std::make_shared<ProcessorIMUParams>(); - param_ptr->max_time_span = 2.0; + ProcessorParamsIMUPtr param_ptr = std::make_shared<ProcessorParamsIMU>(); + param_ptr->max_time_span = 2.0; param_ptr->max_buff_length = 20000; - param_ptr->dist_traveled = 2.0; - param_ptr->angle_turned = 2.0; + param_ptr->dist_traveled = 2.0; + param_ptr->angle_turned = 2.0; - ProcessorIMUPtr prc1 = std::make_shared<ProcessorIMU>(param_ptr); + ProcessorIMUPtr prc1 = std::make_shared<ProcessorIMU>(*param_ptr); ASSERT_EQ(prc1->getMaxTimeSpan(), param_ptr->max_time_span); ASSERT_EQ(prc1->getMaxBuffLength(), param_ptr->max_buff_length); ASSERT_EQ(prc1->getDistTraveled(), param_ptr->dist_traveled); @@ -109,17 +110,17 @@ TEST(ProcessorIMU_constructors, ALL) Vector7s extrinsics = (Vector7s()<<1,0,0, 0,0,0,1).finished(); SensorBasePtr sensor_ptr = problem->installSensor("IMU", "Main IMU", extrinsics, wolf_root + "/src/examples/sensor_imu.yaml"); ProcessorBasePtr processor_ptr = problem->installProcessor("IMU", "IMU pre-integrator", "Main IMU", ""); - ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(), 1.0); - ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxBuffLength(), 10000); - ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(), 1.0); - ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(), 0.2); + 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 + "/src/examples/processor_imu.yaml"); - ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(), 2.0); + ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(), 2.0); ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxBuffLength(), 20000); - ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(), 2.0); - ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(), 0.2); + ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(), 2.0); + ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(), 0.2); } TEST(ProcessorIMU, voteForKeyFrame) @@ -137,7 +138,7 @@ TEST(ProcessorIMU, voteForKeyFrame) ProblemPtr problem = Problem::create("POV 3D"); Vector7s extrinsics = (Vector7s()<<1,0,0, 0,0,0,1).finished(); SensorBasePtr sensor_ptr = problem->installSensor("IMU", "Main IMU", extrinsics, wolf_root + "/src/examples/sensor_imu.yaml"); - ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>(); + ProcessorParamsIMUPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>(); prc_imu_params->max_time_span = 1; prc_imu_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass prc_imu_params->dist_traveled = 1000000000; diff --git a/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp b/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp index ed2aaab3b9b257a708b680db2e38d7b6eb51d592..7a84ef3ffd56301409146ca855e313eef20d79f4 100644 --- a/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp +++ b/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp @@ -31,7 +31,7 @@ public: const std::string path_to_io = "/tmp/"; - wolf::ProcessorOdom3DParams nb_; + wolf::ProcessorParamsOdom3D nb_; }; TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, @@ -39,7 +39,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, { const std::string filename(path_to_io + "params_odom3d_serialization.xml"); - wolf::ProcessorOdom3DParams nb_save; + wolf::ProcessorParamsOdom3D nb_save; nb_save.name = "NAME2"; //nb_.type = "ODOM 3D"; @@ -51,7 +51,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, ASSERT_NO_THROW( wolf::save( filename, nb_, nb_save, 10 ) ); { - wolf::ProcessorOdom3DParams nb_load; + wolf::ProcessorParamsOdom3D nb_load; ASSERT_NO_THROW( wolf::load( filename, nb_load ) ); @@ -62,7 +62,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, ASSERT_EQ(nb_load.dist_traveled, nb_.dist_traveled); ASSERT_EQ(nb_load.angle_turned, nb_.angle_turned); - wolf::ProcessorOdom3DParams nb_load0, nb_load1; + wolf::ProcessorParamsOdom3D nb_load0, nb_load1; int myint; ASSERT_NO_THROW( wolf::load( filename, nb_load0, nb_load1, myint ) ); @@ -95,7 +95,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, { wolf::ProcessorParamsBasePtr nb = - std::make_shared<wolf::ProcessorOdom3DParams>(nb_); + std::make_shared<wolf::ProcessorParamsOdom3D>(nb_); ASSERT_NO_THROW( wolf::save( filename, nb ) ); } @@ -106,7 +106,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, ASSERT_NO_THROW( wolf::load( filename, nb ) ); wolf::ProcessorOdom3DParamsPtr nb_cast = - std::dynamic_pointer_cast<wolf::ProcessorOdom3DParams>(nb); + std::dynamic_pointer_cast<wolf::ProcessorParamsOdom3D>(nb); ASSERT_TRUE(nb_cast != nullptr); @@ -130,7 +130,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, ASSERT_NO_THROW( wolf::save( filename, nb_ ) ); - wolf::ProcessorOdom3DParams nb_load; + wolf::ProcessorParamsOdom3D nb_load; ASSERT_NO_THROW( wolf::load( filename, nb_load ) ); @@ -153,7 +153,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, { wolf::ProcessorParamsBasePtr nb = - std::make_shared<wolf::ProcessorOdom3DParams>(nb_); + std::make_shared<wolf::ProcessorParamsOdom3D>(nb_); ASSERT_NO_THROW( wolf::save( filename, nb ) ); } @@ -164,7 +164,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, ASSERT_NO_THROW( wolf::load( filename, nb ) ); wolf::ProcessorOdom3DParamsPtr nb_cast = - std::dynamic_pointer_cast<wolf::ProcessorOdom3DParams>(nb); + std::dynamic_pointer_cast<wolf::ProcessorParamsOdom3D>(nb); ASSERT_TRUE(nb_cast != nullptr); @@ -188,7 +188,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, ASSERT_NO_THROW( wolf::save( filename, nb_ ) ); - wolf::ProcessorOdom3DParams nb_load; + wolf::ProcessorParamsOdom3D nb_load; ASSERT_NO_THROW( wolf::load( filename, nb_load ) ); @@ -211,7 +211,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, { wolf::ProcessorParamsBasePtr nb = - std::make_shared<wolf::ProcessorOdom3DParams>(nb_); + std::make_shared<wolf::ProcessorParamsOdom3D>(nb_); ASSERT_NO_THROW( wolf::save( filename, nb ) ); } @@ -222,7 +222,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams, ASSERT_NO_THROW( wolf::load( filename, nb ) ); wolf::ProcessorOdom3DParamsPtr nb_cast = - std::dynamic_pointer_cast<wolf::ProcessorOdom3DParams>(nb); + std::dynamic_pointer_cast<wolf::ProcessorParamsOdom3D>(nb); ASSERT_TRUE(nb_cast != nullptr); diff --git a/src/yaml/processor_IMU_yaml.cpp b/src/yaml/processor_IMU_yaml.cpp index 4b04af6253f3852b889e031f7e2c1ded71bb1856..06b5f415c85a83407d676652dfbbcaeea3ffe836 100644 --- a/src/yaml/processor_IMU_yaml.cpp +++ b/src/yaml/processor_IMU_yaml.cpp @@ -34,7 +34,7 @@ static ProcessorParamsBasePtr createProcessorIMUParams(const std::string & _file YAML::Node kf_vote = config["keyframe vote"]; - ProcessorIMUParamsPtr params = std::make_shared<ProcessorIMUParams>(); + ProcessorParamsIMUPtr params = std::make_shared<ProcessorParamsIMU>(); params->type = processor_type; params->name = processor_name; diff --git a/src/yaml/processor_odom_3D_yaml.cpp b/src/yaml/processor_odom_3D_yaml.cpp index a8fbce5997d01b90abc2340fddb2556f4bfc2f91..450fec00b84ee22c1013640c168260fa229c7c11 100644 --- a/src/yaml/processor_odom_3D_yaml.cpp +++ b/src/yaml/processor_odom_3D_yaml.cpp @@ -34,7 +34,7 @@ static ProcessorParamsBasePtr createProcessorOdom3DParams(const std::string & _f YAML::Node kf_vote = config["keyframe vote"]; - ProcessorOdom3DParamsPtr params = std::make_shared<ProcessorOdom3DParams>(); + ProcessorParamsOdom3DPtr params = std::make_shared<ProcessorParamsOdom3D>(); params->type = processor_type; params->name = processor_name;