12 #ifdef HTMSLAM_HAS_FABMAP 13 #include <FabMapLibInterface.h> 14 #define THE_FABMAP static_cast<fabmap::FabMapInstance*>(m_fabmap) 23 CTopLCDetector_FabMap::CTopLCDetector_FabMap(
CHMTSLAM* hmtslam)
26 #ifdef HTMSLAM_HAS_FABMAP 31 unsigned int nVocabSize;
32 if (!fabmap::ParseOXV_PeekDimensions(
35 "Error parsing vocabulary file: %s",
38 m_fabmap =
new fabmap::FabMapInstance(
43 cout <<
"[CTopLCDetector_FabMap::constructor] Resetting FabMap" << endl;
44 THE_FABMAP->hmtslam_restart();
46 THROW_EXCEPTION(
"Please, recompile MRPT with FabMap to use this class.");
52 #ifdef HTMSLAM_HAS_FABMAP 67 [[maybe_unused]]
double& out_log_lik)
77 [[maybe_unused]]
const TPoseID& poseID,
80 #ifdef HTMSLAM_HAS_FABMAP 82 vector<string> lstObsImages;
89 obsIm->image.getExternalStorageFileAbsolutePath(path);
90 lstObsImages.push_back(path);
94 if (lstObsImages.empty())
return;
96 cout <<
"[OnNewPose] Adding new pose: " << poseID
97 <<
" # of images: " << lstObsImages.size() << endl;
98 THE_FABMAP->hmtslam_addNewPose(poseID, lstObsImages);
104 : vocab_path(
"./vocab"), vocabName(
"vocab_name")
124 out <<
"\n----------- [CTopLCDetector_FabMap::TOptions] ------------ \n\n";
Declares a class derived from "CObservation" that encapsules an image from a camera, whose relative pose to robot is also stored.
#define THROW_EXCEPTION(msg)
CTopLCDetector_FabMap::TOptions TLC_fabmap_options
Options passed to this TLC constructor.
void OnNewPose(const TPoseID &poseID, const mrpt::obs::CSensoryFrame *SF) override
Hook method for being warned about the insertion of a new poses into the maps.
Classes related to the implementation of Hybrid Metric Topological (HMT) SLAM.
uint64_t TPoseID
An integer number uniquely identifying each robot pose stored in HMT-SLAM.
TOptions()
Initialization of default params.
An implementation of Hybrid Metric Topological SLAM (HMT-SLAM).
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini"-like file or memory-stored string list.
double p_obs_given_exists
This class allows loading and storing values and vectors of different types from a configuration text...
This namespace contains representation of robot actions and observations.
string iniFile(myDataDir+string("benchmark-options.ini"))
Declares a class for storing a "sensory frame", a set of "observations" taken by the robot approximat...
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form, sending it to a std::ostream.
mrpt::hmtslam::CHMTSLAM::TOptions m_options
The virtual base class for Topological Loop-closure Detectors; used in HMT-SLAM.
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
#define LOADABLEOPTS_DUMP_VAR(variableName, variableType)
Macro for dumping a variable to a stream, within the method "dumpToTextStream(out)" (Variable types a...
~CTopLCDetector_FabMap() override
Destructor.
#define MRPT_LOAD_CONFIG_VAR( variableName, variableType, configFileObject, sectionNameStr)
An useful macro for loading variables stored in a INI-like file under a key with the same name that t...
int64_t THypothesisID
An integer number uniquely identifying each of the concurrent hypotheses for the robot topological pa...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Options for a TLC-detector of type FabMap, used from CHMTSLAM.
mrpt::vision::TStereoCalibResults out
#define THROW_EXCEPTION_FMT(_FORMAT_STRING,...)
mrpt::poses::CPose3DPDF::Ptr computeTopologicalObservationModel(const THypothesisID &hypID, const CHMHMapNode::Ptr ¤tArea, const CHMHMapNode::Ptr &refArea, double &out_log_lik) override
This method must compute the topological observation model.