10#ifndef CINCREMENTALMAPPARTITIONER_H
11#define CINCREMENTALMAPPARTITIONER_H
134 template <
class MATRIX>
144 return &m_individualFrames;
151 return &m_individualFrames;
169 const std::map< uint32_t, int64_t > *renameIndexes = NULL
#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 class stores a sequence of <Probabilistic Pose,SensoryFrame> pairs, thus a "metric map" can be t...
This class is a "CSerializable" wrapper for "CMatrixTemplateNumeric<double>".
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).
Declares a class that represents a Probability Density Function (PDF) of a 3D pose (6D actually).
This class can be used to make partitions on a map/graph build from observations taken at some poses/...
std::vector< uint8_t > m_modified_nodes
The list of keyframes to consider in the next update.
void changeCoordinatesOriginPoseIndex(const unsigned &newOriginPose)
Change the coordinate origin of all stored poses, for consistency with future new poses to enter in t...
void markAllNodesForReconsideration()
Mark all nodes for reconsideration in the next call to "updatePartitions", instead of considering jus...
unsigned int addMapFrame(const mrpt::obs::CSensoryFramePtr &frame, const mrpt::poses::CPose3DPDFPtr &robotPose3D)
Add a new frame to the current graph: call this method each time a new observation is added to the ma...
std::deque< mrpt::maps::CMultiMetricMap > m_individualMaps
void changeCoordinatesOrigin(const mrpt::poses::CPose3D &newOrigin)
Change the coordinate origin of all stored poses, for consistency with future new poses to enter in t...
const mrpt::math::CMatrixDouble & getAdjacencyMatrix() const
Returns a const ref to the internal adjacency matrix.
mrpt::math::CMatrixD m_A
Adjacency matrix.
void removeSetOfNodes(vector_uint indexesToRemove, bool changeCoordsRef=true)
Remove the stated nodes (0-based indexes) from the internal lists.
mrpt::maps::CSimpleMap * getSequenceOfFrames()
Access to the sequence of Sensory Frames.
void getAdjacencyMatrix(MATRIX &outMatrix) const
Returns a copy of the internal adjacency matrix.
mrpt::maps::CSimpleMap m_individualFrames
const mrpt::maps::CSimpleMap * getSequenceOfFrames() const
Read-only access to the sequence of Sensory Frames.
unsigned int addMapFrame(const mrpt::obs::CSensoryFramePtr &frame, const mrpt::poses::CPosePDFPtr &robotPose2D)
Add a new frame to the current graph: call this method each time a new observation is added to the ma...
std::vector< vector_uint > m_last_partition
The last partition.
void clear()
Initialization: Start of a new map, new internal matrices,...
void getAs3DScene(mrpt::opengl::CSetOfObjectsPtr &objs, const std::map< uint32_t, int64_t > *renameIndexes=NULL) const
Returns a 3D representation of the current state: poses & links between them.
bool m_last_last_partition_are_new_ones
This will be true after adding new observations, and before an "updatePartitions" is invoked.
void updatePartitions(std::vector< vector_uint > &partitions)
This method executed only the neccesary part of the partition to take into account the lastest added ...
unsigned int getNodesCount()
It returns the nodes count currently in the internal map/graph.
virtual ~CIncrementalMapPartitioner()
Destructor:
CIncrementalMapPartitioner()
Constructor:
unsigned int addMapFrame(const mrpt::obs::CSensoryFrame &frame, const mrpt::poses::CPose3DPDF &robotPose3D)
Add a new frame to the current graph: call this method each time a new observation is added to the ma...
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...
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
std::vector< uint32_t > vector_uint
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
struct OBS_IMPEXP CSensoryFramePtr
struct OPENGL_IMPEXP CSetOfObjectsPtr
struct BASE_IMPEXP CPose3DPDFPtr
struct BASE_IMPEXP CPosePDFPtr
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Configuration of the algorithm:
void dumpToTextStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
This method should clearly display all the contents of the structure in textual form,...
float partitionThreshold
The partition threshold for bisection in range [0,2], default=1.0.
int minimumNumberElementsEachCluster
If a partition leads to a cluster with less elements than this, it will be rejected even if had a goo...
float gridResolution
For the occupancy grid maps of each node, default=0.10.
bool useMapMatching
If set to true (default), adjacency matrix is computed from maps matching; otherwise,...
float minMahaDistForCorrespondence
Used in the computation of weights, default=2.0.
TOptions()
Sets default values at object creation.
void loadFromConfigFile(const mrpt::utils::CConfigFileBase &source, const std::string §ion) MRPT_OVERRIDE
This method load the options from a ".ini"-like file or memory-stored string list.
bool forceBisectionOnly
If set to true (default), 1 or 2 clusters will be returned.
float minDistForCorrespondence
Used in the computation of weights, default=0.20.