From e6ef7245738c8246ad6814b287207f6f427d5b66 Mon Sep 17 00:00:00 2001
From: Sergi Pujol <sergi.pujol.badell@estudiantat.upc.edu>
Date: Mon, 1 Feb 2021 15:45:10 +0100
Subject: [PATCH] improved function cornerFalko2d->findLoopClosure

---
 src/corner_falko_2d.cpp | 23 +++++++++++++++++++----
 src/corner_falko_2d.h   |  2 ++
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/corner_falko_2d.cpp b/src/corner_falko_2d.cpp
index 661e18f..09bf36f 100644
--- a/src/corner_falko_2d.cpp
+++ b/src/corner_falko_2d.cpp
@@ -61,13 +61,28 @@ void CornerFalko2d::findLoopClosure(falkolib::LaserScan scan){
     compute(scan, keypointSet2, descriptorSet2);
 
     //Matching
-    int rows =  sizeof(keypointSets)/sizeof(keypointSets[0]);
-    int cols = sizeof(keypointSets)/(sizeof(int)*rows);
+    int rows = keypointSets.size();
 
+    matchingNumber=0;
+    matchingPosition=-1;
     for (int i=0; i<rows;i++){
         std::vector<std::pair<int, int> > assoNN;
-        matchingNumber = match(keypointSets[i], keypointSet2, assoNN);
-    }
+
+        int NewMatchingNumber = match(keypointSets[i], keypointSet2, assoNN);
+
+        if (NewMatchingNumber > matchingNumber ) {
+            matchingNumber=NewMatchingNumber;
+            matchingPosition=i;
+        }
+
+/*        for (auto& match : assoNN) {
+            if (match.second >= 0) {
+                int i1 = match.first;
+                int i2 = match.second;
+                std::cout << "i1: " << i1 << "\ti2: " << i2 << "\t keypoints distance: " << (keypoints1[i1].distance(keypoints2[i2])) << "\t CHG Distance: " << (cghDesc1[i1].distance(cghDesc2[i2])) << "\t BSC Distance: " << (bscDesc1[i1].distance(bscDesc2[i2])) << endl;
+            }
+       }
+ */    }
 
 }
 
diff --git a/src/corner_falko_2d.h b/src/corner_falko_2d.h
index 5ce667e..8bc7639 100644
--- a/src/corner_falko_2d.h
+++ b/src/corner_falko_2d.h
@@ -82,6 +82,8 @@ public:
     int scanNumber=0;
 
     int scansExtracted=0;
+
+    int matchingPosition=-1;
 };
 
 } /* namespace laserscanutils */
-- 
GitLab