Files
rtabmap/api/latest/classrtabmap_1_1Signature.html
T

2006 lines
109 KiB
HTML

<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTAB-Map: rtabmap::Signature Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
<script type="text/javascript" src="../versions.js"></script>
<script type="text/javascript" src="version-switcher.js"></script>
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">RTAB-Map<span id="projectnumber">&#160;0.23.13</span>
</div>
<div id="projectbrief">Real-Time Appearance-Based Mapping</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classrtabmap_1_1Signature.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classrtabmap_1_1Signature-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">rtabmap::Signature Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Represents a node in RTAB-Map's pose graph.
<a href="classrtabmap_1_1Signature.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Signature_8h_source.html">Signature.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8e079b11910a45639a792158c40693ad" id="r_a8e079b11910a45639a792158c40693ad"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a8e079b11910a45639a792158c40693ad">Signature</a> ()</td></tr>
<tr class="memdesc:a8e079b11910a45639a792158c40693ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:a8e079b11910a45639a792158c40693ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3367bba5b890341238d93e642f847a7" id="r_aa3367bba5b890341238d93e642f847a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#aa3367bba5b890341238d93e642f847a7">Signature</a> (int <a class="el" href="classrtabmap_1_1Signature.html#a31c6e7b7e720eca20fb5935e0ee1d9f9">id</a>, int <a class="el" href="classrtabmap_1_1Signature.html#ac6a75872fb4cb64bd088794df6e897bb">mapId</a>=-1, int weight=0, double stamp=0.0, const std::string &amp;label=std::string(), const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;pose=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;groundTruthPose=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;<a class="el" href="classrtabmap_1_1Signature.html#a24c257c2ff3fe156910ac82c41de8738">sensorData</a>=<a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a>())</td></tr>
<tr class="memdesc:aa3367bba5b890341238d93e642f847a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with explicit parameters. <br /></td></tr>
<tr class="separator:aa3367bba5b890341238d93e642f847a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af106b6a37909c236e22f5cac6150ce62" id="r_af106b6a37909c236e22f5cac6150ce62"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#af106b6a37909c236e22f5cac6150ce62">Signature</a> (const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;data)</td></tr>
<tr class="memdesc:af106b6a37909c236e22f5cac6150ce62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from sensor data. <br /></td></tr>
<tr class="separator:af106b6a37909c236e22f5cac6150ce62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67c41f31ff6fd72815190cc1bbba9569" id="r_a67c41f31ff6fd72815190cc1bbba9569"><td class="memItemLeft" align="right" valign="top"><a id="a67c41f31ff6fd72815190cc1bbba9569" name="a67c41f31ff6fd72815190cc1bbba9569"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><b>~Signature</b> ()</td></tr>
<tr class="memdesc:a67c41f31ff6fd72815190cc1bbba9569"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
<tr class="separator:a67c41f31ff6fd72815190cc1bbba9569"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe3b712a3c74599007b1974f592d82bd" id="r_abe3b712a3c74599007b1974f592d82bd"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#abe3b712a3c74599007b1974f592d82bd">compareTo</a> (const <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> &amp;signature) const</td></tr>
<tr class="memdesc:abe3b712a3c74599007b1974f592d82bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares this signature to another signature. <br /></td></tr>
<tr class="separator:abe3b712a3c74599007b1974f592d82bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a693874de0d6ede4fe5c5d43d6f4d8b55" id="r_a693874de0d6ede4fe5c5d43d6f4d8b55"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a693874de0d6ede4fe5c5d43d6f4d8b55">isBadSignature</a> () const</td></tr>
<tr class="memdesc:a693874de0d6ede4fe5c5d43d6f4d8b55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if this signature is considered "bad". <br /></td></tr>
<tr class="separator:a693874de0d6ede4fe5c5d43d6f4d8b55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31c6e7b7e720eca20fb5935e0ee1d9f9" id="r_a31c6e7b7e720eca20fb5935e0ee1d9f9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a31c6e7b7e720eca20fb5935e0ee1d9f9">id</a> () const</td></tr>
<tr class="memdesc:a31c6e7b7e720eca20fb5935e0ee1d9f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the signature ID. <br /></td></tr>
<tr class="separator:a31c6e7b7e720eca20fb5935e0ee1d9f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6a75872fb4cb64bd088794df6e897bb" id="r_ac6a75872fb4cb64bd088794df6e897bb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#ac6a75872fb4cb64bd088794df6e897bb">mapId</a> () const</td></tr>
<tr class="memdesc:ac6a75872fb4cb64bd088794df6e897bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the map ID. <br /></td></tr>
<tr class="separator:ac6a75872fb4cb64bd088794df6e897bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28cc9f0c8d553a24ef9e5227be1c99fe" id="r_a28cc9f0c8d553a24ef9e5227be1c99fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a28cc9f0c8d553a24ef9e5227be1c99fe">setWeight</a> (int weight)</td></tr>
<tr class="memdesc:a28cc9f0c8d553a24ef9e5227be1c99fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the weight/importance of this signature. <br /></td></tr>
<tr class="separator:a28cc9f0c8d553a24ef9e5227be1c99fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a701b32c562d789929a18a19c08bac4ca" id="r_a701b32c562d789929a18a19c08bac4ca"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a701b32c562d789929a18a19c08bac4ca">getWeight</a> () const</td></tr>
<tr class="memdesc:a701b32c562d789929a18a19c08bac4ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the weight/importance of this signature. <br /></td></tr>
<tr class="separator:a701b32c562d789929a18a19c08bac4ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6dc3ad065ae2fd29afbbe69429f3a7b" id="r_aa6dc3ad065ae2fd29afbbe69429f3a7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#aa6dc3ad065ae2fd29afbbe69429f3a7b">setLabel</a> (const std::string &amp;label)</td></tr>
<tr class="memdesc:aa6dc3ad065ae2fd29afbbe69429f3a7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a label/name for this signature. <br /></td></tr>
<tr class="separator:aa6dc3ad065ae2fd29afbbe69429f3a7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78a9ae9059257c60cf1d50ef415520cd" id="r_a78a9ae9059257c60cf1d50ef415520cd"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a78a9ae9059257c60cf1d50ef415520cd">getLabel</a> () const</td></tr>
<tr class="memdesc:a78a9ae9059257c60cf1d50ef415520cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the label/name of this signature. <br /></td></tr>
<tr class="separator:a78a9ae9059257c60cf1d50ef415520cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9c4ed8d3617b039181cf44a0e30eca2" id="r_aa9c4ed8d3617b039181cf44a0e30eca2"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#aa9c4ed8d3617b039181cf44a0e30eca2">getStamp</a> () const</td></tr>
<tr class="memdesc:aa9c4ed8d3617b039181cf44a0e30eca2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the timestamp of this signature. <br /></td></tr>
<tr class="separator:aa9c4ed8d3617b039181cf44a0e30eca2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8513c4ecb77c38b95610834c66e893e" id="r_aa8513c4ecb77c38b95610834c66e893e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#aa8513c4ecb77c38b95610834c66e893e">addLinks</a> (const std::list&lt; <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;links)</td></tr>
<tr class="memdesc:aa8513c4ecb77c38b95610834c66e893e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds multiple links from a list. <br /></td></tr>
<tr class="separator:aa8513c4ecb77c38b95610834c66e893e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af92465ad9cbfab36ffbc6d372781170c" id="r_af92465ad9cbfab36ffbc6d372781170c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#af92465ad9cbfab36ffbc6d372781170c">addLinks</a> (const std::map&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;links)</td></tr>
<tr class="memdesc:af92465ad9cbfab36ffbc6d372781170c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds multiple links from a map. <br /></td></tr>
<tr class="separator:af92465ad9cbfab36ffbc6d372781170c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bb2e6a8de8e615e51385c4113630f93" id="r_a3bb2e6a8de8e615e51385c4113630f93"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a3bb2e6a8de8e615e51385c4113630f93">addLink</a> (const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;link)</td></tr>
<tr class="memdesc:a3bb2e6a8de8e615e51385c4113630f93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a single link to this signature. <br /></td></tr>
<tr class="separator:a3bb2e6a8de8e615e51385c4113630f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad71fa7c0466dbb5c5062953043c3fcb0" id="r_ad71fa7c0466dbb5c5062953043c3fcb0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#ad71fa7c0466dbb5c5062953043c3fcb0">hasLink</a> (int idTo, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> type=<a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a>) const</td></tr>
<tr class="memdesc:ad71fa7c0466dbb5c5062953043c3fcb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if this signature has a link to a target signature. <br /></td></tr>
<tr class="separator:ad71fa7c0466dbb5c5062953043c3fcb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10d3bce2c3e4ec2de31aa5fa0c4b5934" id="r_a10d3bce2c3e4ec2de31aa5fa0c4b5934"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a10d3bce2c3e4ec2de31aa5fa0c4b5934">changeLinkIds</a> (int idFrom, int idTo)</td></tr>
<tr class="memdesc:a10d3bce2c3e4ec2de31aa5fa0c4b5934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes all link target IDs from one value to another. <br /></td></tr>
<tr class="separator:a10d3bce2c3e4ec2de31aa5fa0c4b5934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d3e01853af1365fce62dd460dea816f" id="r_a8d3e01853af1365fce62dd460dea816f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a8d3e01853af1365fce62dd460dea816f">removeLinks</a> (bool keepSelfReferringLinks=false)</td></tr>
<tr class="memdesc:a8d3e01853af1365fce62dd460dea816f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all links from this signature. <br /></td></tr>
<tr class="separator:a8d3e01853af1365fce62dd460dea816f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbd9806c2b20182217d2269c7398541e" id="r_abbd9806c2b20182217d2269c7398541e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#abbd9806c2b20182217d2269c7398541e">removeLink</a> (int idTo)</td></tr>
<tr class="memdesc:abbd9806c2b20182217d2269c7398541e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a specific link to a target signature. <br /></td></tr>
<tr class="separator:abbd9806c2b20182217d2269c7398541e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a328419f90f9dd8113dee4e38c9e30367" id="r_a328419f90f9dd8113dee4e38c9e30367"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a328419f90f9dd8113dee4e38c9e30367">removeVirtualLinks</a> ()</td></tr>
<tr class="memdesc:a328419f90f9dd8113dee4e38c9e30367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all virtual links from this signature. <br /></td></tr>
<tr class="separator:a328419f90f9dd8113dee4e38c9e30367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71621ac6411f778342c23fbc4e695a12" id="r_a71621ac6411f778342c23fbc4e695a12"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a71621ac6411f778342c23fbc4e695a12">addLandmark</a> (const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;landmark)</td></tr>
<tr class="memdesc:a71621ac6411f778342c23fbc4e695a12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a landmark observation to this signature. <br /></td></tr>
<tr class="separator:a71621ac6411f778342c23fbc4e695a12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2257cfc6c620d726484f1c6c2b11257a" id="r_a2257cfc6c620d726484f1c6c2b11257a"><td class="memItemLeft" align="right" valign="top">const std::map&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a2257cfc6c620d726484f1c6c2b11257a">getLandmarks</a> () const</td></tr>
<tr class="memdesc:a2257cfc6c620d726484f1c6c2b11257a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns all landmark observations. <br /></td></tr>
<tr class="separator:a2257cfc6c620d726484f1c6c2b11257a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa482e98fb247d40368a9aaa838fe3a5a" id="r_aa482e98fb247d40368a9aaa838fe3a5a"><td class="memItemLeft" align="right" valign="top"><a id="aa482e98fb247d40368a9aaa838fe3a5a" name="aa482e98fb247d40368a9aaa838fe3a5a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>removeLandmarks</b> ()</td></tr>
<tr class="memdesc:aa482e98fb247d40368a9aaa838fe3a5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all landmark observations. <br /></td></tr>
<tr class="separator:aa482e98fb247d40368a9aaa838fe3a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fe5edded7922a34c3f52e71e8be458d" id="r_a6fe5edded7922a34c3f52e71e8be458d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a6fe5edded7922a34c3f52e71e8be458d">removeLandmark</a> (int landmarkId)</td></tr>
<tr class="memdesc:a6fe5edded7922a34c3f52e71e8be458d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a specific landmark observation. <br /></td></tr>
<tr class="separator:a6fe5edded7922a34c3f52e71e8be458d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02c5d305492e3534e3799b8b7c78d912" id="r_a02c5d305492e3534e3799b8b7c78d912"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a02c5d305492e3534e3799b8b7c78d912">setSaved</a> (bool saved)</td></tr>
<tr class="memdesc:a02c5d305492e3534e3799b8b7c78d912"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether this signature has been saved to the database. <br /></td></tr>
<tr class="separator:a02c5d305492e3534e3799b8b7c78d912"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a245c8af68f7adec3813e3b062395769f" id="r_a245c8af68f7adec3813e3b062395769f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a245c8af68f7adec3813e3b062395769f">setModified</a> (bool modified)</td></tr>
<tr class="memdesc:a245c8af68f7adec3813e3b062395769f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the modification flag for this signature. <br /></td></tr>
<tr class="separator:a245c8af68f7adec3813e3b062395769f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1496e2f2ae46f2b6efcf7ece309ffd22" id="r_a1496e2f2ae46f2b6efcf7ece309ffd22"><td class="memItemLeft" align="right" valign="top">const std::multimap&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a1496e2f2ae46f2b6efcf7ece309ffd22">getLinks</a> () const</td></tr>
<tr class="memdesc:a1496e2f2ae46f2b6efcf7ece309ffd22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns all links from this signature. <br /></td></tr>
<tr class="separator:a1496e2f2ae46f2b6efcf7ece309ffd22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d15326165e9d01f0b91b247f5da23ea" id="r_a0d15326165e9d01f0b91b247f5da23ea"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a0d15326165e9d01f0b91b247f5da23ea">isSaved</a> () const</td></tr>
<tr class="memdesc:a0d15326165e9d01f0b91b247f5da23ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if this signature has been saved to the database. <br /></td></tr>
<tr class="separator:a0d15326165e9d01f0b91b247f5da23ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab63ee6d2a0e2cd456748a64d9990f969" id="r_ab63ee6d2a0e2cd456748a64d9990f969"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#ab63ee6d2a0e2cd456748a64d9990f969">isModified</a> () const</td></tr>
<tr class="memdesc:ab63ee6d2a0e2cd456748a64d9990f969"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if this signature has been modified. <br /></td></tr>
<tr class="separator:ab63ee6d2a0e2cd456748a64d9990f969"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93dcbd3cffc84808fe5652bf0f542ca9" id="r_a93dcbd3cffc84808fe5652bf0f542ca9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a93dcbd3cffc84808fe5652bf0f542ca9">isLinksModified</a> () const</td></tr>
<tr class="memdesc:a93dcbd3cffc84808fe5652bf0f542ca9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the links have been modified. <br /></td></tr>
<tr class="separator:a93dcbd3cffc84808fe5652bf0f542ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac24301e6aff593fdcd679485b2c0e0e" id="r_aac24301e6aff593fdcd679485b2c0e0e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#aac24301e6aff593fdcd679485b2c0e0e">removeAllWords</a> ()</td></tr>
<tr class="memdesc:aac24301e6aff593fdcd679485b2c0e0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all visual words from this signature. <br /></td></tr>
<tr class="separator:aac24301e6aff593fdcd679485b2c0e0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fbef54e89583c0ee919f938d57c8759" id="r_a0fbef54e89583c0ee919f938d57c8759"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a0fbef54e89583c0ee919f938d57c8759">changeWordsRef</a> (int oldWordId, int activeWordId)</td></tr>
<tr class="memdesc:a0fbef54e89583c0ee919f938d57c8759"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes visual word references from one word ID to another. <br /></td></tr>
<tr class="separator:a0fbef54e89583c0ee919f938d57c8759"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fb8d04c4c2c8ee6f82d1eb65fd750a4" id="r_a6fb8d04c4c2c8ee6f82d1eb65fd750a4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a6fb8d04c4c2c8ee6f82d1eb65fd750a4">setWords</a> (const std::multimap&lt; int, int &gt; &amp;words, const std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, const std::vector&lt; cv::Point3f &gt; &amp;words3, const cv::Mat &amp;descriptors)</td></tr>
<tr class="memdesc:a6fb8d04c4c2c8ee6f82d1eb65fd750a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets all visual words for this signature. <br /></td></tr>
<tr class="separator:a6fb8d04c4c2c8ee6f82d1eb65fd750a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a343a565680d03c45cc29dff7392b275e" id="r_a343a565680d03c45cc29dff7392b275e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a343a565680d03c45cc29dff7392b275e">isEnabled</a> () const</td></tr>
<tr class="memdesc:a343a565680d03c45cc29dff7392b275e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if this signature is enabled. <br /></td></tr>
<tr class="separator:a343a565680d03c45cc29dff7392b275e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51a08cbabd87eb0fd5045ffdb4cb3c00" id="r_a51a08cbabd87eb0fd5045ffdb4cb3c00"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a51a08cbabd87eb0fd5045ffdb4cb3c00">setEnabled</a> (bool enabled)</td></tr>
<tr class="memdesc:a51a08cbabd87eb0fd5045ffdb4cb3c00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether this signature is enabled. <br /></td></tr>
<tr class="separator:a51a08cbabd87eb0fd5045ffdb4cb3c00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68eaa67c81d08e20d2b7a43b0659b1d4" id="r_a68eaa67c81d08e20d2b7a43b0659b1d4"><td class="memItemLeft" align="right" valign="top">const std::multimap&lt; int, int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a68eaa67c81d08e20d2b7a43b0659b1d4">getWords</a> () const</td></tr>
<tr class="memdesc:a68eaa67c81d08e20d2b7a43b0659b1d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the visual words map. <br /></td></tr>
<tr class="separator:a68eaa67c81d08e20d2b7a43b0659b1d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a471f71821ceeec9a25e9e4e16673d14f" id="r_a471f71821ceeec9a25e9e4e16673d14f"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; cv::KeyPoint &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a471f71821ceeec9a25e9e4e16673d14f">getWordsKpts</a> () const</td></tr>
<tr class="memdesc:a471f71821ceeec9a25e9e4e16673d14f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the keypoints associated with visual words. <br /></td></tr>
<tr class="separator:a471f71821ceeec9a25e9e4e16673d14f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2d1526d87df9ff5d4885b16c460ebcf" id="r_ac2d1526d87df9ff5d4885b16c460ebcf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#ac2d1526d87df9ff5d4885b16c460ebcf">getInvalidWordsCount</a> () const</td></tr>
<tr class="memdesc:ac2d1526d87df9ff5d4885b16c460ebcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the count of invalid visual words. <br /></td></tr>
<tr class="separator:ac2d1526d87df9ff5d4885b16c460ebcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01f6eac0e5836aa921d65108b75249f6" id="r_a01f6eac0e5836aa921d65108b75249f6"><td class="memItemLeft" align="right" valign="top">const std::map&lt; int, int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a01f6eac0e5836aa921d65108b75249f6">getWordsChanged</a> () const</td></tr>
<tr class="memdesc:a01f6eac0e5836aa921d65108b75249f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the word ID change mapping. <br /></td></tr>
<tr class="separator:a01f6eac0e5836aa921d65108b75249f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ed4181ac5cc7b477482459d680c63b1" id="r_a1ed4181ac5cc7b477482459d680c63b1"><td class="memItemLeft" align="right" valign="top">const cv::Mat &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a1ed4181ac5cc7b477482459d680c63b1">getWordsDescriptors</a> () const</td></tr>
<tr class="memdesc:a1ed4181ac5cc7b477482459d680c63b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the feature descriptors for visual words. <br /></td></tr>
<tr class="separator:a1ed4181ac5cc7b477482459d680c63b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80565e1439be473d9c783d5c624b1a02" id="r_a80565e1439be473d9c783d5c624b1a02"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a80565e1439be473d9c783d5c624b1a02">setWordsDescriptors</a> (const cv::Mat &amp;descriptors)</td></tr>
<tr class="memdesc:a80565e1439be473d9c783d5c624b1a02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the feature descriptors for visual words. <br /></td></tr>
<tr class="separator:a80565e1439be473d9c783d5c624b1a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca4bf5db794637f0780f6eb2139a16f0" id="r_aca4bf5db794637f0780f6eb2139a16f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#aca4bf5db794637f0780f6eb2139a16f0">setPose</a> (const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;pose)</td></tr>
<tr class="memdesc:aca4bf5db794637f0780f6eb2139a16f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pose of this signature. <br /></td></tr>
<tr class="separator:aca4bf5db794637f0780f6eb2139a16f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8be86850b1277ce7c5eb4a5998e35e9" id="r_aa8be86850b1277ce7c5eb4a5998e35e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#aa8be86850b1277ce7c5eb4a5998e35e9">setGroundTruthPose</a> (const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;pose)</td></tr>
<tr class="memdesc:aa8be86850b1277ce7c5eb4a5998e35e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the ground truth pose for evaluation. <br /></td></tr>
<tr class="separator:aa8be86850b1277ce7c5eb4a5998e35e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e48a2cde44ad1ecc2daaf5e8245e86a" id="r_a1e48a2cde44ad1ecc2daaf5e8245e86a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a1e48a2cde44ad1ecc2daaf5e8245e86a">setVelocity</a> (float vx, float vy, float vz, float vroll, float vpitch, float vyaw)</td></tr>
<tr class="memdesc:a1e48a2cde44ad1ecc2daaf5e8245e86a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the velocity of this signature. <br /></td></tr>
<tr class="separator:a1e48a2cde44ad1ecc2daaf5e8245e86a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab902bfc7cdde2542ffe7e5d441f90a66" id="r_ab902bfc7cdde2542ffe7e5d441f90a66"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; cv::Point3f &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#ab902bfc7cdde2542ffe7e5d441f90a66">getWords3</a> () const</td></tr>
<tr class="memdesc:ab902bfc7cdde2542ffe7e5d441f90a66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the 3D points of visual words. <br /></td></tr>
<tr class="separator:ab902bfc7cdde2542ffe7e5d441f90a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5166864f276c921963033e8852c13076" id="r_a5166864f276c921963033e8852c13076"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a5166864f276c921963033e8852c13076">getPose</a> () const</td></tr>
<tr class="memdesc:a5166864f276c921963033e8852c13076"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pose of this signature. <br /></td></tr>
<tr class="separator:a5166864f276c921963033e8852c13076"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc81cb91421dcd36e2f5e3dc84a77b44" id="r_afc81cb91421dcd36e2f5e3dc84a77b44"><td class="memItemLeft" align="right" valign="top">cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#afc81cb91421dcd36e2f5e3dc84a77b44">getPoseCovariance</a> () const</td></tr>
<tr class="memdesc:afc81cb91421dcd36e2f5e3dc84a77b44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the pose covariance matrix. <br /></td></tr>
<tr class="separator:afc81cb91421dcd36e2f5e3dc84a77b44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d5f3aa41c0d9404654ebc5628a5189c" id="r_a5d5f3aa41c0d9404654ebc5628a5189c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a5d5f3aa41c0d9404654ebc5628a5189c">getGroundTruthPose</a> () const</td></tr>
<tr class="memdesc:a5d5f3aa41c0d9404654ebc5628a5189c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the ground truth pose. <br /></td></tr>
<tr class="separator:a5d5f3aa41c0d9404654ebc5628a5189c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae97f22fcb6799a5312c1948cb9f42c99" id="r_ae97f22fcb6799a5312c1948cb9f42c99"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; float &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#ae97f22fcb6799a5312c1948cb9f42c99">getVelocity</a> () const</td></tr>
<tr class="memdesc:ae97f22fcb6799a5312c1948cb9f42c99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the velocity of this signature. <br /></td></tr>
<tr class="separator:ae97f22fcb6799a5312c1948cb9f42c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24c257c2ff3fe156910ac82c41de8738" id="r_a24c257c2ff3fe156910ac82c41de8738"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a24c257c2ff3fe156910ac82c41de8738">sensorData</a> ()</td></tr>
<tr class="memdesc:a24c257c2ff3fe156910ac82c41de8738"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns mutable access to the sensor data. <br /></td></tr>
<tr class="separator:a24c257c2ff3fe156910ac82c41de8738"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e7b1874613a7438ec1b2d9aa2634da8" id="r_a0e7b1874613a7438ec1b2d9aa2634da8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a0e7b1874613a7438ec1b2d9aa2634da8">sensorData</a> () const</td></tr>
<tr class="memdesc:a0e7b1874613a7438ec1b2d9aa2634da8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns const access to the sensor data. <br /></td></tr>
<tr class="separator:a0e7b1874613a7438ec1b2d9aa2634da8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a014fd12ee6cd47004e94ef4bb4753459" id="r_a014fd12ee6cd47004e94ef4bb4753459"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Signature.html#a014fd12ee6cd47004e94ef4bb4753459">getMemoryUsed</a> (bool withSensorData=true) const</td></tr>
<tr class="memdesc:a014fd12ee6cd47004e94ef4bb4753459"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the memory usage of this signature. <br /></td></tr>
<tr class="separator:a014fd12ee6cd47004e94ef4bb4753459"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Represents a node in RTAB-Map's pose graph. </p>
<p>The <a class="el" href="classrtabmap_1_1Signature.html" title="Represents a node in RTAB-Map&#39;s pose graph.">Signature</a> class is a fundamental building block of RTAB-Map's graph-based mapping system. Each signature represents a unique location or pose in the map and contains:</p>
<ul>
<li><b>Visual words</b>: Bag-of-words representation using visual features (keypoints, descriptors, 3D points) for place recognition</li>
<li><b>Links</b>: Connections to other signatures (neighbors, loop closures, landmarks)</li>
<li><b>Pose information</b>: Current pose, ground truth pose, velocity</li>
<li><b>Sensor data</b>: Images, depth, laser scans, etc. captured at this location</li>
<li><b>Metadata</b>: ID, map ID, timestamp, label, weight, modification flags</li>
</ul>
<p>Signatures are used for:</p><ul>
<li><b>Place recognition</b>: Comparing signatures to detect loop closures</li>
<li><b>Graph construction</b>: Building the pose graph through links</li>
<li><b>Localization</b>: Matching current observations to stored signatures</li>
<li><b>Mapping</b>: Storing sensor data, visual features and local occupancy grid for each location</li>
</ul>
<p>The class tracks modification state to optimize database updates, and provides methods to manage visual words, links, landmarks, and pose information.</p>
<dl class="section note"><dt>Note</dt><dd>Signatures are typically managed by the <a class="el" href="classrtabmap_1_1Memory.html" title="Three-tiered memory management (STM, WM, LTM) for RTAB-Map.">Memory</a> class, which handles storage, retrieval, and graph operations.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map&#39;s pose graph.">Link</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1Memory.html" title="Three-tiered memory management (STM, WM, LTM) for RTAB-Map.">Memory</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00083">83</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a8e079b11910a45639a792158c40693ad" name="a8e079b11910a45639a792158c40693ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e079b11910a45639a792158c40693ad">&#9670;&#160;</a></span>Signature() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rtabmap::Signature::Signature </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor. </p>
<p>Creates an empty signature with invalid ID (0), default map ID (-1), and all fields initialized to default values. </p>
</div>
</div>
<a id="aa3367bba5b890341238d93e642f847a7" name="aa3367bba5b890341238d93e642f847a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3367bba5b890341238d93e642f847a7">&#9670;&#160;</a></span>Signature() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rtabmap::Signature::Signature </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>mapId</em> = <code>-1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>weight</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>stamp</em> = <code>0.0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>label</em> = <code>std::string()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td>
<td class="paramname"><em>pose</em> = <code><a class="el" href="classrtabmap_1_1Transform.html">Transform</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td>
<td class="paramname"><em>groundTruthPose</em> = <code><a class="el" href="classrtabmap_1_1Transform.html">Transform</a>()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;&#160;</td>
<td class="paramname"><em>sensorData</em> = <code><a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor with explicit parameters. </p>
<p>Creates a signature with the specified parameters. The sensor data ID will be automatically set to match the signature ID if not already set.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">id</td><td>Unique signature ID (must be &gt; 0 for valid signature) </td></tr>
<tr><td class="paramname">mapId</td><td>Map ID this signature belongs to (default: -1 for no map) </td></tr>
<tr><td class="paramname">weight</td><td>Weight/importance of this signature (default: 0) </td></tr>
<tr><td class="paramname">stamp</td><td>Timestamp in seconds (default: 0.0) </td></tr>
<tr><td class="paramname">label</td><td>Optional label/name for this signature (default: empty) </td></tr>
<tr><td class="paramname">pose</td><td>Current pose of the signature (default: identity null transform) </td></tr>
<tr><td class="paramname">groundTruthPose</td><td>Ground truth pose for evaluation (default: null transform) </td></tr>
<tr><td class="paramname">sensorData</td><td>Sensor data captured at this location (default: empty)</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The signature is marked as modified and not saved by default. </dd></dl>
</div>
</div>
<a id="af106b6a37909c236e22f5cac6150ce62" name="af106b6a37909c236e22f5cac6150ce62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af106b6a37909c236e22f5cac6150ce62">&#9670;&#160;</a></span>Signature() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rtabmap::Signature::Signature </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor from sensor data. </p>
<p>Creates a signature from sensor data. The signature ID is taken from the sensor data ID, and the ground truth pose is extracted from the sensor data if available.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>Sensor data to create signature from</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The signature pose is initialized to identity transform. </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="abe3b712a3c74599007b1974f592d82bd" name="abe3b712a3c74599007b1974f592d82bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe3b712a3c74599007b1974f592d82bd">&#9670;&#160;</a></span>compareTo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rtabmap::Signature::compareTo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> &amp;&#160;</td>
<td class="paramname"><em>signature</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Compares this signature to another signature. </p>
<p>Computes a similarity score between this signature and another signature based on their visual words. The comparison uses bag-of-words matching to determine how similar the two locations are.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">signature</td><td>The signature to compare against </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Similarity score between 0.0 and 1.0, where 1.0 means 100% similarity</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method is used for loop closure detection and place recognition. </dd></dl>
</div>
</div>
<a id="a693874de0d6ede4fe5c5d43d6f4d8b55" name="a693874de0d6ede4fe5c5d43d6f4d8b55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a693874de0d6ede4fe5c5d43d6f4d8b55">&#9670;&#160;</a></span>isBadSignature()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::Signature::isBadSignature </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if this signature is considered "bad". </p>
<p>A signature is considered bad if it has no valid visual words (all words are invalid or the signature has no words at all). Bad signatures cannot be used for place recognition.</p>
<dl class="section return"><dt>Returns</dt><dd>True if the signature has no valid visual words, false otherwise </dd></dl>
</div>
</div>
<a id="a31c6e7b7e720eca20fb5935e0ee1d9f9" name="a31c6e7b7e720eca20fb5935e0ee1d9f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31c6e7b7e720eca20fb5935e0ee1d9f9">&#9670;&#160;</a></span>id()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::Signature::id </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the signature ID. </p>
<dl class="section return"><dt>Returns</dt><dd>The unique signature ID (0 if invalid/uninitialized) </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00168">168</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="ac6a75872fb4cb64bd088794df6e897bb" name="ac6a75872fb4cb64bd088794df6e897bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6a75872fb4cb64bd088794df6e897bb">&#9670;&#160;</a></span>mapId()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::Signature::mapId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the map ID. </p>
<dl class="section return"><dt>Returns</dt><dd>The map ID this signature belongs to (-1 if no map assigned) </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00174">174</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a28cc9f0c8d553a24ef9e5227be1c99fe" name="a28cc9f0c8d553a24ef9e5227be1c99fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28cc9f0c8d553a24ef9e5227be1c99fe">&#9670;&#160;</a></span>setWeight()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setWeight </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>weight</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the weight/importance of this signature. </p>
<p>The weight represents the importance or priority of this signature, typically set by Rehearsal mechanism (see Memory::rehearsal). Higher weights may be used to prioritize certain signatures during memory management or loop closure detection.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">weight</td><td>The weight value</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Marks the signature as modified if the weight changes. A signature already flagged as modified stays modified. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00189">189</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a701b32c562d789929a18a19c08bac4ca" name="a701b32c562d789929a18a19c08bac4ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a701b32c562d789929a18a19c08bac4ca">&#9670;&#160;</a></span>getWeight()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::Signature::getWeight </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the weight/importance of this signature. </p>
<dl class="section return"><dt>Returns</dt><dd>The weight value </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00195">195</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="aa6dc3ad065ae2fd29afbbe69429f3a7b" name="aa6dc3ad065ae2fd29afbbe69429f3a7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6dc3ad065ae2fd29afbbe69429f3a7b">&#9670;&#160;</a></span>setLabel()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setLabel </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>label</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets a label/name for this signature. </p>
<p>Labels are optional text identifiers that can be used to tag or categorize signatures (e.g., "room1", "corridor", "entrance").</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">label</td><td>The label string</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Marks the signature as modified if the label changes. A signature already flagged as modified stays modified. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00208">208</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a78a9ae9059257c60cf1d50ef415520cd" name="a78a9ae9059257c60cf1d50ef415520cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78a9ae9059257c60cf1d50ef415520cd">&#9670;&#160;</a></span>getLabel()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::string &amp; rtabmap::Signature::getLabel </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the label/name of this signature. </p>
<dl class="section return"><dt>Returns</dt><dd>The label string (empty if not set) </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00214">214</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="aa9c4ed8d3617b039181cf44a0e30eca2" name="aa9c4ed8d3617b039181cf44a0e30eca2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9c4ed8d3617b039181cf44a0e30eca2">&#9670;&#160;</a></span>getStamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double rtabmap::Signature::getStamp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the timestamp of this signature. </p>
<dl class="section return"><dt>Returns</dt><dd>Timestamp in seconds (typically seconds since epoch) </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00220">220</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="aa8513c4ecb77c38b95610834c66e893e" name="aa8513c4ecb77c38b95610834c66e893e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8513c4ecb77c38b95610834c66e893e">&#9670;&#160;</a></span>addLinks() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::addLinks </td>
<td>(</td>
<td class="paramtype">const std::list&lt; <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>links</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds multiple links from a list. </p>
<p>Adds all links from the provided list to this signature's link collection.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">links</td><td>List of links to add</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Each link must have <code>from()</code> equal to this signature's ID. </dd>
<dd>
Automatically marks links as modified. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1Signature.html#a3bb2e6a8de8e615e51385c4113630f93" title="Adds a single link to this signature.">addLink()</a> </dd></dl>
</div>
</div>
<a id="af92465ad9cbfab36ffbc6d372781170c" name="af92465ad9cbfab36ffbc6d372781170c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af92465ad9cbfab36ffbc6d372781170c">&#9670;&#160;</a></span>addLinks() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::addLinks </td>
<td>(</td>
<td class="paramtype">const std::map&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>links</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds multiple links from a map. </p>
<p>Adds all links from the provided map to this signature's link collection.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">links</td><td>Map of target IDs to links</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Each link must have <code>from()</code> equal to this signature's ID. </dd>
<dd>
The map's keys are the target IDs (<code>to()</code> values of the links). </dd>
<dd>
Automatically marks links as modified. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1Signature.html#a3bb2e6a8de8e615e51385c4113630f93" title="Adds a single link to this signature.">addLink()</a> </dd></dl>
</div>
</div>
<a id="a3bb2e6a8de8e615e51385c4113630f93" name="a3bb2e6a8de8e615e51385c4113630f93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bb2e6a8de8e615e51385c4113630f93">&#9670;&#160;</a></span>addLink()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::addLink </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;&#160;</td>
<td class="paramname"><em>link</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a single link to this signature. </p>
<p>Adds a link connecting this signature to another signature. The link represents a constraint in the pose graph (e.g., neighbor, loop closure).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">link</td><td>The link to add</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The link's <code>from()</code> must equal this signature's ID. </dd>
<dd>
The link's <code>to()</code> must be different from this signature's ID (except for self-referring links like pose priors or gravity). </dd>
<dd>
Duplicate links to the same target are not allowed (assertion failure). </dd>
<dd>
Automatically marks links as modified. </dd></dl>
</div>
</div>
<a id="ad71fa7c0466dbb5c5062953043c3fcb0" name="ad71fa7c0466dbb5c5062953043c3fcb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad71fa7c0466dbb5c5062953043c3fcb0">&#9670;&#160;</a></span>hasLink()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::Signature::hasLink </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>idTo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a>&#160;</td>
<td class="paramname"><em>type</em> = <code><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if this signature has a link to a target signature. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">idTo</td><td>Target signature ID (0 to check for any link of the specified type) </td></tr>
<tr><td class="paramname">type</td><td><a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map&#39;s pose graph.">Link</a> type to check for (default: <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a> to check any type) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if a matching link exists, false otherwise </dd></dl>
</div>
</div>
<a id="a10d3bce2c3e4ec2de31aa5fa0c4b5934" name="a10d3bce2c3e4ec2de31aa5fa0c4b5934"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10d3bce2c3e4ec2de31aa5fa0c4b5934">&#9670;&#160;</a></span>changeLinkIds()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::changeLinkIds </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>idFrom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>idTo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Changes all link target IDs from one value to another. </p>
<p>Updates all links that point to <code>idFrom</code> to point to <code>idTo</code> instead. This is useful when merging or reorganizing the graph.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">idFrom</td><td>Original target ID </td></tr>
<tr><td class="paramname">idTo</td><td>New target ID</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Automatically marks links as modified. </dd></dl>
</div>
</div>
<a id="a8d3e01853af1365fce62dd460dea816f" name="a8d3e01853af1365fce62dd460dea816f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d3e01853af1365fce62dd460dea816f">&#9670;&#160;</a></span>removeLinks()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::removeLinks </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>keepSelfReferringLinks</em> = <code>false</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes all links from this signature. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keepSelfReferringLinks</td><td>If true, preserves self-referring links (pose priors, gravity) that have from() == to()</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Automatically marks links as modified. </dd></dl>
</div>
</div>
<a id="abbd9806c2b20182217d2269c7398541e" name="abbd9806c2b20182217d2269c7398541e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbd9806c2b20182217d2269c7398541e">&#9670;&#160;</a></span>removeLink()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::removeLink </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>idTo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes a specific link to a target signature. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">idTo</td><td>Target signature ID of the link to remove</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Automatically marks links as modified. </dd></dl>
</div>
</div>
<a id="a328419f90f9dd8113dee4e38c9e30367" name="a328419f90f9dd8113dee4e38c9e30367"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a328419f90f9dd8113dee4e38c9e30367">&#9670;&#160;</a></span>removeVirtualLinks()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::removeVirtualLinks </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes all virtual links from this signature. </p>
<p>Virtual links are links of type <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eaf74a4b0552da7509b16f8c4b8baf85c7">Link::kVirtualClosure</a>.</p>
<dl class="section note"><dt>Note</dt><dd>Automatically marks links as modified. </dd></dl>
</div>
</div>
<a id="a71621ac6411f778342c23fbc4e695a12" name="a71621ac6411f778342c23fbc4e695a12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71621ac6411f778342c23fbc4e695a12">&#9670;&#160;</a></span>addLandmark()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::addLandmark </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;&#160;</td>
<td class="paramname"><em>landmark</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a landmark observation to this signature. </p>
<p>Landmarks are persistent features in the environment that can be observed from multiple locations. This method adds a link representing the observation of a landmark from this signature's location.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">landmark</td><td><a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map&#39;s pose graph.">Link</a> representing the landmark observation</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="classrtabmap_1_1Landmark.html" title="Optimized pose of a visual landmark (e.g. ArUco/AprilTag) in the map.">Landmark</a> IDs are typically negative to distinguish them from regular nodes. </dd></dl>
</div>
</div>
<a id="a2257cfc6c620d726484f1c6c2b11257a" name="a2257cfc6c620d726484f1c6c2b11257a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2257cfc6c620d726484f1c6c2b11257a">&#9670;&#160;</a></span>getLandmarks()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::map&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp; rtabmap::Signature::getLandmarks </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns all landmark observations. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the map of landmark IDs to landmark links </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00332">332</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a6fe5edded7922a34c3f52e71e8be458d" name="a6fe5edded7922a34c3f52e71e8be458d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fe5edded7922a34c3f52e71e8be458d">&#9670;&#160;</a></span>removeLandmark()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::removeLandmark </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>landmarkId</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes a specific landmark observation. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">landmarkId</td><td>The landmark ID to remove </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a02c5d305492e3534e3799b8b7c78d912" name="a02c5d305492e3534e3799b8b7c78d912"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02c5d305492e3534e3799b8b7c78d912">&#9670;&#160;</a></span>setSaved()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setSaved </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>saved</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets whether this signature has been saved to the database. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">saved</td><td>True if saved, false otherwise </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00349">349</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a245c8af68f7adec3813e3b062395769f" name="a245c8af68f7adec3813e3b062395769f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a245c8af68f7adec3813e3b062395769f">&#9670;&#160;</a></span>setModified()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setModified </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>modified</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the modification flag for this signature. </p>
<p>Marks the signature as modified (or unmodified). When set to true, also marks links as modified.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">modified</td><td>True if modified, false otherwise </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00359">359</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a1496e2f2ae46f2b6efcf7ece309ffd22" name="a1496e2f2ae46f2b6efcf7ece309ffd22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1496e2f2ae46f2b6efcf7ece309ffd22">&#9670;&#160;</a></span>getLinks()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::multimap&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp; rtabmap::Signature::getLinks </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns all links from this signature. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the multimap of target IDs to links </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00365">365</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a0d15326165e9d01f0b91b247f5da23ea" name="a0d15326165e9d01f0b91b247f5da23ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d15326165e9d01f0b91b247f5da23ea">&#9670;&#160;</a></span>isSaved()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::Signature::isSaved </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if this signature has been saved to the database. </p>
<dl class="section return"><dt>Returns</dt><dd>True if saved, false otherwise </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00371">371</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="ab63ee6d2a0e2cd456748a64d9990f969" name="ab63ee6d2a0e2cd456748a64d9990f969"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab63ee6d2a0e2cd456748a64d9990f969">&#9670;&#160;</a></span>isModified()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::Signature::isModified </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if this signature has been modified. </p>
<p>Returns true if either the signature data or links have been modified.</p>
<dl class="section return"><dt>Returns</dt><dd>True if modified, false otherwise </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00380">380</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a93dcbd3cffc84808fe5652bf0f542ca9" name="a93dcbd3cffc84808fe5652bf0f542ca9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93dcbd3cffc84808fe5652bf0f542ca9">&#9670;&#160;</a></span>isLinksModified()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::Signature::isLinksModified </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if the links have been modified. </p>
<dl class="section return"><dt>Returns</dt><dd>True if links are modified, false otherwise </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00386">386</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="aac24301e6aff593fdcd679485b2c0e0e" name="aac24301e6aff593fdcd679485b2c0e0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac24301e6aff593fdcd679485b2c0e0e">&#9670;&#160;</a></span>removeAllWords()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::removeAllWords </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes all visual words from this signature. </p>
<p>Clears all visual words, keypoints, 3D points, and descriptors. The signature will be disabled after this operation. </p>
</div>
</div>
<a id="a0fbef54e89583c0ee919f938d57c8759" name="a0fbef54e89583c0ee919f938d57c8759"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0fbef54e89583c0ee919f938d57c8759">&#9670;&#160;</a></span>changeWordsRef()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::changeWordsRef </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>oldWordId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>activeWordId</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Changes visual word references from one word ID to another. </p>
<p>Updates all occurrences of <code>oldWordId</code> to <code>activeWordId</code> in the visual words. This is used when words are merged or reorganized in the dictionary.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">oldWordId</td><td>The original word ID to replace </td></tr>
<tr><td class="paramname">activeWordId</td><td>The new word ID to use</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Tracks word ID changes in <code>_wordsChanged</code> for reference. </dd></dl>
</div>
</div>
<a id="a6fb8d04c4c2c8ee6f82d1eb65fd750a4" name="a6fb8d04c4c2c8ee6f82d1eb65fd750a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fb8d04c4c2c8ee6f82d1eb65fd750a4">&#9670;&#160;</a></span>setWords()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setWords </td>
<td>(</td>
<td class="paramtype">const std::multimap&lt; int, int &gt; &amp;&#160;</td>
<td class="paramname"><em>words</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; cv::KeyPoint &gt; &amp;&#160;</td>
<td class="paramname"><em>keypoints</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; cv::Point3f &gt; &amp;&#160;</td>
<td class="paramname"><em>words3</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>descriptors</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets all visual words for this signature. </p>
<p>Sets the complete visual word representation including word IDs, keypoints, 3D points, and descriptors. All arrays must have matching sizes.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">words</td><td>Multimap of word IDs to keypoint indices (allows duplicate words). The keypoint indices match the keypoints, points and descriptors. </td></tr>
<tr><td class="paramname">keypoints</td><td>Vector of 2D keypoints in image coordinates. The keypoints must be in the same order as the words. </td></tr>
<tr><td class="paramname">words3</td><td>Vector of 3D points in base_link frame (with localTransform applied). The points must be in the same order as the words. </td></tr>
<tr><td class="paramname">descriptors</td><td>Feature descriptors matrix (one row per word). The descriptors must be in the same order as the words.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The signature is disabled after setting words (must be explicitly enabled). </dd>
<dd>
Invalid words (ID &lt;= 0) are counted in <code>_invalidWordsCount</code>. </dd>
<dd>
All arrays must have the same size (number of words). </dd></dl>
</div>
</div>
<a id="a343a565680d03c45cc29dff7392b275e" name="a343a565680d03c45cc29dff7392b275e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a343a565680d03c45cc29dff7392b275e">&#9670;&#160;</a></span>isEnabled()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::Signature::isEnabled </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if this signature is enabled. </p>
<p>Enabled signatures can be used for place recognition and loop closure detection. More explicitly, it means that the signature is registered to the <a class="el" href="classrtabmap_1_1VWDictionary.html" title="Manages a dictionary of visual words for visual place recognition and loop closure detection.">VWDictionary</a> (see Memory::enableWordsRef).</p>
<dl class="section return"><dt>Returns</dt><dd>True if enabled, false otherwise </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00436">436</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a51a08cbabd87eb0fd5045ffdb4cb3c00" name="a51a08cbabd87eb0fd5045ffdb4cb3c00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51a08cbabd87eb0fd5045ffdb4cb3c00">&#9670;&#160;</a></span>setEnabled()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setEnabled </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enabled</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets whether this signature is enabled. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">enabled</td><td>True to enable, false to disable </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00442">442</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a68eaa67c81d08e20d2b7a43b0659b1d4" name="a68eaa67c81d08e20d2b7a43b0659b1d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68eaa67c81d08e20d2b7a43b0659b1d4">&#9670;&#160;</a></span>getWords()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::multimap&lt; int, int &gt; &amp; rtabmap::Signature::getWords </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the visual words map. </p>
<p>Returns a multimap of word IDs to keypoint indices. The multimap allows duplicate word IDs (a word can appear multiple times in the signature).</p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the words multimap </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00452">452</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a471f71821ceeec9a25e9e4e16673d14f" name="a471f71821ceeec9a25e9e4e16673d14f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a471f71821ceeec9a25e9e4e16673d14f">&#9670;&#160;</a></span>getWordsKpts()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::vector&lt; cv::KeyPoint &gt; &amp; rtabmap::Signature::getWordsKpts </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the keypoints associated with visual words. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the vector of 2D keypoints </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00458">458</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="ac2d1526d87df9ff5d4885b16c460ebcf" name="ac2d1526d87df9ff5d4885b16c460ebcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2d1526d87df9ff5d4885b16c460ebcf">&#9670;&#160;</a></span>getInvalidWordsCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::Signature::getInvalidWordsCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the count of invalid visual words. </p>
<p>Invalid words are those with ID &lt;= 0. These words cannot be used for place recognition. However, they are still used for transform estimation after loop closures are detected with the valid words.</p>
<dl class="section return"><dt>Returns</dt><dd>Number of invalid words </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00469">469</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a01f6eac0e5836aa921d65108b75249f6" name="a01f6eac0e5836aa921d65108b75249f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01f6eac0e5836aa921d65108b75249f6">&#9670;&#160;</a></span>getWordsChanged()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::map&lt; int, int &gt; &amp; rtabmap::Signature::getWordsChanged </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the word ID change mapping. </p>
<p>Returns a map of old word IDs to new word IDs, tracking changes made through <code><a class="el" href="classrtabmap_1_1Signature.html#a0fbef54e89583c0ee919f938d57c8759" title="Changes visual word references from one word ID to another.">changeWordsRef()</a></code>.</p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the word ID change map </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00479">479</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a1ed4181ac5cc7b477482459d680c63b1" name="a1ed4181ac5cc7b477482459d680c63b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ed4181ac5cc7b477482459d680c63b1">&#9670;&#160;</a></span>getWordsDescriptors()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const cv::Mat &amp; rtabmap::Signature::getWordsDescriptors </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the feature descriptors for visual words. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the descriptors matrix (one row per word) </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00485">485</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a80565e1439be473d9c783d5c624b1a02" name="a80565e1439be473d9c783d5c624b1a02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80565e1439be473d9c783d5c624b1a02">&#9670;&#160;</a></span>setWordsDescriptors()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setWordsDescriptors </td>
<td>(</td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>descriptors</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the feature descriptors for visual words. </p>
<p>Updates the descriptors matrix. The number of rows must match the number of visual words.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">descriptors</td><td>Descriptors matrix (one row per word) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aca4bf5db794637f0780f6eb2139a16f0" name="aca4bf5db794637f0780f6eb2139a16f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca4bf5db794637f0780f6eb2139a16f0">&#9670;&#160;</a></span>setPose()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setPose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td>
<td class="paramname"><em>pose</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the pose of this signature. </p>
<p>The pose represents the position and orientation of this signature in the odometry coordinate frame. To get the pose in map coordinate frame, use the map correction transform computed by graph optimization and apply it to this pose.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pose</td><td>The transform representing the pose in the odometry coordinate frame.</td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="comment">// Get pose in map coordinate frame</span></div>
<div class="line"><a class="code hl_class" href="classrtabmap_1_1Statistics.html">Statistics</a> stats;</div>
<div class="line"><a class="code hl_class" href="classrtabmap_1_1Transform.html">Transform</a> poseInMapFrame = stats.<a class="code hl_function" href="classrtabmap_1_1Statistics.html#a775992631cd8d976a94ea6c1560dad0d">mapCorrection</a>() * signature.getPose();</div>
<div class="line"><span class="comment">// poseInMapFrame is the pose in map coordinate frame</span></div>
<div class="line"><span class="comment">// signature.getPose() returns the pose in odometry coordinate frame</span></div>
<div class="ttc" id="aclassrtabmap_1_1Statistics_html"><div class="ttname"><a href="classrtabmap_1_1Statistics.html">rtabmap::Statistics</a></div><div class="ttdoc">Collects and manages runtime statistics for RTAB-Map.</div><div class="ttdef"><b>Definition</b> <a href="Statistics_8h_source.html#l00107">Statistics.h:108</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1Statistics_html_a775992631cd8d976a94ea6c1560dad0d"><div class="ttname"><a href="classrtabmap_1_1Statistics.html#a775992631cd8d976a94ea6c1560dad0d">rtabmap::Statistics::mapCorrection</a></div><div class="ttdeci">const Transform &amp; mapCorrection() const</div><div class="ttdoc">Returns the map correction transform.</div><div class="ttdef"><b>Definition</b> <a href="Statistics_8h_source.html#l00657">Statistics.h:657</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1Transform_html"><div class="ttname"><a href="classrtabmap_1_1Transform.html">rtabmap::Transform</a></div><div class="ttdoc">Represents a 3D rigid body transformation (rotation + translation).</div><div class="ttdef"><b>Definition</b> <a href="Transform_8h_source.html#l00052">Transform.h:53</a></div></div>
</div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1Statistics.html#a775992631cd8d976a94ea6c1560dad0d" title="Returns the map correction transform.">Statistics::mapCorrection()</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1Signature.html#a5166864f276c921963033e8852c13076" title="Returns the pose of this signature.">getPose()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00519">519</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="aa8be86850b1277ce7c5eb4a5998e35e9" name="aa8be86850b1277ce7c5eb4a5998e35e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8be86850b1277ce7c5eb4a5998e35e9">&#9670;&#160;</a></span>setGroundTruthPose()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setGroundTruthPose </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td>
<td class="paramname"><em>pose</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the ground truth pose for evaluation. </p>
<p>Ground truth poses are used for evaluating localization accuracy and comparing against the estimated pose.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pose</td><td>The ground truth transform </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00529">529</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a1e48a2cde44ad1ecc2daaf5e8245e86a" name="a1e48a2cde44ad1ecc2daaf5e8245e86a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e48a2cde44ad1ecc2daaf5e8245e86a">&#9670;&#160;</a></span>setVelocity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::Signature::setVelocity </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>vx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>vy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>vz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>vroll</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>vpitch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>vyaw</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the velocity of this signature. </p>
<p>Sets the 6DOF velocity (linear and angular) at the time this signature was captured.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">vx</td><td>Linear velocity in x direction (m/s) </td></tr>
<tr><td class="paramname">vy</td><td>Linear velocity in y direction (m/s) </td></tr>
<tr><td class="paramname">vz</td><td>Linear velocity in z direction (m/s) </td></tr>
<tr><td class="paramname">vroll</td><td>Angular velocity around x axis (rad/s) </td></tr>
<tr><td class="paramname">vpitch</td><td>Angular velocity around y axis (rad/s) </td></tr>
<tr><td class="paramname">vyaw</td><td>Angular velocity around z axis (rad/s) </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00544">544</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="ab902bfc7cdde2542ffe7e5d441f90a66" name="ab902bfc7cdde2542ffe7e5d441f90a66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab902bfc7cdde2542ffe7e5d441f90a66">&#9670;&#160;</a></span>getWords3()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::vector&lt; cv::Point3f &gt; &amp; rtabmap::Signature::getWords3 </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the 3D points of visual words. </p>
<p>Returns the 3D coordinates of visual words in the base_link frame (with localTransform applied).</p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the vector of 3D points </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00562">562</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a5166864f276c921963033e8852c13076" name="a5166864f276c921963033e8852c13076"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5166864f276c921963033e8852c13076">&#9670;&#160;</a></span>getPose()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp; rtabmap::Signature::getPose </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the pose of this signature. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the pose transform in the odometry coordinate frame. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1Signature.html#aca4bf5db794637f0780f6eb2139a16f0" title="Sets the pose of this signature.">setPose()</a> for an example of how to get the pose in map coordinate frame. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00569">569</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="afc81cb91421dcd36e2f5e3dc84a77b44" name="afc81cb91421dcd36e2f5e3dc84a77b44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc81cb91421dcd36e2f5e3dc84a77b44">&#9670;&#160;</a></span>getPoseCovariance()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">cv::Mat rtabmap::Signature::getPoseCovariance </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the pose covariance matrix. </p>
<p>Gets the covariance matrix representing the uncertainty between the current pose and the previous pose (e.g, from the odometry link with the previous signature).</p>
<dl class="section return"><dt>Returns</dt><dd>6x6 covariance matrix (3x3 for translation, 3x3 for rotation) </dd></dl>
</div>
</div>
<a id="a5d5f3aa41c0d9404654ebc5628a5189c" name="a5d5f3aa41c0d9404654ebc5628a5189c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d5f3aa41c0d9404654ebc5628a5189c">&#9670;&#160;</a></span>getGroundTruthPose()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp; rtabmap::Signature::getGroundTruthPose </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the ground truth pose. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the ground truth transform </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00585">585</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="ae97f22fcb6799a5312c1948cb9f42c99" name="ae97f22fcb6799a5312c1948cb9f42c99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae97f22fcb6799a5312c1948cb9f42c99">&#9670;&#160;</a></span>getVelocity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::vector&lt; float &gt; &amp; rtabmap::Signature::getVelocity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the velocity of this signature. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the velocity vector [vx, vy, vz, vroll, vpitch, vyaw] </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00591">591</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a24c257c2ff3fe156910ac82c41de8738" name="a24c257c2ff3fe156910ac82c41de8738"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24c257c2ff3fe156910ac82c41de8738">&#9670;&#160;</a></span>sensorData() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp; rtabmap::Signature::sensorData </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns mutable access to the sensor data. </p>
<dl class="section return"><dt>Returns</dt><dd>Reference to the sensor data </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00597">597</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a0e7b1874613a7438ec1b2d9aa2634da8" name="a0e7b1874613a7438ec1b2d9aa2634da8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e7b1874613a7438ec1b2d9aa2634da8">&#9670;&#160;</a></span>sensorData() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp; rtabmap::Signature::sensorData </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns const access to the sensor data. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the sensor data </dd></dl>
<p class="definition">Definition at line <a class="el" href="Signature_8h_source.html#l00603">603</a> of file <a class="el" href="Signature_8h_source.html">Signature.h</a>.</p>
</div>
</div>
<a id="a014fd12ee6cd47004e94ef4bb4753459" name="a014fd12ee6cd47004e94ef4bb4753459"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a014fd12ee6cd47004e94ef4bb4753459">&#9670;&#160;</a></span>getMemoryUsed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned long rtabmap::Signature::getMemoryUsed </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>withSensorData</em> = <code>true</code></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the memory usage of this signature. </p>
<p>Calculates the approximate memory footprint of this signature, including visual words, links, sensor data, and other internal structures.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">withSensorData</td><td>If true, includes sensor data in the calculation </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classrtabmap_1_1Memory.html" title="Three-tiered memory management (STM, WM, LTM) for RTAB-Map.">Memory</a> usage in bytes </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>corelib/include/rtabmap/core/<a class="el" href="Signature_8h_source.html">Signature.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacertabmap.html">rtabmap</a></li><li class="navelem"><a class="el" href="classrtabmap_1_1Signature.html">Signature</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>