From 784bdd655ff70c6be2d7f813d8b637e377b7ac6b Mon Sep 17 00:00:00 2001 From: jvallve <jvallve@iri.upc.edu> Date: Mon, 14 Nov 2022 18:52:42 +0100 Subject: [PATCH] hotfix processorgnssfix --- src/processor/processor_gnss_fix.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/processor/processor_gnss_fix.cpp b/src/processor/processor_gnss_fix.cpp index de9eed770..6fd4e30a6 100644 --- a/src/processor/processor_gnss_fix.cpp +++ b/src/processor/processor_gnss_fix.cpp @@ -245,15 +245,16 @@ void ProcessorGnssFix::handleEnuMap(FeatureBasePtr feature) // Store the first capture that established a factor (for later initialization ENU-MAP) if (first_frame_state_.empty() and - not sensor_gnss_->isEnuMapFixed()) + not sensor_gnss_->isEnuMapFixed() and + feature->getCapture() and feature->getCapture()->getFrame()) { - first_frame_state_ = feature->getCapture()->getFrame()->getState(); + first_frame_state_ = feature->getCapture()->getFrame()->getState("PO"); first_pos_ = feature->getMeasurement().head<3>(); } // Initialize ENU-MAP if: ENU defined and ENU-MAP not initialized (and not fixed) and far enough if (params_gnss_->init_enu_map and - not first_frame_state_.empty() and + first_frame_state_.includesStructure("PO") and sensor_gnss_->isEnuDefined() and not sensor_gnss_->isEnuMapInitialized() and not sensor_gnss_->isEnuMapFixed() and @@ -319,18 +320,17 @@ bool ProcessorGnssFix::voteForKeyFrame() const sensor_gnss_->isEnuDefined() and not sensor_gnss_->isEnuMapInitialized() and not sensor_gnss_->isEnuMapFixed() and - (first_pos_-incoming_feature_->getMeasurement()).norm() > params_gnss_->enu_map_init_dist_min and - (first_pos_-incoming_feature_->getMeasurement()).norm() < params_gnss_->enu_map_init_dist_max) + (first_pos_-incoming_feature_->getMeasurement().head<3>()).norm() > params_gnss_->enu_map_init_dist_min and + (first_pos_-incoming_feature_->getMeasurement().head<3>()).norm() < params_gnss_->enu_map_init_dist_max) { WOLF_DEBUG("KF because of enu map not initialized"); return true; } // Distance criterion (ENU defined and ENU-MAP initialized) - if (last_KF_capture_ != nullptr and - (incoming_feature_->getMeasurement() - last_KF_feature_->getMeasurement()).norm() > params_gnss_->dist_traveled) + if ((incoming_feature_->getMeasurement().head<3>() - last_KF_feature_->getMeasurement().head<3>()).norm() > params_gnss_->dist_traveled) { - WOLF_DEBUG("KF because of distance criterion: ", (incoming_feature_->getMeasurement() - last_KF_feature_->getMeasurement()).norm()); + WOLF_DEBUG("KF because of distance criterion: ", (incoming_feature_->getMeasurement().head<3>() - last_KF_feature_->getMeasurement().head<3>()).norm()); return true; } -- GitLab