From c6715d0b1e1ca00dfa3424c86e6b352661a3fd8b Mon Sep 17 00:00:00 2001 From: joanvallve <jvallve@iri.upc.edu> Date: Wed, 30 Apr 2025 15:14:12 +0200 Subject: [PATCH] adapted to new PB constructor and P::getState API --- include/gnss/processor/processor_gnss_fix.h | 3 ++- include/gnss/processor/processor_gnss_tdcp.h | 1 + schema/processor/ProcessorGnssFix.schema | 6 ++++++ schema/processor/ProcessorGnssTdcp.schema | 6 ++++++ src/processor/processor_gnss_fix.cpp | 11 ++++++++--- src/processor/processor_gnss_tdcp.cpp | 9 +++++++-- src/processor/processor_tracker_gnss.cpp | 2 +- 7 files changed, 31 insertions(+), 7 deletions(-) diff --git a/include/gnss/processor/processor_gnss_fix.h b/include/gnss/processor/processor_gnss_fix.h index c132a2022..90f99804a 100644 --- a/include/gnss/processor/processor_gnss_fix.h +++ b/include/gnss/processor/processor_gnss_fix.h @@ -36,6 +36,7 @@ WOLF_PTR_TYPEDEFS(ProcessorGnssFix); class ProcessorGnssFix : public ProcessorBase { protected: + unsigned int dim_; SensorGnssPtr sensor_gnss_; CaptureBasePtr last_KF_capture_, incoming_capture_; FeatureBasePtr last_KF_feature_, incoming_feature_; @@ -62,7 +63,7 @@ class ProcessorGnssFix : public ProcessorBase * * The ProcessorTracker only processes incoming captures (it is not called). */ - void processKeyFrame(FrameBasePtr _keyframe_ptr) override{}; + void processKeyFrame(FrameBasePtr _keyframe_ptr) override {}; /** \brief trigger in capture * diff --git a/include/gnss/processor/processor_gnss_tdcp.h b/include/gnss/processor/processor_gnss_tdcp.h index b0f6cc815..4c222d4e4 100644 --- a/include/gnss/processor/processor_gnss_tdcp.h +++ b/include/gnss/processor/processor_gnss_tdcp.h @@ -40,6 +40,7 @@ WOLF_PTR_TYPEDEFS(ProcessorGnssTdcp); class ProcessorGnssTdcp : public ProcessorBase { protected: + unsigned int dim_; SensorGnssPtr sensor_gnss_; CaptureGnssPtr incoming_capture_; FrameBasePtr last_KF_; diff --git a/schema/processor/ProcessorGnssFix.schema b/schema/processor/ProcessorGnssFix.schema index f2b79d5df..b165fe3c5 100644 --- a/schema/processor/ProcessorGnssFix.schema +++ b/schema/processor/ProcessorGnssFix.schema @@ -1,5 +1,11 @@ follow: ProcessorBase.schema +dimension: + _mandatory: true + _type: unsigned int + _options: [2, 3] + _doc: "The dimension of the problem representation: 2D or 3D" + keyframe_vote: max_time_span: _mandatory: true diff --git a/schema/processor/ProcessorGnssTdcp.schema b/schema/processor/ProcessorGnssTdcp.schema index 3fb8aa599..d85132af3 100644 --- a/schema/processor/ProcessorGnssTdcp.schema +++ b/schema/processor/ProcessorGnssTdcp.schema @@ -1,5 +1,11 @@ follow: ProcessorGnssFix.schema +dimension: + _mandatory: true + _type: unsigned int + _options: [2, 3] + _doc: "The dimension of the problem representation: 2D or 3D" + tdcp: min_common_sats: _mandatory: true diff --git a/src/processor/processor_gnss_fix.cpp b/src/processor/processor_gnss_fix.cpp index 2a37f0635..939413de7 100644 --- a/src/processor/processor_gnss_fix.cpp +++ b/src/processor/processor_gnss_fix.cpp @@ -27,8 +27,13 @@ namespace wolf { -ProcessorGnssFix::ProcessorGnssFix(const YAML::Node& _params) : ProcessorBase("ProcessorGnssFix", 0, _params) +ProcessorGnssFix::ProcessorGnssFix(const YAML::Node& _params) + : ProcessorBase("ProcessorGnssFix", + {{'P', _params["dimension"].as<unsigned int>() == 2 ? "StatePoint2d" : "StatePoint3d"}, + {'O', _params["dimension"].as<unsigned int>() == 2 ? "StateAngle" : "StateQuaternion"}}, + _params) { + dim_ = _params["dimension"].as<unsigned int>(); max_time_span_ = _params["keyframe_vote"]["max_time_span"].as<double>(); dist_traveled_ = _params["keyframe_vote"]["dist_traveled"].as<double>(); init_enu_map_ = _params["enu_map"]["init_enabled"].as<bool>(); @@ -218,7 +223,7 @@ void ProcessorGnssFix::processCapture(CaptureBasePtr _capture) else if (permittedKeyFrame() && voteForKeyFrame()) { WOLF_DEBUG("PR ", getName(), " emplacing KF TS = ", incoming_capture_->getTimeStamp()); - new_frame = getProblem()->emplaceFrame(incoming_capture_->getTimeStamp()); + new_frame = getProblem()->emplaceFrame(incoming_capture_->getTimeStamp(), "PO"); KF_created = true; } // OTHERWISE store capture @@ -298,7 +303,7 @@ FactorBasePtr ProcessorGnssFix::emplaceFactor(FeatureBasePtr _ftr) { // WOLF_DEBUG("creating the factor..."); // 2d - if (getProblem()->getDim() == 2) + if (dim_ == 2) return FactorBase::emplace<FactorGnssFix2d>( _ftr, _ftr, sensor_gnss_, shared_from_this(), applyLossFunction(), FAC_ACTIVE); // 3d diff --git a/src/processor/processor_gnss_tdcp.cpp b/src/processor/processor_gnss_tdcp.cpp index 585860027..5fcd51990 100644 --- a/src/processor/processor_gnss_tdcp.cpp +++ b/src/processor/processor_gnss_tdcp.cpp @@ -26,8 +26,13 @@ namespace wolf { -ProcessorGnssTdcp::ProcessorGnssTdcp(const YAML::Node& _params) : ProcessorBase("ProcessorGnssTdcp", 0, _params) +ProcessorGnssTdcp::ProcessorGnssTdcp(const YAML::Node& _params) + : ProcessorBase("ProcessorGnssTdcp", + {{'P', _params["dimension"].as<unsigned int>() == 2 ? "StatePoint2d" : "StatePoint3d"}, + {'O', _params["dimension"].as<unsigned int>() == 2 ? "StateAngle" : "StateQuaternion"}}, + _params) { + dim_ = _params["dimension"].as<unsigned int>(); params_tdcp_.min_common_sats = _params["tdcp"]["min_common_sats"].as<double>(); params_tdcp_.raim_n = _params["tdcp"]["raim_n"].as<double>(); params_tdcp_.max_residual_ci = _params["tdcp"]["max_residual_ci"].as<double>(); @@ -212,7 +217,7 @@ FactorBasePtr ProcessorGnssTdcp::emplaceFactor(FeatureBasePtr _ftr, FrameBasePtr { // WOLF_DEBUG("creating the factor..."); // 2D - if (getProblem()->getDim() == 2) + if (dim_ == 2) return FactorBase::emplace<FactorGnssDisplacement2d>( _ftr, _ftr, _frm_ref, sensor_gnss_, shared_from_this(), applyLossFunction()); // 3D diff --git a/src/processor/processor_tracker_gnss.cpp b/src/processor/processor_tracker_gnss.cpp index d7aa0e8a4..f1bb938b3 100644 --- a/src/processor/processor_tracker_gnss.cpp +++ b/src/processor/processor_tracker_gnss.cpp @@ -33,7 +33,7 @@ namespace wolf { ProcessorTrackerGnss::ProcessorTrackerGnss(const YAML::Node& _params) - : ProcessorTrackerFeature("ProcessorTrackerGnss", "PO", 3, _params), + : ProcessorTrackerFeature("ProcessorTrackerGnss", {{'P', "StatePoint3d"}, {'O', "StateQuaternion"}}, _params), outliers_code_(0), outliers_tdcp_(0), inliers_code_(0), -- GitLab