48 }
while (m_parent->getNodeByID(m_ID));
55 CHMHMapNode::~CHMHMapNode()
58 if (m_parent.get()) m_parent->onNodeDestruction(
this);
62 (*it)->onNodeDestruction(
this);
65 uint8_t CHMHMapNode::serializeGetVersion()
const {
return 0; }
68 out << m_ID << m_label;
74 void CHMHMapNode::serializeFrom(
81 in >> m_ID >> m_label >> m_nodeType >> m_annotations >>
107 if (it != m_arcs.end()) m_arcs.erase(it);
121 if (arc->m_nodeFrom == m_ID || arc->m_nodeTo == m_ID)
125 if (it == m_arcs.end()) m_arcs.push_back(arc);
137 unsigned int CHMHMapNode::getLevelInTheHierarchy()
140 unsigned int level = 0;
142 for (itArc = m_arcs.begin(); itArc != m_arcs.end(); itArc++)
146 if ((*itArc)->m_arcType ==
"Membership" &&
147 (*itArc)->m_nodeTo == this->m_ID)
149 unsigned int L = m_parent->getNodeByID((*itArc)->m_nodeFrom)
150 ->getLevelInTheHierarchy();
161 unsigned int CHMHMapNode::getRelatedArcsCount()
163 return (
unsigned int)m_arcs.size();
173 if ((*it)->m_hypotheses.has(hyp_id)) out.push_back(*it);
179 void CHMHMapNode::getArcs(
183 for (
const auto&
a : m_arcs)
184 if (
a->m_hypotheses.has(hyp_id) &&
a->m_arcType == arcType)
191 bool CHMHMapNode::isNeighbor(
195 if ((*it)->m_hypotheses.has(hyp_id) &&
196 ((*it)->m_nodeFrom == otherArea || (*it)->m_nodeTo == otherArea))
mrpt::graphs::TNodeID TNodeID
The type of the IDs of nodes.
Classes related to the implementation of Hybrid Metric Topological (HMT) SLAM.
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
This must be inserted in all CSerializable classes implementation files.
CHMHMapNode::TNodeID m_nodeTo
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
CHMHMapNode::TNodeID m_nodeFrom
The origin/target nodes for this arc.
A set of hypothesis IDs, used for arcs and nodes in multi-hypothesis hybrid maps. ...
int64_t THypothesisID
An integer number uniquely identifying each of the concurrent hypotheses for the robot topological pa...
Virtual base class for "archives": classes abstracting I/O streams.
The most high level class for storing hybrid, multi-hypothesis maps in a graph-based model...
#define DEFAULT_NODE_TYPE
#define NODE_TYPES
Used in constructor of mrpt::hmtslam::CHMHMapNode.
A class for representing an arc between two nodes in a hierarchical, multi-hypothesis map...
GLubyte GLubyte GLubyte a
const Scalar * const_iterator
A class for storing a sequence of arcs (a path).
A class for representing a node in a hierarchical, multi-hypothesis map.