From c79f415f974a890c4e44c8ba01a708d743fff731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu> Date: Mon, 8 Aug 2022 23:05:29 +0200 Subject: [PATCH] Replace Ftr Fac emplacers by emplaceFtrAndFac --- include/imu/processor/processor_imu.h | 3 +-- include/imu/processor/processor_imu2d.h | 5 ++-- src/processor/processor_imu.cpp | 23 +++++++----------- src/processor/processor_imu2d.cpp | 31 +++++++++++-------------- 4 files changed, 26 insertions(+), 36 deletions(-) diff --git a/include/imu/processor/processor_imu.h b/include/imu/processor/processor_imu.h index 080fb3dcb..1c03c1b41 100644 --- a/include/imu/processor/processor_imu.h +++ b/include/imu/processor/processor_imu.h @@ -122,8 +122,7 @@ class ProcessorImu : public ProcessorMotion{ const VectorXd& _calib, const VectorXd& _calib_preint, const CaptureBasePtr& _capture_origin) override; - FeatureBasePtr emplaceFeature(CaptureMotionPtr _capture_motion) override; - FactorBasePtr emplaceFactor(FeatureBasePtr _feature_motion, CaptureBasePtr _capture_origin) override; + virtual void emplaceFeaturesAndFactors(CaptureBasePtr _capture_origin, CaptureMotionPtr _capture_own) override; public: /** \brief Enable bootstrapping process diff --git a/include/imu/processor/processor_imu2d.h b/include/imu/processor/processor_imu2d.h index 726666f48..44f418140 100644 --- a/include/imu/processor/processor_imu2d.h +++ b/include/imu/processor/processor_imu2d.h @@ -92,9 +92,8 @@ class ProcessorImu2d : public ProcessorMotion{ const VectorXd& _calib, const VectorXd& _calib_preint, const CaptureBasePtr& _capture_origin) override; - FeatureBasePtr emplaceFeature(CaptureMotionPtr _capture_motion) override; - FactorBasePtr emplaceFactor(FeatureBasePtr _feature_motion, - CaptureBasePtr _capture_origin) override; + virtual void emplaceFeaturesAndFactors(CaptureBasePtr _capture_origin, CaptureMotionPtr _capture_own) override; + protected: ParamsProcessorImu2dPtr params_motion_Imu_; diff --git a/src/processor/processor_imu.cpp b/src/processor/processor_imu.cpp index 2fe42636b..b0b5c5649 100644 --- a/src/processor/processor_imu.cpp +++ b/src/processor/processor_imu.cpp @@ -93,16 +93,6 @@ CaptureMotionPtr ProcessorImu::emplaceCapture(const FrameBasePtr& _frame_own, return cap_motion; } -FeatureBasePtr ProcessorImu::emplaceFeature(CaptureMotionPtr _capture_motion) -{ - auto feature = FeatureBase::emplace<FeatureImu>(_capture_motion, - _capture_motion->getBuffer().back().delta_integr_, - _capture_motion->getBuffer().back().delta_integr_cov_ + unmeasured_perturbation_cov_, - _capture_motion->getCalibrationPreint(), - _capture_motion->getBuffer().back().jacobian_calib_); - return feature; -} - VectorXd ProcessorImu::getCalibration (const CaptureBaseConstPtr _capture) const { if (_capture) @@ -116,12 +106,18 @@ void ProcessorImu::setCalibration (const CaptureBasePtr _capture, const VectorXd _capture->getSensorIntrinsic()->setState(_calibration); } -FactorBasePtr ProcessorImu::emplaceFactor(FeatureBasePtr _feature_motion, CaptureBasePtr _capture_origin) +void ProcessorImu::emplaceFeaturesAndFactors(CaptureBasePtr _capture_origin, CaptureMotionPtr _capture_own) { + auto feature = FeatureBase::emplace<FeatureImu>(_capture_own, + _capture_own->getBuffer().back().delta_integr_, + _capture_own->getBuffer().back().delta_integr_cov_ + unmeasured_perturbation_cov_, + _capture_own->getCalibrationPreint(), + _capture_own->getBuffer().back().jacobian_calib_); + CaptureImuPtr cap_imu = std::static_pointer_cast<CaptureImu>(_capture_origin); - FeatureImuPtr ftr_imu = std::static_pointer_cast<FeatureImu>(_feature_motion); + FeatureImuPtr ftr_imu = std::static_pointer_cast<FeatureImu>(feature); - auto fac_imu = FactorBase::emplace<FactorImu>(_feature_motion, ftr_imu, cap_imu, shared_from_this(), params_->apply_loss_function); + auto fac_imu = FactorBase::emplace<FactorImu>(feature, ftr_imu, cap_imu, shared_from_this(), params_->apply_loss_function); if (bootstrapping_) { @@ -129,7 +125,6 @@ FactorBasePtr ProcessorImu::emplaceFactor(FeatureBasePtr _feature_motion, Captur bootstrap_factor_list_.push_back(fac_imu); } - return fac_imu; } void ProcessorImu::computeCurrentDelta(const Eigen::VectorXd& _data, diff --git a/src/processor/processor_imu2d.cpp b/src/processor/processor_imu2d.cpp index dc35d28c0..23fbbd222 100644 --- a/src/processor/processor_imu2d.cpp +++ b/src/processor/processor_imu2d.cpp @@ -101,16 +101,6 @@ namespace wolf { return cap_motion; } - FeatureBasePtr ProcessorImu2d::emplaceFeature(CaptureMotionPtr _capture_motion) - { - auto feature = FeatureBase::emplace<FeatureImu2d>(_capture_motion, - _capture_motion->getBuffer().back().delta_integr_, - _capture_motion->getBuffer().back().delta_integr_cov_ + unmeasured_perturbation_cov_, - _capture_motion->getCalibrationPreint(), - _capture_motion->getBuffer().back().jacobian_calib_); - return feature; - } - VectorXd ProcessorImu2d::getCalibration (const CaptureBaseConstPtr _capture) const { if (_capture) @@ -124,15 +114,22 @@ namespace wolf { _capture->getSensorIntrinsic()->setState(_calibration); } - FactorBasePtr ProcessorImu2d::emplaceFactor(FeatureBasePtr _feature_motion, CaptureBasePtr _capture_origin) + void ProcessorImu2d::emplaceFeaturesAndFactors(CaptureBasePtr _capture_origin, CaptureMotionPtr _capture_own) { - CaptureImuPtr cap_imu = std::static_pointer_cast<CaptureImu>(_capture_origin); - FeatureImu2dPtr ftr_imu = std::static_pointer_cast<FeatureImu2d>(_feature_motion); + auto feature = FeatureBase::emplace<FeatureImu2d>( + _capture_own, _capture_own->getBuffer().back().delta_integr_, + _capture_own->getBuffer().back().delta_integr_cov_ + unmeasured_perturbation_cov_, + _capture_own->getCalibrationPreint(), _capture_own->getBuffer().back().jacobian_calib_); - if( std::static_pointer_cast<SensorImu2d>(getSensor())->isGravityOrthogonal() ) - return FactorBase::emplace<FactorImu2d>(_feature_motion, ftr_imu, cap_imu, shared_from_this(), params_->apply_loss_function); - else - return FactorBase::emplace<FactorImu2dWithGravity>(_feature_motion, ftr_imu, cap_imu, shared_from_this(), params_->apply_loss_function); + CaptureImuPtr cap_imu = std::static_pointer_cast<CaptureImu>(_capture_origin); + FeatureImu2dPtr ftr_imu = std::static_pointer_cast<FeatureImu2d>(feature); + + if (std::static_pointer_cast<SensorImu2d>(getSensor())->isGravityOrthogonal()) + FactorBase::emplace<FactorImu2d>(ftr_imu, ftr_imu, cap_imu, shared_from_this(), + params_->apply_loss_function); + else + FactorBase::emplace<FactorImu2dWithGravity>(ftr_imu, ftr_imu, cap_imu, shared_from_this(), + params_->apply_loss_function); } void ProcessorImu2d::computeCurrentDelta(const Eigen::VectorXd& _data, -- GitLab