From 1abdf4abcb2ea1234f28c43bb22632b6df39422e Mon Sep 17 00:00:00 2001
From: Sergi Pujol <sergi.pujol.badell@estudiantat.upc.edu>
Date: Fri, 29 Jan 2021 10:54:03 +0100
Subject: [PATCH] findloopClosure function segmentation fault error corrected

---
 src/corner_falko_2d.cpp            | 12 ++++++++----
 src/corner_falko_2d.h              |  2 ++
 src/examples/corner_falko_demo.cpp |  2 ++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/corner_falko_2d.cpp b/src/corner_falko_2d.cpp
index 8f1e6b7..deebc2d 100644
--- a/src/corner_falko_2d.cpp
+++ b/src/corner_falko_2d.cpp
@@ -42,6 +42,8 @@ void CornerFalko2d::storeCorners (falkolib::LaserScan scan, int scanInterval){
         keypointSets.push_back(lastKeypointSet);
         descriptorSets.push_back(lastDescriptorSet);
 
+        std::cout << "sizeof : " << lastKeypointSet.size() << std::endl;
+
     }
 
 }
@@ -56,13 +58,15 @@ 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);
 
-    for (int i=0; i<keypointSets.size();i++){
+    for (int i=0; i<rows;i++){
+        setDistanceThreshold(0.1);
         std::vector<std::pair<int, int> > assoNN;
-        int matchingNumber = match(keypointSets[i], keypointSet2, assoNN);
-    }
-
+        matchingNumber = match(keypointSets[i], keypointSet2, assoNN);
 
+    }
 
 }
 
diff --git a/src/corner_falko_2d.h b/src/corner_falko_2d.h
index 079db34..02c0474 100644
--- a/src/corner_falko_2d.h
+++ b/src/corner_falko_2d.h
@@ -77,6 +77,8 @@ public:
     std::vector<std::vector<falkolib::BSC>> descriptorSets;
     std::vector<falkolib::BSC>lastDescriptorSet;
 
+    int matchingNumber;
+
     int scanNumber=0;
 };
 
diff --git a/src/examples/corner_falko_demo.cpp b/src/examples/corner_falko_demo.cpp
index cda359c..2b94b98 100644
--- a/src/examples/corner_falko_demo.cpp
+++ b/src/examples/corner_falko_demo.cpp
@@ -35,4 +35,6 @@ int main(int argc, char** argv)
 
     CornerMatching.findLoopClosure(scan1);
 
+    std::cout << "matching number : " << CornerMatching.matchingNumber << std::endl;
+
 }
-- 
GitLab