From e1c5b86d644b9da7e4095076bd96b8b77b2a0cb2 Mon Sep 17 00:00:00 2001 From: Sergi Pujol <sergi.pujol.badell@estudiantat.upc.edu> Date: Sun, 14 Feb 2021 20:43:48 +0100 Subject: [PATCH] added template to cornerScene --- src/corner_scene.h | 22 +++++++++++++++++++--- src/loop_closure_base_2d.h | 5 +++-- src/loop_closure_falko.cpp | 19 +++++++++++-------- src/loop_closure_falko.h | 9 ++++++--- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/corner_scene.h b/src/corner_scene.h index a2cd43c..19e45d3 100644 --- a/src/corner_scene.h +++ b/src/corner_scene.h @@ -11,13 +11,29 @@ #include <iostream> #include <fstream> +/************************** + * Falko includes * + **************************/ +#include <falkolib/Feature/FALKO.h> +#include <falkolib/Feature/CGH.h> +#include <falkolib/Feature/BSC.h> +#include <falkolib/Feature/FALKOExtractor.h> + +#include <falkolib/Feature/BSCExtractor.h> +#include <falkolib/Feature/CGHExtractor.h> + +#include <falkolib/Matching/NNMatcher.h> +#include <falkolib/Matching/AHTMatcher.h> + namespace laserscanutils { + +template <typename D> struct cornerScene{ - std::vector<double> keypointsList; - std::vector<double> descriptorsList; + std::vector<falkolib::FALKO> keypointsList; + std::vector<D> descriptorsList; }; } /* namespace laserscanutils */ -#endif /* CORNER_SCENE_H_ */ \ No newline at end of file +#endif /* CORNER_SCENE_H_ */ diff --git a/src/loop_closure_base_2d.h b/src/loop_closure_base_2d.h index ec48fe6..def39c0 100644 --- a/src/loop_closure_base_2d.h +++ b/src/loop_closure_base_2d.h @@ -51,11 +51,12 @@ public: /** \brief compare new scans against the trained set in order to find loop closures **/ - virtual void findLoopClosure(std::list<cornerScene>& scenes, const cornerScene newScene){} + //virtual void findLoopClosure(std::list<cornerScene>& scenes, const cornerScene newScene){} + virtual void findLoopClosure(){} /** \brief update the scene struct with keypoints and descriptors **/ - virtual std::shared_ptr<cornerScene> extractScene(LaserScan &scan,LaserScanParams &scanParams){} + virtual void extractScene(LaserScan &scan,LaserScanParams &scanParams){} /** \brief Convert scans from laserscanutils::LaserScan to falkolib::LaserScan object **/ diff --git a/src/loop_closure_falko.cpp b/src/loop_closure_falko.cpp index 9e9b3c4..38fb164 100644 --- a/src/loop_closure_falko.cpp +++ b/src/loop_closure_falko.cpp @@ -10,8 +10,8 @@ namespace laserscanutils{ //CONSTRUCTOR - template <typename E, typename M> - loopClosureFalko<E, M>::loopClosureFalko(){ + template <typename D,typename E, typename M> + loopClosureFalko<D,E, M>::loopClosureFalko(){ // FALKO Extractor Parameters setMinExtractionRange(0.1); setMaxExtractionRange(25); @@ -23,18 +23,21 @@ namespace laserscanutils{ // Matcher Extractor Parameters matcher.setDistanceThreshold(0.1); + } // DESTRUCTOR - template <typename E, typename M> - loopClosureFalko<E,M>::~loopClosureFalko(){} + template <typename D,typename E, typename M> + loopClosureFalko<D,E,M>::~loopClosureFalko(){} + + template <typename D,typename E, typename M> + std::shared_ptr<cornerScene<D>> loopClosureFalko<D,E, M>::extractScene(LaserScan &scan,LaserScanParams &scanParams){ + + auto scanFALKO =loopClosureFalko<D,E,M>::convert2LaserScanFALKO(scan, scanParams); - template <typename E, typename M> - std::shared_ptr<cornerScene> loopClosureFalko<E, M>::extractScene(LaserScan &scan,LaserScanParams &scanParams){ - auto scanFALKO =loopClosureFalko<E,M>::convert2LaserScanFALKO(scan, scanParams); + auto NewScene=std::make_shared<cornerScene<D>>(); - auto NewScene=std::make_shared<cornerScene>(); return NewScene; } diff --git a/src/loop_closure_falko.h b/src/loop_closure_falko.h index 8a7aabd..451cb82 100644 --- a/src/loop_closure_falko.h +++ b/src/loop_closure_falko.h @@ -34,12 +34,15 @@ namespace laserscanutils { + +typedef falkolib::BSC bsc; typedef falkolib::BSCExtractor<falkolib::FALKO> bscExtractor; typedef falkolib::NNMatcher<falkolib::FALKO> NNMatcher; + /** \brief A base class for loop closure using falko library **/ -template <typename E, typename M> +template <typename D, typename E, typename M> class loopClosureFalko : public falkolib::FALKOExtractor{ private: @@ -54,11 +57,11 @@ public: /** \brief compare new scans against the trained set in order to find loop closures **/ - void findLoopClosure(std::list<cornerScene>& scenes, const cornerScene newScene){} + //void findLoopClosure(std::list<cornerScene>& scenes, const cornerScene newScene){} /** \brief update the scene struct with keypoints and descriptors **/ - std::shared_ptr<cornerScene> extractScene(LaserScan &scan,LaserScanParams &scanParams); + std::shared_ptr<cornerScene<D>> extractScene(LaserScan &scan,LaserScanParams &scanParams); E extractor; M matcher; -- GitLab