From f4278d481783c1539601b66606cda27360e101bf Mon Sep 17 00:00:00 2001
From: Joan Sola <jsola@iri.upc.edu>
Date: Sat, 16 Apr 2022 21:41:17 +0200
Subject: [PATCH] Use loss function option from user params

---
 src/processor/processor_visual_odometry.cpp | 22 ++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/processor/processor_visual_odometry.cpp b/src/processor/processor_visual_odometry.cpp
index 5fd51290f..8739a74e2 100644
--- a/src/processor/processor_visual_odometry.cpp
+++ b/src/processor/processor_visual_odometry.cpp
@@ -418,20 +418,32 @@ void ProcessorVisualOdometry::establishFactors()
 
         // 1) create a factor between new KF and assocatiated track landmark
         //    HYP: assuming the trackid are the same as the landmark ID -> BAD if other types of landmarks involved
-        if (associated_lmk){
+        if (associated_lmk)
+        {
             LandmarkHpPtr associated_lmk_hp = std::dynamic_pointer_cast<LandmarkHp>(associated_lmk);
-            FactorBase::emplace<FactorPixelHp>(feat_pi, feat_pi, associated_lmk_hp, shared_from_this(), true);
+            FactorBase::emplace<FactorPixelHp>(feat_pi,
+                                               feat_pi,
+                                               associated_lmk_hp,
+                                               shared_from_this(),
+                                               params_visual_odometry_->apply_loss_function);
         }
 
         // 2) create landmark if track is not associated with one and has enough length
-        else if(track_matrix_.trackSize(feat->trackId()) >= params_visual_odometry_->min_track_length_for_landmark_){
+        else if(track_matrix_.trackSize(feat->trackId()) >= params_visual_odometry_->min_track_length_for_landmark_)
+        {
             // std::cout << "NEW valid track \\o/" << std::endl;
             LandmarkBasePtr lmk = emplaceLandmark(feat_pi);
             lmk->setId(feat_pi->trackId());
+
+            // Add factors from all KFs of this track to the new lmk
             Track track_kf = track_matrix_.trackAtKeyframes(feat->trackId());
-            for (auto feat_kf: track_kf){
+            for (auto feat_kf: track_kf)
+            {
                 LandmarkHpPtr lmk_hp = std::dynamic_pointer_cast<LandmarkHp>(lmk);
-                FactorBase::emplace<FactorPixelHp>(feat_kf.second, feat_kf.second, lmk_hp, shared_from_this(), true);
+                FactorBase::emplace<FactorPixelHp>(feat_kf.second,
+                                                   feat_kf.second,
+                                                   lmk_hp, shared_from_this(),
+                                                   params_visual_odometry_->apply_loss_function);
             }
         }
     }
-- 
GitLab