diff --git a/src/corner_falko_2d.cpp b/src/corner_falko_2d.cpp index 09bf36f9d91f9dfaabf8b8369bd99bfade0b71f7..ba3c7f94bd2bd9b6b8e7a1033854ad7642380238 100644 --- a/src/corner_falko_2d.cpp +++ b/src/corner_falko_2d.cpp @@ -70,7 +70,7 @@ void CornerFalko2d::findLoopClosure(falkolib::LaserScan scan){ int NewMatchingNumber = match(keypointSets[i], keypointSet2, assoNN); - if (NewMatchingNumber > matchingNumber ) { + if (NewMatchingNumber > matchingNumber && NewMatchingNumber>keypointsNumberTh) { matchingNumber=NewMatchingNumber; matchingPosition=i; } diff --git a/src/corner_falko_2d.h b/src/corner_falko_2d.h index 8bc7639acb16c499cae6db3e463f6172f0c0846a..0e355c1a4a319b0efc967bfaedb5d5f7e10678eb 100644 --- a/src/corner_falko_2d.h +++ b/src/corner_falko_2d.h @@ -72,11 +72,17 @@ public: **/ void findLoopClosure(falkolib::LaserScan scan); + /** @brief set euclidean distance threshold for keypoints distance measurements*/ + void setKeypointsNumberTh(int _th) { + keypointsNumberTh = _th; + } + std::vector<std::vector<falkolib::FALKO>> keypointSets; std::vector<falkolib::FALKO> lastKeypointSet; std::vector<std::vector<falkolib::BSC>> descriptorSets; std::vector<falkolib::BSC>lastDescriptorSet; + int matchingNumber; int scanNumber=0; @@ -84,6 +90,8 @@ public: int scansExtracted=0; int matchingPosition=-1; + + int keypointsNumberTh=2; }; } /* namespace laserscanutils */