From 8dcd1066788f0f937dcaf1dc2f3d269d086ee298 Mon Sep 17 00:00:00 2001
From: Joan Sola <jsola@iri.upc.edu>
Date: Sat, 16 Apr 2022 21:42:26 +0200
Subject: [PATCH] Delete tracks that have no keyframe (old dead tracks)

---
 src/processor/processor_visual_odometry.cpp | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/processor/processor_visual_odometry.cpp b/src/processor/processor_visual_odometry.cpp
index 0f50386f9..b0d02ec63 100644
--- a/src/processor/processor_visual_odometry.cpp
+++ b/src/processor/processor_visual_odometry.cpp
@@ -498,6 +498,19 @@ LandmarkBasePtr ProcessorVisualOdometry::emplaceLandmark(FeatureBasePtr _feat)
 void ProcessorVisualOdometry::postProcess()
 {
     frame_count_ ++;
+
+    // delete tracks with no keyframes
+    for (auto track_it = track_matrix_.getTracks().begin(); track_it != track_matrix_.getTracks().end(); /* do not increment iterator yet... */)
+    {
+        auto track_id = track_it->first;
+        if (track_matrix_.trackAtKeyframes(track_id).empty())
+        {
+            ++track_it;                      // ... increment iterator **before** erasing the element!!!
+            track_matrix_.remove(track_id);
+        }
+        else
+            ++track_it;
+    }
 }
 
 bool ProcessorVisualOdometry::voteForKeyFrame() const
-- 
GitLab