From cc9c706110615ac926ec42b3ba1374192aea6d04 Mon Sep 17 00:00:00 2001
From: Sergi Pujol <sergi.pujol.badell@estudiantat.upc.edu>
Date: Sat, 6 Feb 2021 11:56:42 +0100
Subject: [PATCH] evaluateNewRefScene function modified

---
 src/corner_falko_2d.cpp            | 13 ++++++++-----
 src/corner_falko_2d.h              |  3 +++
 src/examples/corner_falko_demo.cpp |  6 +++++-
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/corner_falko_2d.cpp b/src/corner_falko_2d.cpp
index c48b928..8bd0c3a 100644
--- a/src/corner_falko_2d.cpp
+++ b/src/corner_falko_2d.cpp
@@ -91,14 +91,18 @@ int CornerFalko2d::evaluateNewReferenceScene(LaserScan scan,LaserScanParams scan
 
     int NewSceneAdded=0;
 
-    if (scanNumber % scanInterval == 0){
+    if (scanNumber % scanInterval == 0 || scanNumber == 1){
 
-        falkolib::LaserScan scanFALKO= convert2LaserScanFALKO(scan, scanParams);
+        findLoopClosure(scan, scanParams);
 
-        AddNewReferenceScene(scanFALKO);
+        if (matchingNumber < refSceneAddingTh) {
 
-        NewSceneAdded=1;
+            falkolib::LaserScan scanFALKO= convert2LaserScanFALKO(scan, scanParams);
 
+            AddNewReferenceScene(scanFALKO);
+
+            NewSceneAdded=1;
+        }
     }
 
     return NewSceneAdded;
@@ -106,5 +110,4 @@ int CornerFalko2d::evaluateNewReferenceScene(LaserScan scan,LaserScanParams scan
 }
 
 
-
 } // laserscanutils namespace
diff --git a/src/corner_falko_2d.h b/src/corner_falko_2d.h
index bdab934..a3a3048 100644
--- a/src/corner_falko_2d.h
+++ b/src/corner_falko_2d.h
@@ -108,6 +108,9 @@ public:
     int matchingPosition=-1;
 
     int keypointsNumberTh=2;
+
+    // Max number of matched keypoints between 2 scenes for the candidate scene be considered a good New reference scene
+    int refSceneAddingTh =6;
 };
 
 } /* namespace laserscanutils */
diff --git a/src/examples/corner_falko_demo.cpp b/src/examples/corner_falko_demo.cpp
index e9af47f..30358e4 100644
--- a/src/examples/corner_falko_demo.cpp
+++ b/src/examples/corner_falko_demo.cpp
@@ -35,10 +35,14 @@ int main(int argc, char** argv)
 
     CornerFalko2d cornerMatching;
 
-    cornerMatching.evaluateNewReferenceScene(scan, laserParams, scanInterval);
+    int sceneAdded = cornerMatching.evaluateNewReferenceScene(scan, laserParams, scanInterval);
 
     std::cout << "num keypoints1 extracted: " << cornerMatching.lastKeypointSet.size() << std::endl;
 
+    if (sceneAdded==1){
+        std::cout << "NewRefSceneAdded!!! " << std::endl;
+    }
+
     cornerMatching.findLoopClosure(scan, laserParams);
 
     std::cout << "matching number : " << cornerMatching.matchingNumber << std::endl;
-- 
GitLab