diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9c9cf6065e50be5bed8488c24b7314f0cae060a8..b18778033b48e886b57ff31216b71a3265704f71 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 64b4b5a8dcb243a469196fdd90534d2826a47ba6..5c1193ad957e56c19361e0b118f3d29132ee540b 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 ffcff43f9cfe4f9365ad06589ec65c50d7786828..4d707cd150fe6bfe6795001efc9ad17e5f605891 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;