From 31d15fa1499fa553f72c113be6a4d10340ccf21b Mon Sep 17 00:00:00 2001 From: joanvallve <jvallve@iri.upc.edu> Date: Tue, 13 Feb 2024 11:51:54 +0100 Subject: [PATCH] ProcessorLandmarkExternal less verbose and cleanup --- src/processor/processor_landmark_external.cpp | 308 +++++++----------- 1 file changed, 119 insertions(+), 189 deletions(-) diff --git a/src/processor/processor_landmark_external.cpp b/src/processor/processor_landmark_external.cpp index 1544904df..7a2de8df3 100644 --- a/src/processor/processor_landmark_external.cpp +++ b/src/processor/processor_landmark_external.cpp @@ -87,9 +87,9 @@ void ProcessorLandmarkExternal::preProcess() // add new feature new_features_incoming_.push_back(ftr); } - WOLF_INFO("ProcessorLandmarkExternal::preprocess: found ", - new_features_incoming_.size(), - " features in incoming capture"); + WOLF_DEBUG("ProcessorLandmarkExternal::preprocess: found ", + new_features_incoming_.size(), + " features in incoming capture"); } unsigned int ProcessorLandmarkExternal::processKnown() @@ -100,7 +100,7 @@ unsigned int ProcessorLandmarkExternal::processKnown() // Track features from last_ptr_ to incoming_ptr_ if (not last_ptr_) return 0; - WOLF_INFO("Searching ", known_features_last_.size(), " tracked features..."); + WOLF_DEBUG("Searching ", known_features_last_.size(), " tracked features..."); auto pose_sen = getSensor()->getState("PO"); auto pose_last = getProblem()->getState(last_ptr_->getTimeStamp(), "PO"); auto pose_incoming = getProblem()->getState(incoming_ptr_->getTimeStamp(), "PO"); @@ -109,30 +109,14 @@ unsigned int ProcessorLandmarkExternal::processKnown() { auto feat_lmk_last = std::static_pointer_cast<FeatureLandmarkExternal>(feat_last); bool matched = false; - WOLF_INFO("Tracking feature last: ", - feat_lmk_last->id(), - " - ID: ", - feat_lmk_last->getExternalId(), - " - TYPE: ", - feat_lmk_last->getExternalType(), - " meas: ", - feat_lmk_last->getMeasurement().transpose()); - - // auto last_global_meas = (dim_ == 2 ? Eigen::VectorXd(pose_last.at('P') + - // Rotation2Dd(pose_last.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * - // feat_lmk_last->getMeasurement().head<2>())) - // : Eigen::VectorXd(pose_last.at('P') + - // Quaterniond(Vector4d(pose_last.at('O'))) * - // (pose_sen.at('P') + Quaterniond(Vector4d(pose_sen.at('O'))) * - // feat_lmk_last->getMeasurement().head<3>()))); - // WOLF_INFO("pose_last: ", pose_last); - // WOLF_INFO("pose_sen: ", pose_sen); - // auto last_global_meas = - // pose_last.at('P') + - // Rotation2Dd(pose_last.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * feat_lmk_last->getMeasurement().head<2>()); - // WOLF_INFO("Last global meas: ", last_global_meas.transpose()); + WOLF_DEBUG("Tracking feature last: ", + feat_lmk_last->id(), + " - ID: ", + feat_lmk_last->getExternalId(), + " - TYPE: ", + feat_lmk_last->getExternalType(), + " meas: ", + feat_lmk_last->getMeasurement().transpose()); // First we try to match by EXTERNAL_ID if (feat_lmk_last->getExternalId() != -1) @@ -142,32 +126,14 @@ unsigned int ProcessorLandmarkExternal::processKnown() { auto feat_lmk_incoming = std::static_pointer_cast<FeatureLandmarkExternal>(*feature_incoming_it); - WOLF_INFO("Feature incoming candidate (by ID): ", - feat_lmk_incoming->id(), - " - ID: ", - feat_lmk_incoming->getExternalId(), - " - TYPE: ", - feat_lmk_incoming->getExternalType(), - " meas: ", - feat_lmk_incoming->getMeasurement().transpose()); - - // auto global_meas = - // (dim_ == 2 - // ? Eigen::VectorXd(pose_incoming.at('P') + - // Rotation2Dd(pose_incoming.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * - // feat_lmk_incoming->getMeasurement().head<2>())) - // : Eigen::VectorXd( - // pose_incoming.at('P') + - // Quaterniond(Vector4d(pose_incoming.at('O'))) * - // (pose_sen.at('P') + Quaterniond(Vector4d(pose_sen.at('O'))) * - // feat_lmk_incoming->getMeasurement().head<3>()))); - // auto global_meas = - // pose_incoming.at('P') + Rotation2Dd(pose_incoming.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * - // feat_lmk_incoming->getMeasurement().head<2>()); - // WOLF_INFO("pose_incoming: ", pose_incoming); - // WOLF_INFO("Incoming global meas: ", global_meas.transpose()); + WOLF_DEBUG("Feature incoming candidate (by ID): ", + feat_lmk_incoming->id(), + " - ID: ", + feat_lmk_incoming->getExternalId(), + " - TYPE: ", + feat_lmk_incoming->getExternalType(), + " meas: ", + feat_lmk_incoming->getMeasurement().transpose()); // MATCH NECESSARY CONDITIONS: // 1. Same EXTERNAL_ID @@ -177,16 +143,19 @@ unsigned int ProcessorLandmarkExternal::processKnown() (feat_lmk_incoming->getExternalType() == -1 or // cond 2 feat_lmk_last->getExternalType() == -1 or // feat_lmk_incoming->getExternalType() == feat_lmk_last->getExternalType()) and // - detectionDistance( - feat_lmk_last, feat_lmk_incoming, pose_last, pose_incoming, pose_sen) < // cond 3 - params_tfle_->match_dist_th_id) + detectionDistance( // cond 3 + feat_lmk_last, + feat_lmk_incoming, + pose_last, + pose_incoming, + pose_sen) < params_tfle_->match_dist_th_id) { - WOLF_INFO("Feature last: ", - feat_lmk_last->id(), - " matched with feature ", - feat_lmk_incoming->id(), - " with landmark ID: ", - feat_lmk_last->landmarkId()); + WOLF_DEBUG("Feature last: ", + feat_lmk_last->id(), + " matched with feature ", + feat_lmk_incoming->id(), + " with landmark ID: ", + feat_lmk_last->landmarkId()); matched = true; // set LANDMARK_ID if defined @@ -217,32 +186,14 @@ unsigned int ProcessorLandmarkExternal::processKnown() while (feature_incoming_it != new_features_incoming_.end()) { auto feat_lmk_incoming = std::static_pointer_cast<FeatureLandmarkExternal>(*feature_incoming_it); - WOLF_INFO("Feature incoming candidate (by TYPE): ", - feat_lmk_incoming->id(), - " - ID: ", - feat_lmk_incoming->getExternalId(), - " - TYPE: ", - feat_lmk_incoming->getExternalType(), - " meas: ", - feat_lmk_incoming->getMeasurement().transpose()); - - // auto global_meas = - // (dim_ == 2 - // ? Eigen::VectorXd(pose_incoming.at('P') + - // Rotation2Dd(pose_incoming.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * - // feat_lmk_incoming->getMeasurement().head<2>())) - // : Eigen::VectorXd( - // pose_incoming.at('P') + - // Quaterniond(Vector4d(pose_incoming.at('O'))) * - // (pose_sen.at('P') + Quaterniond(Vector4d(pose_sen.at('O'))) * - // feat_lmk_incoming->getMeasurement().head<3>()))); - // auto global_meas = - // pose_incoming.at('P') + Rotation2Dd(pose_incoming.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * - // feat_lmk_incoming->getMeasurement().head<2>()); - // WOLF_INFO("pose_incoming: ", pose_incoming); - // WOLF_INFO("Incoming global meas: ", global_meas.transpose()); + WOLF_DEBUG("Feature incoming candidate (by TYPE): ", + feat_lmk_incoming->id(), + " - ID: ", + feat_lmk_incoming->getExternalId(), + " - TYPE: ", + feat_lmk_incoming->getExternalType(), + " meas: ", + feat_lmk_incoming->getMeasurement().transpose()); // MATCH NECESSARY CONDITIONS: // 1. Compatible EXTERNAL_ID (either not defined or same) @@ -252,16 +203,19 @@ unsigned int ProcessorLandmarkExternal::processKnown() feat_lmk_last->getExternalId() == -1 or // feat_lmk_incoming->getExternalId() == feat_lmk_last->getExternalId()) and // feat_lmk_incoming->getExternalType() == feat_lmk_last->getExternalType() and // cond 2 - detectionDistance( - feat_lmk_last, feat_lmk_incoming, pose_last, pose_incoming, pose_sen) < // cond 3 - params_tfle_->match_dist_th_type) + detectionDistance( // cond 3 + feat_lmk_last, + feat_lmk_incoming, + pose_last, + pose_incoming, + pose_sen) < params_tfle_->match_dist_th_type) { - WOLF_INFO("Feature last: ", - feat_lmk_last->id(), - " matched with feature ", - feat_lmk_incoming->id(), - " with landmark ID: ", - feat_lmk_last->landmarkId()); + WOLF_DEBUG("Feature last: ", + feat_lmk_last->id(), + " matched with feature ", + feat_lmk_incoming->id(), + " with landmark ID: ", + feat_lmk_last->landmarkId()); matched = true; // set LANDMARK_ID last -> incoming @@ -295,32 +249,14 @@ unsigned int ProcessorLandmarkExternal::processKnown() { auto feat_lmk_incoming = std::static_pointer_cast<FeatureLandmarkExternal>(*feature_incoming_it); - WOLF_INFO("Feature incoming candidate (by distance): ", - feat_lmk_incoming->id(), - " - ID: ", - feat_lmk_incoming->getExternalId(), - " - TYPE: ", - feat_lmk_incoming->getExternalType(), - " meas: ", - feat_lmk_incoming->getMeasurement().transpose()); - - // auto global_meas = - // (dim_ == 2 - // ? Eigen::VectorXd(pose_incoming.at('P') + - // Rotation2Dd(pose_incoming.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * - // feat_lmk_incoming->getMeasurement().head<2>())) - // : Eigen::VectorXd( - // pose_incoming.at('P') + - // Quaterniond(Vector4d(pose_incoming.at('O'))) * - // (pose_sen.at('P') + Quaterniond(Vector4d(pose_sen.at('O'))) * - // feat_lmk_incoming->getMeasurement().head<3>()))); - // auto global_meas = - // pose_incoming.at('P') + Rotation2Dd(pose_incoming.at('O')(0)) * - // (pose_sen.at('P') + Rotation2Dd(pose_sen.at('O')(0)) * - // feat_lmk_incoming->getMeasurement().head<2>()); - // WOLF_INFO("pose_incoming: ", pose_incoming); - // WOLF_INFO("Incoming global meas: ", global_meas.transpose()); + WOLF_DEBUG("Feature incoming candidate (by distance): ", + feat_lmk_incoming->id(), + " - ID: ", + feat_lmk_incoming->getExternalId(), + " - TYPE: ", + feat_lmk_incoming->getExternalType(), + " meas: ", + feat_lmk_incoming->getMeasurement().transpose()); // MATCH NECESSARY CONDITIONS: // 1. Compatible EXTERNAL_ID (either not defined or same) @@ -335,12 +271,12 @@ unsigned int ProcessorLandmarkExternal::processKnown() detectionDistance(feat_lmk_last, feat_lmk_incoming, pose_last, pose_incoming, pose_sen) < // cond 3 params_tfle_->match_dist_th_unknown) { - WOLF_INFO("Feature last: ", - feat_lmk_last->id(), - " matched with feature ", - feat_lmk_incoming->id(), - " with landmark ID: ", - feat_lmk_last->landmarkId()); + WOLF_DEBUG("Feature last: ", + feat_lmk_last->id(), + " matched with feature ", + feat_lmk_incoming->id(), + " with landmark ID: ", + feat_lmk_last->landmarkId()); matched = true; // set LANDMARK_ID last -> incoming @@ -369,7 +305,7 @@ unsigned int ProcessorLandmarkExternal::processKnown() } WOLF_DEBUG_COND(not matched, "Feature ", feat_lmk_last->id(), " not tracked."); } - WOLF_INFO("Tracked ", known_features_incoming_.size(), " features."); + WOLF_DEBUG("Tracked ", known_features_incoming_.size(), " features."); // Add new features (not tracked) as known features WOLF_DEBUG_COND(not new_features_incoming_.empty(), "Adding new features ", new_features_incoming_.size()); @@ -467,7 +403,7 @@ bool ProcessorLandmarkExternal::voteForKeyFrame() const { auto track_ids_last = track_matrix_.trackIds(last_ptr_); - WOLF_INFO("Active feature tracks: ", track_ids_last.size()); + WOLF_DEBUG("Active feature tracks: ", track_ids_last.size()); // number of tracks longer than track_length_th auto n_tracks = 0; @@ -483,55 +419,49 @@ bool ProcessorLandmarkExternal::voteForKeyFrame() const // Necessary condition: active valid tracks bool vote_min_features = n_tracks >= params_tfle_->min_features_for_keyframe; - WOLF_INFO("vote_min_features: ", - vote_min_features, - " - Active feature tracks longer than ", - params_tfle_->track_length_th, - ": ", - n_tracks, - " (should be equal or bigger than ", - params_tfle_->min_features_for_keyframe, - ")"); + WOLF_DEBUG("vote_min_features: ", + vote_min_features, + " - Active feature tracks longer than ", + params_tfle_->track_length_th, + ": ", + n_tracks, + " (should be equal or bigger than ", + params_tfle_->min_features_for_keyframe, + ")"); bool vote_new_features(true), vote_time_span(true); if (vote_min_features and origin_ptr_) { // Sufficient condition: new valid tracks vote_new_features = n_new_tracks >= params_tfle_->new_features_for_keyframe; - WOLF_INFO("vote_new_features: ", - vote_new_features, - " - n_new_tracks = ", - n_new_tracks, - " (should be equal or bigger than ", - params_tfle_->new_features_for_keyframe, - ")"); + WOLF_DEBUG("vote_new_features: ", + vote_new_features, + " - n_new_tracks = ", + n_new_tracks, + " (should be equal or bigger than ", + params_tfle_->new_features_for_keyframe, + ")"); // Sufficient condition: time span vote_time_span = last_ptr_->getTimeStamp() - origin_ptr_->getTimeStamp() > params_tfle_->time_span; - WOLF_INFO("vote_time_span: ", - vote_time_span, - " - time_span = ", - last_ptr_->getTimeStamp() - origin_ptr_->getTimeStamp(), - " (should be bigger than ", - params_tfle_->time_span, - ")"); + WOLF_DEBUG("vote_time_span: ", + vote_time_span, + " - time_span = ", + last_ptr_->getTimeStamp() - origin_ptr_->getTimeStamp(), + " (should be bigger than ", + params_tfle_->time_span, + ")"); } bool vote = vote_min_features and (vote_new_features or vote_time_span); - WOLF_INFO((vote ? "Vote " : "Do NOT vote "), "for KF"); + WOLF_DEBUG((vote ? "Vote " : "Do NOT vote "), "for KF"); return vote; } void ProcessorLandmarkExternal::establishFactors() { - WOLF_INFO("establishFactors"); - // if (origin_ptr_ == last_ptr_) return; - - // // reset n_tracks_origin_ - // lmks_ids_origin_.clear(); - // will emplace a factor (and landmark if needed) for each known feature in last with long tracks FactorBasePtrList fac_list; auto track_ids_last = track_matrix_.trackIds(last_ptr_); @@ -542,19 +472,19 @@ void ProcessorLandmarkExternal::establishFactors() { auto feature = std::static_pointer_cast<FeatureLandmarkExternal>(track_matrix_.feature(track_id, last_ptr_)); - WOLF_INFO("Feature ", - feature->id(), - ": ID: ", - feature->landmarkId(), - " EXTERNAL_ID: ", - feature->getExternalId(), - " TYPE: ", - feature->getExternalType()); + WOLF_DEBUG("Feature ", + feature->id(), + ": ID: ", + feature->landmarkId(), + " EXTERNAL_ID: ", + feature->getExternalId(), + " TYPE: ", + feature->getExternalType()); // not enough long track - WOLF_INFO_COND(track_matrix_.trackSize(track_id) < params_tfle_->track_length_th, - "Track NOT long enough ", - track_matrix_.trackSize(track_id)); + WOLF_DEBUG_COND(track_matrix_.trackSize(track_id) < params_tfle_->track_length_th, + "Track NOT long enough ", + track_matrix_.trackSize(track_id)); if (track_matrix_.trackSize(track_id) < params_tfle_->track_length_th) continue; // Landmark match @@ -563,7 +493,7 @@ void ProcessorLandmarkExternal::establishFactors() { // LOOP CLOSURE // By ID - WOLF_INFO("Searching Loop closure by ID..."); + WOLF_DEBUG("Searching Loop closure by ID..."); if (params_tfle_->close_loops_by_id and feature->getExternalId() != -1) { auto lmk_list = getProblem()->getMap()->getLandmarkList(); @@ -576,16 +506,16 @@ void ProcessorLandmarkExternal::establishFactors() detectionDistance(feature, lmk_ext, pose_frm, pose_sen) < params_tfle_->match_dist_th_id) { lmk = lmk_ext; - WOLF_INFO("Found loop closure by EXTERNAL_ID with ", lmk->id()); + WOLF_DEBUG("Found loop closure by EXTERNAL_ID with ", lmk->id()); break; } - WOLF_INFO_COND(lmk_ext and lmk_ext->getExternalId() == feature->getExternalId(), - "Landmark with EXTERNAL_ID found but not matched due to distance: ", - detectionDistance(feature, lmk_ext, pose_frm, pose_sen)) + WOLF_DEBUG_COND(lmk_ext and lmk_ext->getExternalId() == feature->getExternalId(), + "Landmark with EXTERNAL_ID found but not matched due to distance: ", + detectionDistance(feature, lmk_ext, pose_frm, pose_sen)) } } // By TYPE - WOLF_INFO("Searching Loop closure by TYPE..."); + WOLF_DEBUG("Searching Loop closure by TYPE..."); if (not lmk and params_tfle_->close_loops_by_type and feature->getExternalType() != -1) { auto lmk_list = getProblem()->getMap()->getLandmarkList(); @@ -598,12 +528,12 @@ void ProcessorLandmarkExternal::establishFactors() detectionDistance(feature, lmk_ext, pose_frm, pose_sen) < params_tfle_->match_dist_th_type) { lmk = lmk_ext; - WOLF_INFO("Found loop closure by TYPE with ", lmk->id()); + WOLF_DEBUG("Found loop closure by TYPE with ", lmk->id()); break; } - WOLF_INFO_COND(lmk_ext and lmk_ext->getExternalType() == feature->getExternalType(), - "Landmark with TYPE found but not matched due to distance: ", - detectionDistance(feature, lmk_ext, pose_frm, pose_sen)) + WOLF_DEBUG_COND(lmk_ext and lmk_ext->getExternalType() == feature->getExternalType(), + "Landmark with TYPE found but not matched due to distance: ", + detectionDistance(feature, lmk_ext, pose_frm, pose_sen)) } // update Landmark EXTERNAL_ID (if available) @@ -614,17 +544,17 @@ void ProcessorLandmarkExternal::establishFactors() if (not lmk) { lmk = emplaceLandmark(feature); - WOLF_INFO("Emplaced new landmark ", lmk->id()); + WOLF_DEBUG("Emplaced new landmark ", lmk->id()); } // set LANDMARK_ID in all features of the track for (auto feat_pair : track_matrix_.track(track_id)) { feat_pair.second->setLandmarkId(lmk->id()); - WOLF_INFO("Setting landmark id in feature ", - feat_pair.second->id(), - " landmark_id: ", - feat_pair.second->landmarkId()); + WOLF_DEBUG("Setting landmark id in feature ", + feat_pair.second->id(), + " landmark_id: ", + feat_pair.second->landmarkId()); } } // landmarkId already set @@ -651,7 +581,7 @@ void ProcessorLandmarkExternal::establishFactors() } } - WOLF_INFO("ProcessorLandmarkExternal::establishFactors: emplaced ", fac_list.size(), " factors!"); + WOLF_DEBUG("ProcessorLandmarkExternal::establishFactors: emplaced ", fac_list.size(), " factors!"); } FactorBasePtr ProcessorLandmarkExternal::emplaceFactor(FeatureBasePtr _feature, LandmarkBasePtr _landmark) -- GitLab