Skip to content
Snippets Groups Projects
Commit cdbaaee8 authored by Sergi Pujol's avatar Sergi Pujol
Browse files

CornerFalko2d class refactorized with inheritances

parent 9af5aa0e
No related branches found
No related tags found
1 merge request!4Resolve "Implementation of Falko lib"
......@@ -9,30 +9,31 @@
namespace wolf{
void CornerFalko2d::extract (falkolib::LaserScan scan){
fe.setMinExtractionRange(0.25);
fe.setMaxExtractionRange(25);
fe.enableSubbeam(true);
fe.setNMSRadius(0.1);
fe.setNeighB(0.01);
fe.setBRatio(4);
fe.setGridSectors(16);
std::vector<falkolib::FALKO> keypoints;
/*
fe.extract(scan, keypoints);
falkolib::BSCExtractor<falkolib::FALKO> bsc(16,8);
std::vector<falkolib::BSC> bscDesc;
bsc.compute(scan, keypoints, bscDesc);
*/
CornerFalko2d::CornerFalko2d(int _circularSectorNumber, int _radialRingNumber, bool _useKeypointRadius, double _radius) :BSCExtractor( _circularSectorNumber, _radialRingNumber, _useKeypointRadius ,_radius ) {
// FALKO EXTRACTOR PARAMS
setMinExtractionRange(0.25);
setMaxExtractionRange(25);
enableSubbeam(true);
setNMSRadius(0.1);
setNeighB(0.01);
setBRatio(4);
setGridSectors(16);
}
void CornerFalko2d::train (falkolib::LaserScan scan){
// Extract keypoints
lastKeypointSet.clear();
extract(scan, lastKeypointSet);
//Compute descriptors
lastDescriptorSet.clear();
bsc.compute(scan, lastKeypointSet, lastDescriptorSet);
}
} // wolf namespace
......@@ -33,15 +33,25 @@
namespace wolf
{
class CornerFalko2d
/** \brief A 2D corner extractor and loop closure computing class
*
*
*
*
*/
class CornerFalko2d: public falkolib::FALKOExtractor, falkolib::BSCExtractor<falkolib::FALKO>
{
public:
/** \brief Constructor
*
* Constructor
*
**/
CornerFalko2d();
/**
* @brief Constructor
* @param _circularSectorNumber number of grid circular sector (BSCExtractor)
* @param _radialRingNumber number of grid radial number (BSCExtractor)
* @param _useKeypointRadius if true, the selected neighborhood points search radius is keypoint one (BSCExtractor)
* @param _radius neighborhood points search radius (BSCExtractor)
*/
CornerFalko2d(int _circularSectorNumber=16, int _radialRingNumber=8, bool _useKeypointRadius = true, double _radius = 0.1) ;
/** \brief Destructor
*
......@@ -52,19 +62,28 @@ public:
/** \brief Gets a set of landmarks/scenes to use as trained set.
**/
void train();
void train(falkolib::LaserScan scan);
/** \brief Extract landmark/scene (list of corners) from a given 2D scan
**/
void extract(falkolib::LaserScan scan);
//void extract(falkolib::LaserScan scan);
/** \brief compare new scans against the training set in order to find loop closures
**/
void findLoopClosure();
std::vector<std::vector<falkolib::FALKO>> CornerSet;
std::vector<std::vector<falkolib::FALKO>> keypointSets;
std::vector<falkolib::FALKO> lastKeypointSet;
std::vector<std::vector<falkolib::BSC>> descriptorSets;
falkolib::FALKOExtractor fe;
std::vector<falkolib::BSC>lastDescriptorSet;
//int _circularSectorNumber;
//int _radialRingNumber;
// Keypoints extractor
//falkolib::FALKOExtractor fe;
// BSC descriptor extractor
//falkolib::BSCExtractor<falkolib::FALKO> bsc(_circularSectorNumber,_radialRingNumber);
};
} /* namespace wolf */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment