From cc62e5234fd92a629b83849408b4b9b78b8cc69e Mon Sep 17 00:00:00 2001
From: Sergi Pujol <sergi.pujol.badell@estudiantat.upc.edu>
Date: Thu, 4 Feb 2021 16:59:15 +0100
Subject: [PATCH] refactor. function created convert2LaserScanFALKO. Added line
 in CMakelists to solve eigen Error

---
 src/CMakeLists.txt      |  1 +
 src/corner_falko_2d.cpp | 23 +++++++++++++----------
 src/corner_falko_2d.h   |  5 ++++-
 3 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9c9cf60..b187780 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -31,6 +31,7 @@ IF(faramotics_FOUND)
 ENDIF(faramotics_FOUND)
 
 if(${falkolib_FOUND})
+  add_definitions(-DEIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
   include_directories(${falkolib_INCLUDE_DIRS})
   link_directories(${falkolib_LIBRARY_DIRS})
 endif()
diff --git a/src/corner_falko_2d.cpp b/src/corner_falko_2d.cpp
index 64b4b5a..5c1193a 100644
--- a/src/corner_falko_2d.cpp
+++ b/src/corner_falko_2d.cpp
@@ -34,11 +34,8 @@ void CornerFalko2d::storeCorners (LaserScan scan,LaserScanParams scanParams, int
     scanNumber=scanNumber+1;
 
     if (scanNumber % scanInterval == 0){
-        
-        //Convert scans from laserscanutils::LaserScan to falkolib::LaserScan object
-        falkolib::LaserScan scanFALKO(scanParams.angle_min_, scanParams.angle_max_, scan.ranges_raw_.size());
-        std::vector<double> doubleRanges(scan.ranges_raw_.begin(), scan.ranges_raw_.end());
-        scanFALKO.fromRanges(doubleRanges);
+
+        falkolib::LaserScan scanFALKO= convert2LaserScanFALKO(scan, scanParams);
 
         // Extract keypoints
         lastKeypointSet.clear();
@@ -59,11 +56,8 @@ void CornerFalko2d::storeCorners (LaserScan scan,LaserScanParams scanParams, int
 
 void CornerFalko2d::findLoopClosure(LaserScan scan,LaserScanParams scanParams){
     
-    //Convert scans from laserscanutils::LaserScan to falkolib::LaserScan object
-    falkolib::LaserScan scanFALKO(scanParams.angle_min_, scanParams.angle_max_, scan.ranges_raw_.size());
-    std::vector<double> doubleRanges(scan.ranges_raw_.begin(), scan.ranges_raw_.end());
-    scanFALKO.fromRanges(doubleRanges);
-    
+    falkolib::LaserScan scanFALKO= convert2LaserScanFALKO(scan, scanParams);
+
     //Compute descriptors
     std::vector<falkolib::FALKO> keypointSet2;
     extract(scanFALKO, keypointSet2);
@@ -98,6 +92,15 @@ void CornerFalko2d::findLoopClosure(LaserScan scan,LaserScanParams scanParams){
 
 }
 
+falkolib::LaserScan CornerFalko2d::convert2LaserScanFALKO(LaserScan scan,LaserScanParams scanParams){
+
+    falkolib::LaserScan scanFALKO(scanParams.angle_min_, scanParams.angle_max_, scan.ranges_raw_.size());
+    std::vector<double> doubleRanges(scan.ranges_raw_.begin(), scan.ranges_raw_.end());
+    scanFALKO.fromRanges(doubleRanges);
+    return scanFALKO;
+
+}
+
 
 
 } // laserscanutils namespace
diff --git a/src/corner_falko_2d.h b/src/corner_falko_2d.h
index ffcff43..4d707cd 100644
--- a/src/corner_falko_2d.h
+++ b/src/corner_falko_2d.h
@@ -71,7 +71,6 @@ public:
 
     /** \brief Extract landmark/scene (list of corners) from a given 2D scan
      **/
-    //void extract(falkolib::LaserScan scan);
 
     /** \brief compare new scans against the training set in order to find loop closures
      **/
@@ -82,6 +81,10 @@ public:
         keypointsNumberTh = _th;
     }
 
+    /** \brief Convert scans from laserscanutils::LaserScan to falkolib::LaserScan object
+     **/
+    falkolib::LaserScan convert2LaserScanFALKO(LaserScan scan,LaserScanParams scanParams);
+
     std::vector<std::vector<falkolib::FALKO>> keypointSets;
     std::vector<falkolib::FALKO> lastKeypointSet;
     std::vector<std::vector<falkolib::BSC>> descriptorSets;
-- 
GitLab