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 81 #ifdef HTMSLAM_HAS_FABMAP 83 vector<string> lstObsImages;
90 obsIm->image.getExternalStorageFileAbsolutePath(path);
91 lstObsImages.push_back(path);
95 if (lstObsImages.empty())
return;
97 cout <<
"[OnNewPose] Adding new pose: " << poseID
98 <<
" # of images: " << lstObsImages.size() << endl;
99 THE_FABMAP->hmtslam_addNewPose(poseID, lstObsImages);
109 : vocab_path(
"./vocab"),
110 vocabName(
"vocab_name"),
111 p_obs_given_exists(0.39),
112 p_at_new_place(0.99),
133 "\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.
void OnNewPose(const TPoseID &poseID, const mrpt::obs::CSensoryFrame *SF)
Hook method for being warned about the insertion of a new poses into the maps.
#define THROW_EXCEPTION(msg)
CTopLCDetector_FabMap::TOptions TLC_fabmap_options
Options passed to this TLC constructor.
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...
mrpt::poses::CPose3DPDF::Ptr computeTopologicalObservationModel(const THypothesisID &hypID, const CHMHMapNode::Ptr ¤tArea, const CHMHMapNode::Ptr &refArea, double &out_log_lik)
This method must compute the topological observation model.
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.
GLsizei const GLchar ** string
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...
#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.
std::string format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
T::Ptr getObservationByClass(const size_t &ith=0) const
Returns the i'th observation of a given class (or of a descendant class), or nullptr if there is no s...
#define THROW_EXCEPTION_FMT(_FORMAT_STRING,...)
virtual ~CTopLCDetector_FabMap()
Destructor.
#define MRPT_UNUSED_PARAM(a)
Determines whether this is an X86 or AMD64 platform.