Main MRPT website > C++ reference for MRPT 1.5.7
List of all members | Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends
mrpt::hmtslam::CHMTSLAM Class Reference

Detailed Description

An implementation of Hybrid Metric Topological SLAM (HMT-SLAM).

The main entry points for a user are pushAction() and pushObservations(). Several parameters can be modified through m_options.

The mathematical models of this approach have been reported in:

More information in the wiki page: http://www.mrpt.org/HMT-SLAM . A complete working application can be found in "MRPT/apps/hmt-slam".

The complete state of the SLAM framework is serializable, so it can be saved and restore to/from a binary dump. This class implements mrpt::utils::CSerializable, so it can be saved with "stream << slam_object;" and restored with "stream >> slam_object;". Alternatively, the methods CHMTSLAM::saveState and CHMTSLAM::loadState can be invoked, which in turn call internally to the CSerializable interface.

See also
CHierarchicalMHMap

Definition at line 59 of file CHMTSLAM.h.

#include <mrpt/hmtslam/CHMTSLAM.h>

Inheritance diagram for mrpt::hmtslam::CHMTSLAM:
Inheritance graph

Classes

struct  TMessageLSLAMfromAA
 Message definition: More...
 
struct  TMessageLSLAMfromTBI
 Message definition: More...
 
struct  TMessageLSLAMtoTBI
 Message definition: More...
 
struct  TOptions
 A variety of options and configuration params (private, use loadOptions). More...
 

Public Member Functions

voidoperator new (size_t size)
 
voidoperator new[] (size_t size)
 
void operator delete (void *ptr) throw ()
 
void operator delete[] (void *ptr) throw ()
 
void operator delete (void *memory, void *ptr) throw ()
 
voidoperator new (size_t size, const std::nothrow_t &) throw ()
 
void operator delete (void *ptr, const std::nothrow_t &) throw ()
 
 CHMTSLAM ()
 Default constructor. More...
 
 CHMTSLAM (const CHMTSLAM &)
 
const CHMTSLAMoperator= (const CHMTSLAM &)
 
virtual ~CHMTSLAM ()
 Destructor. More...
 
bool abortedDueToErrors ()
 Return true if an exception has been caught in any thread leading to the end of the mapping application: no more actions/observations will be processed from now on. More...
 
void generateLogFiles (unsigned int nIteration)
 Called from LSLAM thread when log files must be created. More...
 
void getAs3DScene (mrpt::opengl::COpenGLScene &outScene)
 Gets a 3D representation of the current state of the whole mapping framework. More...
 
virtual mxArraywriteToMatlab () const
 Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class. More...
 
mrpt::utils::CObjectPtr duplicateGetSmartPtr () const
 Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). More...
 
CObjectclone () const
 Cloning interface for smart pointers. More...
 
High-level map management
void loadOptions (const std::string &configFile)
 Loads the options from a config file. More...
 
void loadOptions (const mrpt::utils::CConfigFileBase &cfgSource)
 Loads the options from a config source. More...
 
void initializeEmptyMap ()
 Initializes the whole HMT-SLAM framework, reseting to an empty map (It also clears the logs directory) - this must be called AFTER loading the options with CHMTSLAM::loadOptions. More...
 
