<trclass="memdesc:a925bb7ca93eb95a3a873b0a9e8d5e91e"><tdclass="mdescLeft"> </td><tdclass="mdescRight"><aclass="el"href="classrtabmap_1_1Link.html"title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a> category and filter sentinels. <ahref="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">More...</a><br/></td></tr>
<trclass="memdesc:a2dce9c7a3ef04085d51f702002107c7b"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Default constructor; creates an invalid link (<aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">kUndef</a>). <br/></td></tr>
<trclass="memdesc:a8f624aa84862d7abafae5cfc7175f885"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Constructs a link between two nodes. <br/></td></tr>
<trclass="memdesc:a00cecebc9adf3ee5afb66d6ad63871e4"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Rotation variance derived from the information matrix diagonal (roll, pitch, yaw). <br/></td></tr>
<trclass="memdesc:a3c4344c01b4f32a8b4a957b979fea84e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Translation variance derived from the information matrix diagonal (x, y, z). <br/></td></tr>
<trclass="memdesc:a3a82104ae4195beff134811a3a19d939"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Sets the 6x6 information matrix (<code>CV_64FC1</code>); diagonal entries must be positive and finite. <br/></td></tr>
<trclass="memdesc:adb075101cafb535fc4a9b74f7afae521"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decompresses user data into <aclass="el"href="classrtabmap_1_1Link.html#a1fce4ae495f2a4f5e0f7ac10551983ac">userDataRaw()</a> if compressed data is stored. <br/></td></tr>
<trclass="memdesc:a953a029f601d7ca3efbb12ca22da4542"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Chains this link (from → to) with <code>link</code> (to → link.to). <br/></td></tr>
<divclass="textblock"><p>Directed constraint between two nodes in RTAB-Map's pose graph. </p>
<p>A link connects signature <aclass="el"href="classrtabmap_1_1Link.html#a185194e8e766ca979e4de7e179f0e534">from()</a> to signature <aclass="el"href="classrtabmap_1_1Link.html#a8d534b311c37d789276dd58bd7dc89e4">to()</a> with a relative <aclass="el"href="classrtabmap_1_1Transform.html">Transform</a> and an information matrix (inverse covariance) used by graph optimization. Links are stored on <aclass="el"href="classrtabmap_1_1Signature.html">Signature</a> objects and persisted in the database; they define odometry chains, loop closures, landmarks, and priors.</p>
<p>The transform is expressed from the <code>from</code> node frame to the <code>to</code> node frame (i.e. pose of <code>to</code> relative to <code>from</code>), unless <aclass="el"href="classrtabmap_1_1Link.html#a17ea666cb54c4f7cce1c80bc2e1950c3">type()</a> indicates a special semantics (e.g. <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea56caa6c8eeab867bb16f763f3ddbd9b1">kPosePrior</a>, <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9">kLandmark</a>).</p>
<dlclass="section see"><dt>See also</dt><dd><aclass="el"href="classrtabmap_1_1Signature.html"title="Represents a node in RTAB-Map's pose graph.">Signature</a></dd>
<dd>
<aclass="el"href="classrtabmap_1_1Memory.html#a4140effa4830fbe679a51e975f0021a1"title="Adds a graph link between two signatures.">Memory::addLink()</a></dd></dl>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00054">54</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<p><aclass="el"href="classrtabmap_1_1Link.html"title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a> category and filter sentinels. </p>
<p>Values <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e">kSelfRefLink</a>, <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eacc2cbab0ea322149df37addb91cb75ac">kAllWithLandmarks</a>, <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae8ffae7407e28cf7a125f76bea2864a5">kAllWithoutLandmarks</a> and <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">kUndef</a> are also used as query filters when retrieving links from memory or the database (they are not stored as link types on signatures). </p>
<tableclass="fieldtable">
<tr><thcolspan="2">Enumerator</th></tr><tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf"name="a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf"></a>kNeighbor </td><tdclass="fielddoc"><p>Sequential odometry link between consecutive nodes. </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91eae963042a31afec63e8c0683696ac6791"name="a925bb7ca93eb95a3a873b0a9e8d5e91eae963042a31afec63e8c0683696ac6791"></a>kGlobalClosure </td><tdclass="fielddoc"><p>Global loop closure added by global loop closure detection (i.e., using bags-of-words to find loop closures with other nodes in WM without using current estimated pose). </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ea9195217dc75001841fce507de43fb0db"name="a925bb7ca93eb95a3a873b0a9e8d5e91ea9195217dc75001841fce507de43fb0db"></a>kLocalSpaceClosure </td><tdclass="fielddoc"><p>Local loop closure added by proximity detection by space (i.e. using current estimated pose to find loop closures with nearby nodes in WM). </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91eae0b352e9cbb32d357ce59f09159c09fb"name="a925bb7ca93eb95a3a873b0a9e8d5e91eae0b352e9cbb32d357ce59f09159c09fb"></a>kLocalTimeClosure </td><tdclass="fielddoc"><p>Local loop closure added by proximity detection by time (i.e. between nodes in STM). </p>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91eaf74a4b0552da7509b16f8c4b8baf85c7"name="a925bb7ca93eb95a3a873b0a9e8d5e91eaf74a4b0552da7509b16f8c4b8baf85c7"></a>kVirtualClosure </td><tdclass="fielddoc"><p>Virtual link added to keep the path linked to local map. </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db"name="a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db"></a>kNeighborMerged </td><tdclass="fielddoc"><p>Merged neighbor link after graph reduction. </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ea56caa6c8eeab867bb16f763f3ddbd9b1"name="a925bb7ca93eb95a3a873b0a9e8d5e91ea56caa6c8eeab867bb16f763f3ddbd9b1"></a>kPosePrior </td><tdclass="fielddoc"><p>Absolute pose prior in the world frame (<code>from</code> == <code>to</code>). </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9"name="a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9"></a>kLandmark </td><tdclass="fielddoc"><p>Observation of a landmark: <code>from</code> is the observer node, <code>to</code> is a negative landmark id. </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ea37d186f2447908a27d531be74a2f6983"name="a925bb7ca93eb95a3a873b0a9e8d5e91ea37d186f2447908a27d531be74a2f6983"></a>kGravity </td><tdclass="fielddoc"><p>Gravity direction constraint on the base frame (<code>from</code> == <code>to</code>). </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91eaa071317c0618d61e3b2cde25e1095c00"name="a925bb7ca93eb95a3a873b0a9e8d5e91eaa071317c0618d61e3b2cde25e1095c00"></a>kEnd </td><tdclass="fielddoc"><p>Sentinel: number of link types that can be stored. </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e"name="a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e"></a>kSelfRefLink </td><tdclass="fielddoc"><p>Filter: links where <code>from</code> == <code>to</code> (e.g. <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea56caa6c8eeab867bb16f763f3ddbd9b1">kPosePrior</a>, <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea37d186f2447908a27d531be74a2f6983">kGravity</a>). </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91eacc2cbab0ea322149df37addb91cb75ac"name="a925bb7ca93eb95a3a873b0a9e8d5e91eacc2cbab0ea322149df37addb91cb75ac"></a>kAllWithLandmarks </td><tdclass="fielddoc"><p>Filter: all link types including <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9">kLandmark</a>. </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91eae8ffae7407e28cf7a125f76bea2864a5"name="a925bb7ca93eb95a3a873b0a9e8d5e91eae8ffae7407e28cf7a125f76bea2864a5"></a>kAllWithoutLandmarks </td><tdclass="fielddoc"><p>Filter: all link types except <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9">kLandmark</a>. </p>
</td></tr>
<tr><tdclass="fieldname"><aid="a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4"name="a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4"></a>kUndef </td><tdclass="fielddoc"><p>Undefined type or invalid link. </p>
</td></tr>
</table>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00064">64</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
</div>
</div>
<h2class="groupheader">Constructor & Destructor Documentation</h2>
<tr><tdclass="paramname">to</td><td>Target signature id (negative for landmarks when <code>type</code> is <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9">kLandmark</a>). </td></tr>
<tr><tdclass="paramname">type</td><td><aclass="el"href="classrtabmap_1_1Link.html"title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a> category. </td></tr>
<tr><tdclass="paramname">transform</td><td>Relative transform from <code>from</code> to <code>to</code>. </td></tr>
<tr><tdclass="paramname">infMatrix</td><td>6x6 information matrix (inverse covariance) </td></tr>
<tr><tdclass="paramname">userData</td><td>Optional payload; compressed automatically if not already <code>CV_8UC1</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2class="groupheader">Member Function Documentation</h2>
<dlclass="section return"><dt>Returns</dt><dd>True if ids, transform, and type are valid for use in the graph. </dd></dl>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00104">104</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00107">107</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<dlclass="section return"><dt>Returns</dt><dd>Target signature id (negative for a landmark). </dd></dl>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00109">109</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<dlclass="section return"><dt>Returns</dt><dd>Relative transform, from the <aclass="el"href="classrtabmap_1_1Link.html#a185194e8e766ca979e4de7e179f0e534">from()</a> frame to the <aclass="el"href="classrtabmap_1_1Link.html#a8d534b311c37d789276dd58bd7dc89e4">to()</a> frame. </dd></dl>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00111">111</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<dlclass="section return"><dt>Returns</dt><dd><aclass="el"href="classrtabmap_1_1Link.html"title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a> category (see <aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Type</a>). </dd></dl>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00113">113</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00114">114</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00115">115</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<p>Rotation variance derived from the information matrix diagonal (roll, pitch, yaw). </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">minimum</td><td>If true, returns the largest diagonal entry (most uncertain axis); if false, returns the smallest non-zero entry. </td></tr>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00129">129</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00130">130</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00131">131</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00132">132</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<dlclass="section return"><dt>Returns</dt><dd>Uncompressed user data, empty unless it was set raw or <aclass="el"href="classrtabmap_1_1Link.html#adb075101cafb535fc4a9b74f7afae521">uncompressUserData()</a> was called. </dd></dl>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00137">137</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<dlclass="section return"><dt>Returns</dt><dd>User data as stored/persisted, in compressed form. </dd></dl>
<pclass="definition">Definition at line <aclass="el"href="Link_8h_source.html#l00139">139</a> of file <aclass="el"href="Link_8h_source.html">Link.h</a>.</p>
<p>Chains this link (from → to) with <code>link</code> (to → link.to). </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">link</td><td>Second link; must satisfy <code>this-><aclass="el"href="classrtabmap_1_1Link.html#a8d534b311c37d789276dd58bd7dc89e4">to()</a></code> == link.from(). </td></tr>
<tr><tdclass="paramname">outputType</td><td>Type of the merged link. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>Single link from <aclass="el"href="classrtabmap_1_1Link.html#a185194e8e766ca979e4de7e179f0e534">from()</a> to <code>link.to()</code> with transform (T_{ac} = T_{ab} T_{bc}) (or null if either input transform is null). Information matrix handling depends on <code>outputType:</code><ul>
<li><aclass="el"href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db">kNeighborMerged</a>: (\Omega_{ac} = (\Omega_{ab}^{-1} + \Omega_{bc}^{-1})^{-1}) (covariances add when both legs are diagonal and independent).</li>
<li>Other types: keeps the full information matrix of <code>link</code> unless (\Omega_{ab}(0,0) < \Omega_{bc}(0,0)) (i.e. the smaller x information entry). </li>
<dlclass="section return"><dt>Returns</dt><dd><aclass="el"href="classrtabmap_1_1Link.html"title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a> with swapped endpoints and inverted transform. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.9.8 </li>