9 #ifndef CLocalMetricHypothesis_H
10 #define CLocalMetricHypothesis_H
28 struct CSetOfObjectsPtr;
32 class CPose3DPDFParticles;
55 metricMaps( mapsInitializers ),
88 CLocalMetricHypothesis(
CHMTSLAM * parent = NULL );
92 ~CLocalMetricHypothesis();
94 synch::CCriticalSection m_lock;
106 std::vector<
std::map<TPoseID,
double> > m_log_w_metric_history;
110 bool m_accumRobotMovementIsValid;
119 unsigned int pose2idx(
const TPoseID &
id)
const;
127 void getAs3DScene( mrpt::opengl::CSetOfObjectsPtr &objs )
const;
132 void getMeans( std::map< TPoseID, CPose3D > &outList )
const;
137 void getPathParticles( std::map< TPoseID, CPose3DPDFParticles > &outList )
const;
147 void getRelativePose(
158 void changeCoordinateOrigin(
const TPoseID &newOrigin );
161 void rebuildMetricMaps();
168 void clearRobotPoses();
171 const CPose3D * getCurrentPose(
const size_t &particleIdx)
const;
174 CPose3D * getCurrentPose(
const size_t &particleIdx);
194 void updateAreaFromLMH(
196 bool eraseSFsFromLMH =
false );
207 void prediction_and_update_pfAuxiliaryPFOptimal(
213 void prediction_and_update_pfOptimalProposal(
227 mutable std::vector<double> m_maxLikelihood;
231 mutable std::vector<CPose2D,Eigen::aligned_allocator<CPose2D> > m_movementDraws;
235 mutable unsigned int m_movementDrawsIdx;
This class provides simple critical sections functionality.
Implements a 2D local SLAM method based on a RBPF over an occupancy grid map.
This class stores any customizable set of metric maps.
The virtual base class which provides a unified interface for all persistent objects in MRPT...
uint64_t TNodeID
The type for node IDs in graphs of different types.
uint64_t TPoseID
An integer number uniquely identifying each robot pose stored in HMT-SLAM.
An implementation of Hybrid Metric Topological SLAM (HMT-SLAM).
This namespace contains algorithms for SLAM, localization, map building, representation of robot's ac...
std::map< TPoseID, CPose3D > robotPoses
virtual ~CLSLAMParticleData()
Declares a class for storing a collection of robot actions.
int64_t THypothesisID
An integer number uniquely identifying each of the concurrent hypotheses for the robot topological pa...
A class for storing a list of text lines.
#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 class is used in HMT-SLAM to represent each of the Local Metric Hypotheses (LMHs).
This template class declares the array of particles and its internal data, managing some memory-relat...
std::map< uint32_t, TPoseID > idx2pose
For the poses in "partitioner".
std::vector< TPoseID > TPoseIDList
Auxiliary class used in mrpt::slam::CLocalMetricHypothesis for HMT-SLAM; this class keeps the data re...
CIncrementalMapPartitioner partitioner
CMultiMetricMap metricMaps
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
Represents a probabilistic 2D movement of the robot mobile base.
This class can be used to make partitions on a map/graph build from observations taken at some poses/...
std::deque< CParticleData > CParticleList
Use this type to refer to the list of particles m_particles.
A set of TMetricMapInitializer structures, passed to the constructor CMultiMetricMap::CMultiMetricMap...
Declares a class for storing a "sensory frame", a set of "observations" taken by the robot approximat...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
The configuration of a particle filter.
std::set< CHMHMapNode::TNodeID > TNodeIDSet
dynamic_vector< double > CVectorDouble
Column vector, like Eigen::MatrixXd, but automatically initialized to zeros since construction...
synch::CCriticalSection lock
CS to access the entire struct.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
A class for representing a node in a hierarchical, multi-hypothesis map.
mrpt::aligned_containers< CPose2D >::vector_t StdVector_CPose2D
Eigen aligment-compatible container.
A wrapper class for pointers that can be safely copied with "=" operator without problems.
Declares a class that represents a Probability Density function (PDF) of a 3D pose.
A curiously recurring template pattern (CRTP) approach to providing the basic functionality of any CP...
mrpt::utils::TNodeID TNodeID
The type of the IDs of nodes.