bool saveState (mrpt::utils::CStream &out) const
 Save the state of the whole HMT-SLAM framework to some binary stream (e.g. More...
 
bool loadState (mrpt::utils::CStream &in)
 Load the state of the whole HMT-SLAM framework from some binary stream (e.g. More...
 

Static Public Member Functions

static voidoperator new (size_t size, void *ptr)
 

Public Attributes

The important data.
CHierarchicalMHMap m_map
 The hiearchical, multi-hypothesis graph-based map. More...
 
aligned_containers< THypothesisID, CLocalMetricHypothesis >::map_t m_LMHs
 The list of LMHs at each instant. More...
 

Static Public Attributes

static const mrpt::utils::TRuntimeClassId classCObject
 
RTTI stuff
static const mrpt::utils::TRuntimeClassId classCSerializable
 

Protected Member Functions

CSerializable virtual methods
void writeToStream (mrpt::utils::CStream &out, int *getVersion) const
 Introduces a pure virtual method responsible for writing to a CStream. More...
 
void readFromStream (mrpt::utils::CStream &in, int version)
 Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori. More...
 
HMT-SLAM sub-processes.
void LSLAM_process_message (const mrpt::utils::CMessage &msg)
 Auxiliary method within thread_LSLAM. More...
 
void LSLAM_process_message_from_AA (const TMessageLSLAMfromAA &myMsg)
 No critical section locks are assumed at the entrance of this method. More...
 
void LSLAM_process_message_from_TBI (const TMessageLSLAMfromTBI &myMsg)
 No critical section locks are assumed at the entrance of this method. More...
 
void perform_TLC (CLocalMetricHypothesis &LMH, const CHMHMapNode::TNodeID areaInLMH, const CHMHMapNode::TNodeID areaLoopClosure, const mrpt::poses::CPose3DPDFGaussian &pose1wrt2)
 Topological Loop Closure: Performs all the required operations to close a loop between two areas which have been determined to be the same. More...
 

Static Protected Member Functions

static TMessageLSLAMfromAAPtr areaAbstraction (CLocalMetricHypothesis *LMH, const TPoseIDList &newPoseIDs)
 The Area Abstraction (AA) method, invoked from LSLAM. More...
 
static TMessageLSLAMfromTBIPtr TBI_main_method (CLocalMetricHypothesis *LMH, const CHMHMapNode::TNodeID &areaID)
 The entry point for Topological Bayesian Inference (TBI) engines, invoked from LSLAM. More...
 
static std::string generateUniqueAreaLabel ()
 Generates a new and unique area textual label (currently this generates "0","1",...) More...
 
static TPoseID generatePoseID ()
 Generates a new and unique pose ID. More...
 
static THypothesisID generateHypothesisID ()
 Generates a new and unique hypothesis ID. More...
 

Protected Attributes

bool m_terminateThreads
 Termination flag for signaling all threads to terminate. More...
 
bool m_terminationFlag_LSLAM
 Threads termination flags: More...
 
bool m_terminationFlag_TBI
 
bool m_terminationFlag_3D_viewer
 
mrpt::hmtslam::CHMTSLAM::TOptions m_options
 
The different SLAM algorithms that can be invoked from the LSLAM thread.
CLSLAMAlgorithmBasem_LSLAM_method
 An instance of a local SLAM method, to be applied to each LMH - initialized by "initializeEmptyMap" or "loadState". More...
 

Static Protected Attributes

static int64_t m_nextAreaLabel = 0
 
static TPoseID m_nextPoseID = 0
 
static THypothesisID m_nextHypID = COMMON_TOPOLOG_HYP + 1
 

Friends

class CLocalMetricHypothesis
 
class CLSLAM_RBPF_2DLASER
 
class CTopLCDetector_GridMatching
 
class CTopLCDetector_FabMap
 

RTTI stuff

typedef CHMTSLAMPtr Ptr
 
typedef CHMTSLAMPtr ConstPtr
 
static mrpt::utils::CLASSINIT _init_CHMTSLAM
 
static mrpt::utils::TRuntimeClassId classCHMTSLAM
 
static const mrpt::utils::TRuntimeClassIdclassinfo
 
static const mrpt::utils::TRuntimeClassId_GetBaseClass ()
 
virtual const mrpt::utils::TRuntimeClassIdGetRuntimeClass () const
 Returns information about the class of an object in runtime. More...
 
virtual mrpt::utils::CObjectduplicate () const
 Returns a copy of the object, indepently of its class. More...
 
static mrpt::utils::CObjectCreateObject ()
 
static CHMTSLAMPtr Create ()
 

Inter-thread communication queues:

typedef stlplus::smart_ptr< TMessageLSLAMfromAATMessageLSLAMfromAAPtr
 
typedef stlplus::smart_ptr< TMessageLSLAMtoTBITMessageLSLAMtoTBIPtr
 
typedef stlplus::smart_ptr< TMessageLSLAMfromTBITMessageLSLAMfromTBIPtr
 
utils::CMessageQueue m_LSLAM_queue
 LSLAM thread input queue, messages of type CHMTSLAM::TMessageLSLAMfromAA. More...
 

Related to the input queue:

enum  TLSlamMethod { lsmRBPF_2DLASER = 1 }
 
std::queue< mrpt::utils::CSerializablePtr > m_inputQueue
 The queue of pending actions/observations supplied by the user waiting for being processed. More...
 
synch::CCriticalSection m_inputQueue_cs
 Critical section for accessing m_inputQueue. More...
 
synch::CCriticalSection m_map_cs
 Critical section for accessing m_map. More...
 
synch::CCriticalSection m_LMHs_cs
 Critical section for accessing m_LMHs. More...
 
void clearInputQueue ()
 Empty the input queue. More...
 
bool isInputQueueEmpty ()
 Returns true if the input queue is empty (Note that the queue must not be empty to the user to enqueue more actions/observaitions) More...
 
size_t inputQueueSize ()
 Returns the number of objects waiting for processing in the input queue. More...
 
void pushAction (const mrpt::obs::CActionCollectionPtr &acts)
 Here the user can enter an action into the system (will go to the SLAM process). More...
 
void pushObservations (const mrpt::obs::CSensoryFramePtr &sf)
 Here the user can enter observations into the system (will go to the SLAM process). More...
 
void pushObservation (const mrpt::obs::CObservationPtr &obs)
 Here the user can enter an observation into the system (will go to the SLAM process). More...
 
mrpt::utils::CSerializablePtr getNextObjectFromInputQueue ()
 Used from the LSLAM thread to retrieve the next object from the queue. More...
 

Threads stuff

mrpt::system::TThreadHandle m_hThread_LSLAM
 Threads handles. More...
 
mrpt::system::TThreadHandle m_hThread_TBI
 
mrpt::system::TThreadHandle m_hThread_3D_viewer
 
void thread_LSLAM ()
 The function for the "Local SLAM" thread. More...
 
void thread_TBI ()
 The function for the "TBI" thread. More...
 
void thread_3D_viewer ()
 The function for the "3D viewer" thread. More...
 

The different Loop-Closure modules that are to be executed in the TBI thread.

typedef CTopLCDetectorBase *(* TLopLCDetectorFactory) (CHMTSLAM *)
 
std::map< std::string, TLopLCDetectorFactorym_registeredLCDetectors
 
std::deque< CTopLCDetectorBase * > m_topLCdets
 The list of LC modules in operation - initialized by "initializeEmptyMap" or "loadState". More...
 
synch::CCriticalSection m_topLCdets_cs
 The critical section for accessing m_topLCdets. More...
 
void registerLoopClosureDetector (const std::string &name, CTopLCDetectorBase *(*ptrCreateObject)(CHMTSLAM *))
 Must be invoked before calling initializeEmptyMap, so LC objects can be created. More...
 
CTopLCDetectorBaseloopClosureDetector_factory (const std::string &name)
 The class factory for topological loop closure detectors. More...
 

Member Typedef Documentation

typedef CHMTSLAMPtr mrpt::hmtslam::CHMTSLAM::ConstPtr

Definition at line 67 of file CHMTSLAM.h.

typedef CHMTSLAMPtr mrpt::hmtslam::CHMTSLAM::Ptr

A typedef for the associated smart pointer

Definition at line 67 of file CHMTSLAM.h.

typedef CTopLCDetectorBase*(* mrpt::hmtslam::CHMTSLAM::TLopLCDetectorFactory) (CHMTSLAM *)
protected

Definition at line 283 of file CHMTSLAM.h.

Definition at line 97 of file CHMTSLAM.h.

Definition at line 141 of file CHMTSLAM.h.

Definition at line 109 of file CHMTSLAM.h.

Member Enumeration Documentation

Enumerator
lsmRBPF_2DLASER 

Definition at line 203 of file CHMTSLAM.h.

Constructor & Destructor Documentation

CHMTSLAM::CHMTSLAM ( )

Default constructor.

Parameters
debug_out_streamIf debug output messages should be redirected to any other stream apart from std::cout

Definition at line 58 of file CHMTSLAM_main.cpp.

References mrpt::system::createThreadFromObjectMethod().

mrpt::hmtslam::CHMTSLAM::CHMTSLAM ( const CHMTSLAM )
inline

Definition at line 341 of file CHMTSLAM.h.

References THROW_EXCEPTION.

CHMTSLAM::~CHMTSLAM ( )
virtual

Destructor.

Definition at line 95 of file CHMTSLAM_main.cpp.

References mrpt::mrpt::format(), mrpt::system::joinThread(), MRPT_LOG_DEBUG, and MRPT_LOG_WARN.

Member Function Documentation

static const mrpt::utils::TRuntimeClassId* mrpt::hmtslam::CHMTSLAM::_GetBaseClass ( )
staticprotected
bool CHMTSLAM::abortedDueToErrors ( )

Return true if an exception has been caught in any thread leading to the end of the mapping application: no more actions/observations will be processed from now on.

Definition at line 557 of file CHMTSLAM_main.cpp.

CHMTSLAM::TMessageLSLAMfromAAPtr CHMTSLAM::areaAbstraction ( CLocalMetricHypothesis LMH,
const TPoseIDList newPoseIDs 
)
staticprotected
void CHMTSLAM::clearInputQueue ( )

Empty the input queue.

Definition at line 163 of file CHMTSLAM_main.cpp.

CObject* mrpt::utils::CObject::clone ( ) const
inlineinherited

Cloning interface for smart pointers.

Definition at line 143 of file CObject.h.

static CHMTSLAMPtr mrpt::hmtslam::CHMTSLAM::Create ( )
static
static mrpt::utils::CObject* mrpt::hmtslam::CHMTSLAM::CreateObject ( )
static
virtual mrpt::utils::CObject* mrpt::hmtslam::CHMTSLAM::duplicate ( ) const
virtual

Returns a copy of the object, indepently of its class.

Implements mrpt::utils::CObject.

mrpt::utils::CObjectPtr mrpt::utils::CObject::duplicateGetSmartPtr ( ) const
inlineinherited

Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).

Definition at line 140 of file CObject.h.

Referenced by mrpt::obs::CRawlog::addActions(), mrpt::slam::CIncrementalMapPartitioner::addMapFrame(), and mrpt::obs::CRawlog::addObservations().

THypothesisID CHMTSLAM::generateHypothesisID ( )
staticprotected

Generates a new and unique hypothesis ID.

Definition at line 539 of file CHMTSLAM_main.cpp.

void CHMTSLAM::generateLogFiles ( unsigned int  nIteration)
TPoseID CHMTSLAM::generatePoseID ( )
staticprotected

Generates a new and unique pose ID.

Definition at line 531 of file CHMTSLAM_main.cpp.

Referenced by mrpt::hmtslam::CLSLAM_RBPF_2DLASER::processOneLMH().

std::string CHMTSLAM::generateUniqueAreaLabel ( )
staticprotected

Generates a new and unique area textual label (currently this generates "0","1",...)

Definition at line 523 of file CHMTSLAM_main.cpp.

References mrpt::format().

void CHMTSLAM::getAs3DScene ( mrpt::opengl::COpenGLScene outScene)

Gets a 3D representation of the current state of the whole mapping framework.

Definition at line 548 of file CHMTSLAM_main.cpp.

References MRPT_UNUSED_PARAM.

CSerializablePtr CHMTSLAM::getNextObjectFromInputQueue ( )
protected

Used from the LSLAM thread to retrieve the next object from the queue.

Returns
The object, or NULL if empty.

Definition at line 393 of file CHMTSLAM_main.cpp.

Referenced by thread_LSLAM().

virtual const mrpt::utils::TRuntimeClassId* mrpt::hmtslam::CHMTSLAM::GetRuntimeClass ( ) const
virtual

Returns information about the class of an object in runtime.

Reimplemented from mrpt::utils::CSerializable.

void CHMTSLAM::initializeEmptyMap ( )
size_t CHMTSLAM::inputQueueSize ( )

Returns the number of objects waiting for processing in the input queue.

See also
pushAction,pushObservations, isInputQueueEmpty

Definition at line 380 of file CHMTSLAM_main.cpp.

bool CHMTSLAM::isInputQueueEmpty ( )

Returns true if the input queue is empty (Note that the queue must not be empty to the user to enqueue more actions/observaitions)

See also
pushAction,pushObservations, inputQueueSize

Definition at line 366 of file CHMTSLAM_main.cpp.

Referenced by thread_LSLAM().

void CHMTSLAM::loadOptions ( const std::string configFile)

Loads the options from a config file.

Definition at line 260 of file CHMTSLAM_main.cpp.

References ASSERT_, and mrpt::system::fileExists().

void CHMTSLAM::loadOptions ( const mrpt::utils::CConfigFileBase cfgSource)

Loads the options from a config source.

Definition at line 238 of file CHMTSLAM_main.cpp.

bool CHMTSLAM::loadState ( mrpt::utils::CStream in)

Load the state of the whole HMT-SLAM framework from some binary stream (e.g.

a file).

Returns
true if everything goes OK.
See also
saveState

Definition at line 609 of file CHMTSLAM_main.cpp.

CTopLCDetectorBase * CHMTSLAM::loopClosureDetector_factory ( const std::string name)

The class factory for topological loop closure detectors.

Possible values are enumerated in TOptions::TLC_detectors

Exceptions
std::exceptionOn unknown name.

Definition at line 578 of file CHMTSLAM_main.cpp.

References MRPT_END, MRPT_START, and THROW_EXCEPTION_FMT.

void CHMTSLAM::LSLAM_process_message ( const mrpt::utils::CMessage msg)
protected

Auxiliary method within thread_LSLAM.

Definition at line 249 of file CHMTSLAM_LSLAM.cpp.

References MRPT_END, MRPT_START, and MRPT_UNUSED_PARAM.

Referenced by thread_LSLAM().

void CHMTSLAM::LSLAM_process_message_from_AA ( const TMessageLSLAMfromAA myMsg)
protected

No critical section locks are assumed at the entrance of this method.

Definition at line 278 of file CHMTSLAM_LSLAM.cpp.

References ARC_ANNOTATION_DELTA, ARC_ANNOTATION_DELTA_SRC_POSEID, ARC_ANNOTATION_DELTA_TRG_POSEID, AREAID_INVALID, ASSERT_, begin(), mrpt::poses::CPose3DPDFGaussian::copyFrom(), mrpt::poses::CPose3DPDFGaussian::cov, mrpt::opengl::CSetOfObjects::Create(), DEG2RAD, mrpt::poses::CPose3D::distanceEuclidean6D(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distanceTo(), mrpt::opengl::COpenGLScene::enableFollowCamera(), mrpt::utils::erase_return_next(), mrpt::utils::list_searchable< T >::find(), mrpt::format(), mrpt::poses::CPose3DPDFGaussian::getMean(), mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAA::hypothesisID, mrpt::utils::list_searchable< T >::insert(), mrpt::opengl::COpenGLScene::insert(), mrpt::obs::CSensoryFrame::insert(), mrpt::obs::CSensoryFrame::insertObservationsInto(), int(), mrpt::poses::CPose3DPDFGaussian::inverse(), mrpt::bayes::CParticleFilterData< T >::m_particles, mrpt::poses::CPose3DPDFGaussian::mean, MRPT_END, MRPT_LOG_DEBUG_STREAM, MRPT_START, NODE_ANNOTATION_METRIC_MAPS, NODE_ANNOTATION_POSES_GRAPH, NODE_ANNOTATION_REF_POSEID, mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAA::partitions, mrpt::hmtslam::TPoseInfo::pdf, POSEID_INVALID, RAD2DEG, mrpt::utils::CStringList::saveToFile(), mrpt::hmtslam::TPoseInfo::sf, mrpt::math::square(), mrpt::utils::CTicTac::Tac(), THROW_EXCEPTION, THROW_EXCEPTION_FMT, mrpt::utils::CTicTac::Tic(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y(), and mrpt::poses::CPose3D::yaw().

Referenced by thread_LSLAM().

void CHMTSLAM::LSLAM_process_message_from_TBI ( const TMessageLSLAMfromTBI myMsg)
protected
void mrpt::hmtslam::CHMTSLAM::operator delete ( void ptr)
throw (
)
inline

Definition at line 67 of file CHMTSLAM.h.

void mrpt::hmtslam::CHMTSLAM::operator delete ( void memory,
void ptr 
)
throw (
)
inline

Definition at line 67 of file CHMTSLAM.h.

void mrpt::hmtslam::CHMTSLAM::operator delete ( void ptr,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 67 of file CHMTSLAM.h.

void mrpt::hmtslam::CHMTSLAM::operator delete[] ( void ptr)
throw (
)
inline

Definition at line 67 of file CHMTSLAM.h.

void* mrpt::hmtslam::CHMTSLAM::operator new ( size_t  size,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 67 of file CHMTSLAM.h.

static void* mrpt::hmtslam::CHMTSLAM::operator new ( size_t  size,
void ptr 
)
inlinestatic

Definition at line 67 of file CHMTSLAM.h.

void* mrpt::hmtslam::CHMTSLAM::operator new ( size_t  size)
inline

Definition at line 67 of file CHMTSLAM.h.

void* mrpt::hmtslam::CHMTSLAM::operator new[] ( size_t  size)
inline

Definition at line 67 of file CHMTSLAM.h.

const CHMTSLAM& mrpt::hmtslam::CHMTSLAM::operator= ( const CHMTSLAM )
inline

Definition at line 342 of file CHMTSLAM.h.

References THROW_EXCEPTION.

void CHMTSLAM::perform_TLC ( CLocalMetricHypothesis LMH,
const CHMHMapNode::TNodeID  areaInLMH,
const CHMHMapNode::TNodeID  areaLoopClosure,
const mrpt::poses::CPose3DPDFGaussian pose1wrt2 
)
protected
void CHMTSLAM::pushAction ( const mrpt::obs::CActionCollectionPtr &  acts)

Here the user can enter an action into the system (will go to the SLAM process).

This class will delete the passed object when required, so DO NOT DELETE the passed object after calling this.

See also
pushObservations,pushObservation

Definition at line 181 of file CHMTSLAM_main.cpp.

void CHMTSLAM::pushObservation ( const mrpt::obs::CObservationPtr &  obs)

Here the user can enter an observation into the system (will go to the SLAM process).

This class will delete the passed object when required, so DO NOT DELETE the passed object after calling this.

See also
pushAction,pushObservation

Definition at line 217 of file CHMTSLAM_main.cpp.

References mrpt::obs::CSensoryFrame::Create().

void CHMTSLAM::pushObservations ( const mrpt::obs::CSensoryFramePtr &  sf)

Here the user can enter observations into the system (will go to the SLAM process).

This class will delete the passed object when required, so DO NOT DELETE the passed object after calling this.

See also
pushAction,pushObservation

Definition at line 199 of file CHMTSLAM_main.cpp.

void CHMTSLAM::readFromStream ( mrpt::utils::CStream in,
int  version 
)
protectedvirtual

Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.

Parameters
inThe input binary stream where the object data must read from.
versionThe version of the object stored in the stream: use this version number in your code to know how to read the incoming data.
Exceptions
std::exceptionOn any error, see CStream::ReadBuffer
See also
CStream

Implements mrpt::utils::CSerializable.

Definition at line 625 of file CHMTSLAM_main.cpp.

References MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION.

void CHMTSLAM::registerLoopClosureDetector ( const std::string name,
CTopLCDetectorBase *(*)(CHMTSLAM *)  ptrCreateObject 
)

Must be invoked before calling initializeEmptyMap, so LC objects can be created.

Definition at line 567 of file CHMTSLAM_main.cpp.

bool CHMTSLAM::saveState ( mrpt::utils::CStream out) const

Save the state of the whole HMT-SLAM framework to some binary stream (e.g.

a file).

Returns
true if everything goes OK.
See also
loadState

Definition at line 593 of file CHMTSLAM_main.cpp.

Referenced by mrpt::hmtslam::CTopLCDetector_GridMatching::computeTopologicalObservationModel().

CHMTSLAM::TMessageLSLAMfromTBIPtr CHMTSLAM::TBI_main_method ( CLocalMetricHypothesis LMH,
const CHMHMapNode::TNodeID areaID 
)
staticprotected

The entry point for Topological Bayesian Inference (TBI) engines, invoked from LSLAM.

Parameters
LMH(IN) The LMH which to this query applies.
areaID(IN) The area ID to consider for potential loop-closures.
Note
The critical section for LMH must be locked BEFORE calling this method (it does NOT lock any critical section).

Definition at line 104 of file CHMTSLAM_TBI.cpp.

References ASSERT_, mrpt::poses::CPose3DPDFSOG::clear(), mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::TBI_info::delta_new_cur, IS_CLASS, mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::TBI_info::log_lik, mrpt::hmtslam::CLocalMetricHypothesis::m_ID, mrpt::hmtslam::CLocalMetricHypothesis::m_neighbors, mrpt::hmtslam::CLocalMetricHypothesis::m_parent, MRPT_END, MRPT_START, and mrpt::hmtslam::CLocalMetricHypothesis::updateAreaFromLMH().

void CHMTSLAM::thread_3D_viewer ( )
protected
void CHMTSLAM::thread_LSLAM ( )
protected
void CHMTSLAM::thread_TBI ( )
protected
virtual mxArray* mrpt::utils::CSerializable::writeToMatlab ( ) const
inlinevirtualinherited

Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class.

Returns
A new mxArray (caller is responsible of memory freeing) or NULL is class does not support conversion to MATLAB.

Definition at line 79 of file CSerializable.h.

References BASE_IMPEXP, DEFINE_MRPT_OBJECT_POST, mrpt::utils::ObjectToOctetVector(), mrpt::utils::ObjectToRawString(), mrpt::utils::ObjectToString(), mrpt::utils::OctetVectorToObject(), mrpt::utils::RawStringToObject(), and mrpt::utils::StringToObject().

Referenced by mrpt::poses::operator<<(), mrpt::utils::TCamera::readFromStream(), mrpt::obs::CObservationImage::readFromStream(), mrpt::obs::CObservationStereoImages::readFromStream(), mrpt::obs::CObservation2DRangeScan::readFromStream(), and mrpt::utils::CImage::readFromStream().

void CHMTSLAM::writeToStream ( mrpt::utils::CStream out,
int getVersion 
) const
protectedvirtual

Introduces a pure virtual method responsible for writing to a CStream.

This can not be used directly be users, instead use "stream << object;" for writing it to a stream.

Parameters
outThe output binary stream where object must be dumped.
getVersionIf NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data.
Exceptions
std::exceptionOn any error, see CStream::WriteBuffer
See also
CStream

Implements mrpt::utils::CSerializable.

Definition at line 667 of file CHMTSLAM_main.cpp.

Friends And Related Function Documentation

friend class CLocalMetricHypothesis
friend

Definition at line 61 of file CHMTSLAM.h.

friend class CLSLAM_RBPF_2DLASER
friend

Definition at line 62 of file CHMTSLAM.h.

friend class CTopLCDetector_FabMap
friend

Definition at line 64 of file CHMTSLAM.h.

friend class CTopLCDetector_GridMatching
friend

Definition at line 63 of file CHMTSLAM.h.

Member Data Documentation

mrpt::utils::CLASSINIT mrpt::hmtslam::CHMTSLAM::_init_CHMTSLAM
staticprotected

Definition at line 67 of file CHMTSLAM.h.

mrpt::utils::TRuntimeClassId mrpt::hmtslam::CHMTSLAM::classCHMTSLAM
static

Definition at line 67 of file CHMTSLAM.h.

const mrpt::utils::TRuntimeClassId mrpt::utils::CObject::classCObject
staticinherited

Definition at line 128 of file CObject.h.

const mrpt::utils::TRuntimeClassId mrpt::utils::CSerializable::classCSerializable
staticinherited

Definition at line 42 of file CSerializable.h.

const mrpt::utils::TRuntimeClassId* mrpt::hmtslam::CHMTSLAM::classinfo
static

Definition at line 67 of file CHMTSLAM.h.

mrpt::system::TThreadHandle mrpt::hmtslam::CHMTSLAM::m_hThread_3D_viewer
protected

Definition at line 240 of file CHMTSLAM.h.

mrpt::system::TThreadHandle mrpt::hmtslam::CHMTSLAM::m_hThread_LSLAM
protected

Threads handles.

Definition at line 240 of file CHMTSLAM.h.

mrpt::system::TThreadHandle mrpt::hmtslam::CHMTSLAM::m_hThread_TBI
protected

Definition at line 240 of file CHMTSLAM.h.

std::queue<mrpt::utils::CSerializablePtr> mrpt::hmtslam::CHMTSLAM::m_inputQueue
protected

The queue of pending actions/observations supplied by the user waiting for being processed.

Definition at line 215 of file CHMTSLAM.h.

synch::CCriticalSection mrpt::hmtslam::CHMTSLAM::m_inputQueue_cs
protected

Critical section for accessing m_inputQueue.

Definition at line 218 of file CHMTSLAM.h.

aligned_containers<THypothesisID, CLocalMetricHypothesis>::map_t mrpt::hmtslam::CHMTSLAM::m_LMHs

The list of LMHs at each instant.

Definition at line 380 of file CHMTSLAM.h.

Referenced by thread_LSLAM().

synch::CCriticalSection mrpt::hmtslam::CHMTSLAM::m_LMHs_cs
protected

Critical section for accessing m_LMHs.

Definition at line 223 of file CHMTSLAM.h.

Referenced by thread_LSLAM().

CLSLAMAlgorithmBase* mrpt::hmtslam::CHMTSLAM::m_LSLAM_method
protected

An instance of a local SLAM method, to be applied to each LMH - initialized by "initializeEmptyMap" or "loadState".

Definition at line 275 of file CHMTSLAM.h.

Referenced by thread_LSLAM().

utils::CMessageQueue mrpt::hmtslam::CHMTSLAM::m_LSLAM_queue
protected

LSLAM thread input queue, messages of type CHMTSLAM::TMessageLSLAMfromAA.

Definition at line 144 of file CHMTSLAM.h.

Referenced by thread_LSLAM().

CHierarchicalMHMap mrpt::hmtslam::CHMTSLAM::m_map

The hiearchical, multi-hypothesis graph-based map.

Definition at line 379 of file CHMTSLAM.h.

synch::CCriticalSection mrpt::hmtslam::CHMTSLAM::m_map_cs
protected

Critical section for accessing m_map.

Definition at line 221 of file CHMTSLAM.h.

int64_t CHMTSLAM::m_nextAreaLabel = 0
staticprotected

Definition at line 330 of file CHMTSLAM.h.

THypothesisID CHMTSLAM::m_nextHypID = COMMON_TOPOLOG_HYP + 1
staticprotected

Definition at line 332 of file CHMTSLAM.h.

TPoseID CHMTSLAM::m_nextPoseID = 0
staticprotected

Definition at line 331 of file CHMTSLAM.h.

mrpt::hmtslam::CHMTSLAM::TOptions mrpt::hmtslam::CHMTSLAM::m_options
protected
std::map<std::string,TLopLCDetectorFactory> mrpt::hmtslam::CHMTSLAM::m_registeredLCDetectors
protected

Definition at line 285 of file CHMTSLAM.h.

bool mrpt::hmtslam::CHMTSLAM::m_terminateThreads
protected

Termination flag for signaling all threads to terminate.

Definition at line 313 of file CHMTSLAM.h.

Referenced by thread_3D_viewer(), thread_LSLAM(), and thread_TBI().

bool mrpt::hmtslam::CHMTSLAM::m_terminationFlag_3D_viewer
protected

Definition at line 317 of file CHMTSLAM.h.

Referenced by thread_3D_viewer().

bool mrpt::hmtslam::CHMTSLAM::m_terminationFlag_LSLAM
protected

Threads termination flags:

Definition at line 317 of file CHMTSLAM.h.

Referenced by thread_LSLAM().

bool mrpt::hmtslam::CHMTSLAM::m_terminationFlag_TBI
protected

Definition at line 317 of file CHMTSLAM.h.

Referenced by thread_TBI().

std::deque<CTopLCDetectorBase*> mrpt::hmtslam::CHMTSLAM::m_topLCdets
protected

The list of LC modules in operation - initialized by "initializeEmptyMap" or "loadState".

Definition at line 288 of file CHMTSLAM.h.

synch::CCriticalSection mrpt::hmtslam::CHMTSLAM::m_topLCdets_cs
protected

The critical section for accessing m_topLCdets.

Definition at line 291 of file CHMTSLAM.h.




Page generated by Doxygen 1.8.11 for MRPT 1.5.7 Git: 2190203 Tue May 15 02:01:15 2018 +0200 at miƩ may 16 12:40:16 CEST 2018