36 class CLSLAMAlgorithmBase;
95 void dumpToConsole( )
const;
173 void clearInputQueue();
178 bool isInputQueueEmpty();
183 size_t inputQueueSize();
189 void pushAction(
const mrpt::obs::CActionCollectionPtr &acts );
195 void pushObservations(
const mrpt::obs::CSensoryFramePtr &sf );
201 void pushObservation(
const mrpt::obs::CObservationPtr &obs );
212 mrpt::utils::CSerializablePtr getNextObjectFromInputQueue();
232 void thread_LSLAM( );
238 void thread_3D_viewer( );
295 void registerLoopClosureDetector(
325 static TPoseID generatePoseID();
350 bool abortedDueToErrors();
362 void initializeEmptyMap();
385 void generateLogFiles(
unsigned int nIteration);
487 const mrpt::obs::CActionCollectionPtr &act,
488 const mrpt::obs::CSensoryFramePtr &sf ) = 0;
536 const mrpt::obs::CActionCollectionPtr &act,
537 const mrpt::obs::CSensoryFramePtr &sf );
540 void prediction_and_update_pfAuxiliaryPFOptimal(
547 void prediction_and_update_pfOptimalProposal(
567 void dumpToStdOut()
const;
573 void loadTPathBinFromPath(
580 int findTPathBinIntoSet(
582 std::deque<TPathBin> &theSet
587 static double particlesEvaluator_AuxPFOptimal(
592 const void *observation );
596 static double auxiliarComputeObservationLikelihood(
599 size_t particleIndexForMap,
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
This virtual class defines the interface that any particles based PDF class must implement in order t...
mrpt::utils::TNodeID TNodeID
The type of the IDs of nodes.
An implementation of Hybrid Metric Topological SLAM (HMT-SLAM).
utils::CMessageQueue m_LSLAM_queue
LSLAM thread input queue, messages of type CHMTSLAM::TMessageLSLAMfromAA.
static THypothesisID m_nextHypID
bool m_terminationFlag_LSLAM
Threads termination flags:
std::shared_ptr< TMessageLSLAMtoTBI > TMessageLSLAMtoTBIPtr
std::queue< mrpt::utils::CSerializablePtr > m_inputQueue
The queue of pending actions/observations supplied by the user waiting for being processed.
CHierarchicalMHMap m_map
The hiearchical, multi-hypothesis graph-based map.
static int64_t m_nextAreaLabel
bool m_terminateThreads
Termination flag for signaling all threads to terminate.
std::shared_ptr< TMessageLSLAMfromAA > TMessageLSLAMfromAAPtr
aligned_containers< THypothesisID, CLocalMetricHypothesis >::map_t m_LMHs
The list of LMHs at each instant.
synch::CCriticalSection m_map_cs
Critical section for accessing m_map.
mrpt::system::TThreadHandle m_hThread_3D_viewer
synch::CCriticalSection m_inputQueue_cs
Critical section for accessing m_inputQueue.
std::shared_ptr< TMessageLSLAMfromTBI > TMessageLSLAMfromTBIPtr
synch::CCriticalSection m_LMHs_cs
Critical section for accessing m_LMHs.
std::map< std::string, TLopLCDetectorFactory > m_registeredLCDetectors
bool m_terminationFlag_TBI
CLSLAMAlgorithmBase * m_LSLAM_method
An instance of a local SLAM method, to be applied to each LMH - initialized by "initializeEmptyMap" o...
bool m_terminationFlag_3D_viewer
CHMTSLAM(const CHMTSLAM &)
static TPoseID m_nextPoseID
synch::CCriticalSection m_topLCdets_cs
The critical section for accessing m_topLCdets.
std::deque< CTopLCDetectorBase * > m_topLCdets
The list of LC modules in operation - initialized by "initializeEmptyMap" or "loadState".
The most high level class for storing hybrid, multi-hypothesis maps in a graph-based model.
Implements a 2D local SLAM method based on a RBPF over an occupancy grid map.
bool m_insertNewRobotPose
For use within PF callback methods.
Virtual base for local SLAM methods, used in mrpt::slam::CHMTSLAM.
mrpt::utils::safe_ptr< CHMTSLAM > m_parent
virtual void processOneLMH(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollectionPtr &act, const mrpt::obs::CSensoryFramePtr &sf)=0
Main entry point from HMT-SLAM: process some actions & observations.
virtual void prediction_and_update_pfAuxiliaryPFOptimal(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options)=0
The PF algorithm implementation.
virtual ~CLSLAMAlgorithmBase()
Destructor.
virtual void prediction_and_update_pfOptimalProposal(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options)=0
The PF algorithm implementation.
CLSLAMAlgorithmBase(CHMTSLAM *parent)
Constructor.
This class is used in HMT-SLAM to represent each of the Local Metric Hypotheses (LMHs).
The virtual base class for Topological Loop-closure Detectors; used in HMT-SLAM.
A set of TMetricMapInitializer structures, passed to the constructor CMultiMetricMap::CMultiMetricMap...
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction.
Declares a class for storing a collection of robot actions.
Declares a class for storing a "sensory frame", a set of "observations" taken by the robot approximat...
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle.
Declares a class that represents a Probability Density function (PDF) of a 3D pose .
Declares a class that represents a Probability Density function (PDF) of a 3D(6D) pose .
Option set for KLD algorithm.
This class provides simple critical sections functionality.
This class allows loading and storing values and vectors of different types from a configuration text...
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
A class that contain generic messages, that can be sent and received from a "CClientTCPSocket" object...
The virtual base class which provides a unified interface for all persistent objects in MRPT.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
A thread-safe template queue for object passing between threads; for a template argument of T,...
GLsizei GLsizei GLuint * obj
GLuint const GLchar * name
GLsizei const GLchar ** string
GLsizei GLsizei GLchar * source
std::vector< std::string > vector_string
A type for passing a vector of strings.
std::vector< int32_t > vector_int
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
#define THROW_EXCEPTION(msg)
mrpt::aligned_containers< TPoseID, mrpt::poses::CPose3D >::map_t TMapPoseID2Pose3D
class HMTSLAM_IMPEXP CHMTSLAM
int64_t THypothesisID
An integer number uniquely identifying each of the concurrent hypotheses for the robot topological pa...
std::vector< TPoseID > TPoseIDList
class HMTSLAM_IMPEXP CLSLAM_RBPF_2DLASER
uint64_t TPoseID
An integer number uniquely identifying each robot pose stored in HMT-SLAM.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
std::map< TYPE1, TYPE2, std::less< TYPE1 >, Eigen::aligned_allocator< std::pair< const TYPE1, TYPE2 > > > map_t
The configuration of a particle filter.
std::vector< TPoseIDList > partitions
THypothesisID hypothesisID
The hypothesis ID (LMH) for these results.
mrpt::poses::CPose3DPDFSOG delta_new_cur
Depending on the loop-closure engine, an guess of the relative pose of "area_new" relative to "cur_ar...
double log_lik
Log likelihood for this loop-closure.
THypothesisID hypothesisID
The hypothesis ID (LMH) for these results.
std::map< CHMHMapNode::TNodeID, TBI_info > loopClosureData
The meat is here: only feasible loop closures from "cur_area" are included here, with associated data...
CHMHMapNode::TNodeID cur_area
The area for who the loop-closure has been computed.
TNodeIDList areaIDs
The areas to consider.
CLocalMetricHypothesis * LMH
The LMH.
A variety of options and configuration params (private, use loadOptions).
mrpt::math::CVectorFloat stds_Q_no_odo
A 3-length vector with the std.
CTopLCDetector_FabMap::TOptions TLC_fabmap_options
Options passed to this TLC constructor.
mrpt::slam::TKLDParams KLD_params
CTopLCDetector_GridMatching::TOptions TLC_grid_options
Options passed to this TLC constructor.
float VIEW3D_AREA_SPHERES_HEIGHT
[VIEW3D] The height of the areas' spheres.
int random_seed
0 means randomize, use any other value to have repetitive experiments.
int LOG_FREQUENCY
[LOGGING] One SLAM iteration out of "LOGGING_logFrequency", a log file will be generated.
mrpt::maps::TSetOfMetricMapInitializers defaultMapsInitializers
The default set of maps to be created in each particle.
TLSlamMethod SLAM_METHOD
[LSLAM] The method to use for local SLAM
mrpt::slam::CIncrementalMapPartitioner::TOptions AA_options
[AA] The options for the partitioning algorithm
bayes::CParticleFilter::TParticleFilterOptions pf_options
These params are used from every LMH object.
float VIEW3D_AREA_SPHERES_RADIUS
[VIEW3D] The radius of the areas' spheres.
vector_string TLC_detectors
A list of topological loop-closure detectors to use: can be one or more from this list: 'gridmaps': O...
float SLAM_MIN_DIST_BETWEEN_OBS
[LSLAM] Minimum distance (and heading) difference between observations inserted in the map.
float MIN_ODOMETRY_STD_XY
[LSLAM] Minimum uncertainty (1 sigma, meters) in x and y for odometry increments (Default=0)
float MIN_ODOMETRY_STD_PHI
[LSLAM] Minimum uncertainty (1 sigma, rads) in phi for odometry increments (Default=0)
std::string LOG_OUTPUT_DIR
[LOGGING] If it is not an empty string (""), a directory with that name will be created and log files...
Options for a TLC-detector of type FabMap, used from CHMTSLAM.
Options for a TLC-detector of type gridmap-matching, used from CHMTSLAM.
Configuration of the algorithm:
A wrapper class for pointers that can be safely copied with "=" operator without problems.