mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-04 00:57:46 +08:00
2230 lines
137 KiB
HTML
2230 lines
137 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::graph Namespace 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"> 0.23.12</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&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&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&dn=expat.txt MIT */
|
||
$(document).ready(function(){initNavTree('namespacertabmap_1_1graph.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="#nested-classes">Classes</a> |
|
||
<a href="#func-members">Functions</a> </div>
|
||
<div class="headertitle"><div class="title">rtabmap::graph Namespace Reference</div></div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
|
||
<p>Pose-graph I/O, trajectory metrics, link utilities, and path planning.
|
||
<a href="namespacertabmap_1_1graph.html#details">More...</a></p>
|
||
<table class="memberdecls">
|
||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||
Classes</h2></td></tr>
|
||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structrtabmap_1_1graph_1_1MaxGraphErrors.html">MaxGraphErrors</a></td></tr>
|
||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Largest pose-graph constraint violations after optimization. <a href="structrtabmap_1_1graph_1_1MaxGraphErrors.html#details">More...</a><br /></td></tr>
|
||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||
</table><table class="memberdecls">
|
||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||
Functions</h2></td></tr>
|
||
<tr class="memitem:af5622dec3112ea0b5154056bde132d46" id="r_af5622dec3112ea0b5154056bde132d46"><td class="memItemLeft" align="right" valign="top">bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#af5622dec3112ea0b5154056bde132d46">exportPoses</a> (const std::string &filePath, int format, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &constraints=std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> >(), const std::map< int, double > &stamps=std::map< int, double >(), const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &parameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>())</td></tr>
|
||
<tr class="memdesc:af5622dec3112ea0b5154056bde132d46"><td class="mdescLeft"> </td><td class="mdescRight">Writes poses (and optional constraints) to disk. <br /></td></tr>
|
||
<tr class="separator:af5622dec3112ea0b5154056bde132d46"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5c0eb890db7dba1c353d57595ccbdc6e" id="r_a5c0eb890db7dba1c353d57595ccbdc6e"><td class="memItemLeft" align="right" valign="top">bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a5c0eb890db7dba1c353d57595ccbdc6e">importPoses</a> (const std::string &filePath, int format, std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > *constraints=0, std::map< int, double > *stamps=0)</td></tr>
|
||
<tr class="memdesc:a5c0eb890db7dba1c353d57595ccbdc6e"><td class="mdescLeft"> </td><td class="mdescRight">Loads poses (and optional constraints) from disk. <br /></td></tr>
|
||
<tr class="separator:a5c0eb890db7dba1c353d57595ccbdc6e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a96a6c2e8348e3d9cfd8b1770d17da9b2" id="r_a96a6c2e8348e3d9cfd8b1770d17da9b2"><td class="memItemLeft" align="right" valign="top">bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a96a6c2e8348e3d9cfd8b1770d17da9b2">exportGPS</a> (const std::string &filePath, const std::map< int, <a class="el" href="classrtabmap_1_1GPS.html">GPS</a> > &gpsValues, unsigned int rgba=0xFFFFFFFF)</td></tr>
|
||
<tr class="memdesc:a96a6c2e8348e3d9cfd8b1770d17da9b2"><td class="mdescLeft"> </td><td class="mdescRight">Exports <a class="el" href="classrtabmap_1_1GPS.html" title="WGS84 GPS fix attached to a sensor sample or graph node.">GPS</a> samples to a PLY point cloud. <br /></td></tr>
|
||
<tr class="separator:a96a6c2e8348e3d9cfd8b1770d17da9b2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3c9effdb0d7c235dc1b8d7e3f8487c67" id="r_a3c9effdb0d7c235dc1b8d7e3f8487c67"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a3c9effdb0d7c235dc1b8d7e3f8487c67">calcKittiSequenceErrors</a> (const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses_gt, const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses_result, float &t_err, float &r_err)</td></tr>
|
||
<tr class="memdesc:a3c9effdb0d7c235dc1b8d7e3f8487c67"><td class="mdescLeft"> </td><td class="mdescRight">KITTI odometry benchmark error over fixed trajectory segments. <br /></td></tr>
|
||
<tr class="separator:a3c9effdb0d7c235dc1b8d7e3f8487c67"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a83c41a7cdd595ae6f76d3f1c5140c215" id="r_a83c41a7cdd595ae6f76d3f1c5140c215"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a83c41a7cdd595ae6f76d3f1c5140c215">calcRelativeErrors</a> (const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses_gt, const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses_result, float &t_err, float &r_err)</td></tr>
|
||
<tr class="memdesc:a83c41a7cdd595ae6f76d3f1c5140c215"><td class="mdescLeft"> </td><td class="mdescRight">Mean frame-to-frame relative pose error (RPE-style, one step). <br /></td></tr>
|
||
<tr class="separator:a83c41a7cdd595ae6f76d3f1c5140c215"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5c36e32a4acd10ac3cdbbf7d73591f88" id="r_a5c36e32a4acd10ac3cdbbf7d73591f88"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a5c36e32a4acd10ac3cdbbf7d73591f88">calcRMSE</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &groundTruth, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, float &translational_rmse, float &translational_mean, float &translational_median, float &translational_std, float &translational_min, float &translational_max, float &rotational_rmse, float &rotational_mean, float &rotational_median, float &rotational_std, float &rotational_min, float &rotational_max, bool align2D=false)</td></tr>
|
||
<tr class="memdesc:a5c36e32a4acd10ac3cdbbf7d73591f88"><td class="mdescLeft"> </td><td class="mdescRight">Absolute trajectory error (ATE) with Sim(3)-style alignment (TUM RGB-D tool). <br /></td></tr>
|
||
<tr class="separator:a5c36e32a4acd10ac3cdbbf7d73591f88"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4691b760dfafe6d93de514c96fa55e0e" id="r_a4691b760dfafe6d93de514c96fa55e0e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrtabmap_1_1graph_1_1MaxGraphErrors.html">MaxGraphErrors</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a4691b760dfafe6d93de514c96fa55e0e">computeMaxGraphErrors</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, bool for3DoF=false)</td></tr>
|
||
<tr class="memdesc:a4691b760dfafe6d93de514c96fa55e0e"><td class="mdescLeft"> </td><td class="mdescRight">Finds the worst pose-graph constraint residuals after optimization. <br /></td></tr>
|
||
<tr class="separator:a4691b760dfafe6d93de514c96fa55e0e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a6c009c4c819abe37ec2ca6d041edd92b" id="r_a6c009c4c819abe37ec2ca6d041edd92b"><td class="memItemLeft" align="right" valign="top">std::vector< double > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a6c009c4c819abe37ec2ca6d041edd92b">getMaxOdomInf</a> (const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links)</td></tr>
|
||
<tr class="memdesc:a6c009c4c819abe37ec2ca6d041edd92b"><td class="mdescLeft"> </td><td class="mdescRight">Maximum information-matrix diagonal over odometry neighbor links. <br /></td></tr>
|
||
<tr class="separator:a6c009c4c819abe37ec2ca6d041edd92b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aaa0b06795dea514ad1d5fdd4626d32ec" id="r_aaa0b06795dea514ad1d5fdd4626d32ec"><td class="memItemLeft" align="right" valign="top">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> >::iterator RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#aaa0b06795dea514ad1d5fdd4626d32ec">findLink</a> (std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, int from, int to, bool checkBothWays=true, <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>)</td></tr>
|
||
<tr class="memdesc:aaa0b06795dea514ad1d5fdd4626d32ec"><td class="mdescLeft"> </td><td class="mdescRight">Finds the first link from <code>from</code> to <code>to</code> in a multimap keyed by source id. <br /></td></tr>
|
||
<tr class="separator:aaa0b06795dea514ad1d5fdd4626d32ec"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad91079c9cdd934c8ba8927d3c52b40e5" id="r_ad91079c9cdd934c8ba8927d3c52b40e5"><td class="memItemLeft" align="right" valign="top">std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > >::iterator RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#ad91079c9cdd934c8ba8927d3c52b40e5">findLink</a> (std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > > &links, int from, int to, bool checkBothWays=true, <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>)</td></tr>
|
||
<tr class="separator:ad91079c9cdd934c8ba8927d3c52b40e5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a06ed3112247c13dcf494665c1d9df327" id="r_a06ed3112247c13dcf494665c1d9df327"><td class="memItemLeft" align="right" valign="top">std::multimap< int, int >::iterator RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a06ed3112247c13dcf494665c1d9df327">findLink</a> (std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)</td></tr>
|
||
<tr class="separator:a06ed3112247c13dcf494665c1d9df327"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7695c60c6bb375057586449674d42eea" id="r_a7695c60c6bb375057586449674d42eea"><td class="memItemLeft" align="right" valign="top">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> >::const_iterator RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a7695c60c6bb375057586449674d42eea">findLink</a> (const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, int from, int to, bool checkBothWays=true, <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>)</td></tr>
|
||
<tr class="separator:a7695c60c6bb375057586449674d42eea"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a8200ae3a6bd27ee2cee4b71d85ace3e9" id="r_a8200ae3a6bd27ee2cee4b71d85ace3e9"><td class="memItemLeft" align="right" valign="top">std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > >::const_iterator RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a8200ae3a6bd27ee2cee4b71d85ace3e9">findLink</a> (const std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > > &links, int from, int to, bool checkBothWays=true, <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>)</td></tr>
|
||
<tr class="separator:a8200ae3a6bd27ee2cee4b71d85ace3e9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aecdcc01682092f4c89257d070aa2a437" id="r_aecdcc01682092f4c89257d070aa2a437"><td class="memItemLeft" align="right" valign="top">std::multimap< int, int >::const_iterator RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#aecdcc01682092f4c89257d070aa2a437">findLink</a> (const std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)</td></tr>
|
||
<tr class="separator:aecdcc01682092f4c89257d070aa2a437"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a308c9331cd3dd36a776517e64b33bd82" id="r_a308c9331cd3dd36a776517e64b33bd82"><td class="memItemLeft" align="right" valign="top">std::list< <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a308c9331cd3dd36a776517e64b33bd82">findLinks</a> (const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, int from)</td></tr>
|
||
<tr class="memdesc:a308c9331cd3dd36a776517e64b33bd82"><td class="mdescLeft"> </td><td class="mdescRight">Lists all links incident on node <code>from</code>. <br /></td></tr>
|
||
<tr class="separator:a308c9331cd3dd36a776517e64b33bd82"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5d11e3cccfeca97d570c528858863dd2" id="r_a5d11e3cccfeca97d570c528858863dd2"><td class="memItemLeft" align="right" valign="top">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a5d11e3cccfeca97d570c528858863dd2">filterDuplicateLinks</a> (const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links)</td></tr>
|
||
<tr class="memdesc:a5d11e3cccfeca97d570c528858863dd2"><td class="mdescLeft"> </td><td class="mdescRight">Removes duplicate undirected links. <br /></td></tr>
|
||
<tr class="separator:a5d11e3cccfeca97d570c528858863dd2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a592918d54b32d6f13236de85958da300" id="r_a592918d54b32d6f13236de85958da300"><td class="memItemLeft" align="right" valign="top">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a592918d54b32d6f13236de85958da300">filterLinks</a> (const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> filteredType, bool inverted=false)</td></tr>
|
||
<tr class="memdesc:a592918d54b32d6f13236de85958da300"><td class="mdescLeft"> </td><td class="mdescRight">Filters links by type or self-reference. <br /></td></tr>
|
||
<tr class="separator:a592918d54b32d6f13236de85958da300"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af4dffb2a3eced519378d18bca8fa4419" id="r_af4dffb2a3eced519378d18bca8fa4419"><td class="memItemLeft" align="right" valign="top">std::map< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#af4dffb2a3eced519378d18bca8fa4419">filterLinks</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> filteredType, bool inverted=false)</td></tr>
|
||
<tr class="separator:af4dffb2a3eced519378d18bca8fa4419"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a8213a5876c86611ee4c832981eb1e7de" id="r_a8213a5876c86611ee4c832981eb1e7de"><td class="memItemLeft" align="right" valign="top">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a8213a5876c86611ee4c832981eb1e7de">frustumPosesFiltering</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &cameraPose, float horizontalFOV=45.0f, float verticalFOV=45.0f, float nearClipPlaneDistance=0.1f, float farClipPlaneDistance=100.0f, bool negative=false)</td></tr>
|
||
<tr class="memdesc:a8213a5876c86611ee4c832981eb1e7de"><td class="mdescLeft"> </td><td class="mdescRight">Keeps poses inside (or outside) a camera frustum. <br /></td></tr>
|
||
<tr class="separator:a8213a5876c86611ee4c832981eb1e7de"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1906b8b4ad4b7ffc955d22c4996b1506" id="r_a1906b8b4ad4b7ffc955d22c4996b1506"><td class="memItemLeft" align="right" valign="top">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a1906b8b4ad4b7ffc955d22c4996b1506">radiusPosesFiltering</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, float radius, float angle, bool keepLatest=true)</td></tr>
|
||
<tr class="memdesc:a1906b8b4ad4b7ffc955d22c4996b1506"><td class="mdescLeft"> </td><td class="mdescRight">Subsamples poses that are spatially (and optionally angularly) redundant. <br /></td></tr>
|
||
<tr class="separator:a1906b8b4ad4b7ffc955d22c4996b1506"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:acaf3e4ffcfc830747c3c3cb02a8ea155" id="r_acaf3e4ffcfc830747c3c3cb02a8ea155"><td class="memItemLeft" align="right" valign="top">std::multimap< int, int > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#acaf3e4ffcfc830747c3c3cb02a8ea155">radiusPosesClustering</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, float radius, float angle)</td></tr>
|
||
<tr class="memdesc:acaf3e4ffcfc830747c3c3cb02a8ea155"><td class="mdescLeft"> </td><td class="mdescRight">Radius-neighbor clustering of poses. <br /></td></tr>
|
||
<tr class="separator:acaf3e4ffcfc830747c3c3cb02a8ea155"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aabda884597e6b8df053d04ee56cfaf6f" id="r_aabda884597e6b8df053d04ee56cfaf6f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#aabda884597e6b8df053d04ee56cfaf6f">reduceGraph</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, std::multimap< int, int > &hyperNodes, std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &hyperLinks)</td></tr>
|
||
<tr class="memdesc:aabda884597e6b8df053d04ee56cfaf6f"><td class="mdescLeft"> </td><td class="mdescRight">Reduces a pose graph into hyper-nodes and hyper-links. <br /></td></tr>
|
||
<tr class="separator:aabda884597e6b8df053d04ee56cfaf6f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5ec6c3883f73181d9458c5905c0aa0ea" id="r_a5ec6c3883f73181d9458c5905c0aa0ea"><td class="memItemLeft" align="right" valign="top">std::list< std::pair< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a5ec6c3883f73181d9458c5905c0aa0ea">computePath</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> > &poses, const std::multimap< int, int > &links, int from, int to, bool updateNewCosts=false)</td></tr>
|
||
<tr class="memdesc:a5ec6c3883f73181d9458c5905c0aa0ea"><td class="mdescLeft"> </td><td class="mdescRight">A* shortest path on a pose graph with Euclidean edge costs. <br /></td></tr>
|
||
<tr class="separator:a5ec6c3883f73181d9458c5905c0aa0ea"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a8acc34fed4cb4e452e8e14d05dafc578" id="r_a8acc34fed4cb4e452e8e14d05dafc578"><td class="memItemLeft" align="right" valign="top">std::map< int, int > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a8acc34fed4cb4e452e8e14d05dafc578">computePathDepths</a> (const std::multimap< int, int > &links, int from, int maxDepth=0)</td></tr>
|
||
<tr class="memdesc:a8acc34fed4cb4e452e8e14d05dafc578"><td class="mdescLeft"> </td><td class="mdescRight">Single-source graph depth via BFS. <br /></td></tr>
|
||
<tr class="separator:a8acc34fed4cb4e452e8e14d05dafc578"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae21d02d613df461d6163f9d9a3db7ad2" id="r_ae21d02d613df461d6163f9d9a3db7ad2"><td class="memItemLeft" align="right" valign="top">std::list< int > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#ae21d02d613df461d6163f9d9a3db7ad2">computePath</a> (const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links, int from, int to, bool updateNewCosts=false, bool useSameCostForAllLinks=false)</td></tr>
|
||
<tr class="memdesc:ae21d02d613df461d6163f9d9a3db7ad2"><td class="mdescLeft"> </td><td class="mdescRight">Dijkstra shortest path on link constraints. <br /></td></tr>
|
||
<tr class="separator:ae21d02d613df461d6163f9d9a3db7ad2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1ec6b9506985624f31fb2091219cb142" id="r_a1ec6b9506985624f31fb2091219cb142"><td class="memItemLeft" align="right" valign="top">std::list< std::pair< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a1ec6b9506985624f31fb2091219cb142">computePath</a> (int fromId, int toId, const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> *memory, bool lookInDatabase=true, bool updateNewCosts=false, float linearVelocity=0.0f, float angularVelocity=0.0f, bool ignoreDirectLinks=false)</td></tr>
|
||
<tr class="memdesc:a1ec6b9506985624f31fb2091219cb142"><td class="mdescLeft"> </td><td class="mdescRight">Dijkstra path through the live <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> pose graph. <br /></td></tr>
|
||
<tr class="separator:a1ec6b9506985624f31fb2091219cb142"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3d6e74a018b07cd52151e3e168f6384c" id="r_a3d6e74a018b07cd52151e3e168f6384c"><td class="memItemLeft" align="right" valign="top">int RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a3d6e74a018b07cd52151e3e168f6384c">findNearestNode</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> > &poses, const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> &targetPose, float *distance=0)</td></tr>
|
||
<tr class="memdesc:a3d6e74a018b07cd52151e3e168f6384c"><td class="mdescLeft"> </td><td class="mdescRight">Id of the nearest pose to <code>targetPose</code>. <br /></td></tr>
|
||
<tr class="separator:a3d6e74a018b07cd52151e3e168f6384c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a92dfe14b22f897e11bf5bf3f7a7c9157" id="r_a92dfe14b22f897e11bf5bf3f7a7c9157"><td class="memItemLeft" align="right" valign="top">std::map< int, float > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157">findNearestNodes</a> (int nodeId, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, float radius, float angle=0.0f, int k=0)</td></tr>
|
||
<tr class="memdesc:a92dfe14b22f897e11bf5bf3f7a7c9157"><td class="mdescLeft"> </td><td class="mdescRight">Spatial neighbors of a node (KD-tree radius or k-NN search). <br /></td></tr>
|
||
<tr class="separator:a92dfe14b22f897e11bf5bf3f7a7c9157"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a70a5f4b17aa3bb54cad151c9f290ff7f" id="r_a70a5f4b17aa3bb54cad151c9f290ff7f"><td class="memItemLeft" align="right" valign="top">std::map< int, float > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a70a5f4b17aa3bb54cad151c9f290ff7f">findNearestNodes</a> (const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &targetPose, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, float radius, float angle=0.0f, int k=0)</td></tr>
|
||
<tr class="memdesc:a70a5f4b17aa3bb54cad151c9f290ff7f"><td class="mdescLeft"> </td><td class="mdescRight">Spatial neighbors of a pose (KD-tree radius or k-NN search). <br /></td></tr>
|
||
<tr class="separator:a70a5f4b17aa3bb54cad151c9f290ff7f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a8cd823f440a4512407ef78d76ff1dbbf" id="r_a8cd823f440a4512407ef78d76ff1dbbf"><td class="memItemLeft" align="right" valign="top"><a id="a8cd823f440a4512407ef78d76ff1dbbf" name="a8cd823f440a4512407ef78d76ff1dbbf"></a>
|
||
std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>findNearestPoses</b> (int nodeId, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, float radius, float angle=0.0f, int k=0)</td></tr>
|
||
<tr class="memdesc:a8cd823f440a4512407ef78d76ff1dbbf"><td class="mdescLeft"> </td><td class="mdescRight">Like <a class="el" href="namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157">findNearestNodes(int,const std::map<int,Transform>&,float,float,int)</a> but returns full <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> values. <br /></td></tr>
|
||
<tr class="separator:a8cd823f440a4512407ef78d76ff1dbbf"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a236de727a38e51699fe73ff61b459d95" id="r_a236de727a38e51699fe73ff61b459d95"><td class="memItemLeft" align="right" valign="top">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a236de727a38e51699fe73ff61b459d95">findNearestPoses</a> (const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &targetPose, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, float radius, float angle=0.0f, int k=0)</td></tr>
|
||
<tr class="separator:a236de727a38e51699fe73ff61b459d95"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a52dbbfb5099e97699f2ead9139891a5f" id="r_a52dbbfb5099e97699f2ead9139891a5f"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a52dbbfb5099e97699f2ead9139891a5f">findNearestNodes</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> > &nodes, const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> &targetPose, int k)</td></tr>
|
||
<tr class="separator:a52dbbfb5099e97699f2ead9139891a5f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af9e81a0b31730adb292591b79f45c87e" id="r_af9e81a0b31730adb292591b79f45c87e"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#af9e81a0b31730adb292591b79f45c87e">getNodesInRadius</a> (int nodeId, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &nodes, float radius)</td></tr>
|
||
<tr class="separator:af9e81a0b31730adb292591b79f45c87e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4f7f712868babb4cc74f7fe2cc366620" id="r_a4f7f712868babb4cc74f7fe2cc366620"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a4f7f712868babb4cc74f7fe2cc366620">getNodesInRadius</a> (const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &targetPose, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &nodes, float radius)</td></tr>
|
||
<tr class="separator:a4f7f712868babb4cc74f7fe2cc366620"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae487257302634dff8248188e2ed69043" id="r_ae487257302634dff8248188e2ed69043"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#ae487257302634dff8248188e2ed69043">getPosesInRadius</a> (int nodeId, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &nodes, float radius, float angle=0.0f)</td></tr>
|
||
<tr class="separator:ae487257302634dff8248188e2ed69043"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0851e81af5d331032ec790a10bb4302f" id="r_a0851e81af5d331032ec790a10bb4302f"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a0851e81af5d331032ec790a10bb4302f">getPosesInRadius</a> (const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &targetPose, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &nodes, float radius, float angle=0.0f)</td></tr>
|
||
<tr class="separator:a0851e81af5d331032ec790a10bb4302f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3cd2009752bc8e39ec00f7f08cfd4a39" id="r_a3cd2009752bc8e39ec00f7f08cfd4a39"><td class="memItemLeft" align="right" valign="top">float RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a3cd2009752bc8e39ec00f7f08cfd4a39">computePathLength</a> (const std::vector< std::pair< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > &path)</td></tr>
|
||
<tr class="memdesc:a3cd2009752bc8e39ec00f7f08cfd4a39"><td class="mdescLeft"> </td><td class="mdescRight">Path length along an ordered list of poses. <br /></td></tr>
|
||
<tr class="separator:a3cd2009752bc8e39ec00f7f08cfd4a39"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a14376d7f2365ab41e5c361876c999277" id="r_a14376d7f2365ab41e5c361876c999277"><td class="memItemLeft" align="right" valign="top">float RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a14376d7f2365ab41e5c361876c999277">computePathLength</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &path)</td></tr>
|
||
<tr class="memdesc:a14376d7f2365ab41e5c361876c999277"><td class="mdescLeft"> </td><td class="mdescRight">Path length in map iteration order. <br /></td></tr>
|
||
<tr class="separator:a14376d7f2365ab41e5c361876c999277"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0a04ab5289c258725555d6c18a076094" id="r_a0a04ab5289c258725555d6c18a076094"><td class="memItemLeft" align="right" valign="top">std::list< std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a0a04ab5289c258725555d6c18a076094">getPaths</a> (std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > poses, const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > &links)</td></tr>
|
||
<tr class="memdesc:a0a04ab5289c258725555d6c18a076094"><td class="mdescLeft"> </td><td class="mdescRight">Splits poses into chains connected only by neighbor links. <br /></td></tr>
|
||
<tr class="separator:a0a04ab5289c258725555d6c18a076094"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a39f8c9011cb5b7652003df9275c88410" id="r_a39f8c9011cb5b7652003df9275c88410"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1graph.html#a39f8c9011cb5b7652003df9275c88410">computeMinMax</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, cv::Vec3f &min, cv::Vec3f &max)</td></tr>
|
||
<tr class="memdesc:a39f8c9011cb5b7652003df9275c88410"><td class="mdescLeft"> </td><td class="mdescRight">Axis-aligned bounding box of pose positions. <br /></td></tr>
|
||
<tr class="separator:a39f8c9011cb5b7652003df9275c88410"><td class="memSeparator" colspan="2"> </td></tr>
|
||
</table>
|
||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||
<div class="textblock"><p>Pose-graph I/O, trajectory metrics, link utilities, and path planning. </p>
|
||
<p>Functions operate on maps of signature ids to <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> poses and <a class="el" href="classrtabmap_1_1Link.html">Link</a> constraints (typically stored as <code>std::multimap<int, <a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a>></code> keyed by the source node id).</p>
|
||
<p>Main groups:</p><ul>
|
||
<li><b>I/O:</b> <a class="el" href="namespacertabmap_1_1graph.html#af5622dec3112ea0b5154056bde132d46">exportPoses()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a5c0eb890db7dba1c353d57595ccbdc6e">importPoses()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a96a6c2e8348e3d9cfd8b1770d17da9b2">exportGPS()</a></li>
|
||
<li><b>Evaluation:</b> <a class="el" href="namespacertabmap_1_1graph.html#a3c9effdb0d7c235dc1b8d7e3f8487c67">calcKittiSequenceErrors()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a83c41a7cdd595ae6f76d3f1c5140c215">calcRelativeErrors()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a5c36e32a4acd10ac3cdbbf7d73591f88">calcRMSE()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a4691b760dfafe6d93de514c96fa55e0e">computeMaxGraphErrors()</a></li>
|
||
<li><b>Links:</b> <a class="el" href="namespacertabmap_1_1graph.html#aaa0b06795dea514ad1d5fdd4626d32ec">findLink()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a308c9331cd3dd36a776517e64b33bd82">findLinks()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a592918d54b32d6f13236de85958da300">filterLinks()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a5d11e3cccfeca97d570c528858863dd2">filterDuplicateLinks()</a></li>
|
||
<li><b>Spatial queries:</b> <a class="el" href="namespacertabmap_1_1graph.html#a3d6e74a018b07cd52151e3e168f6384c">findNearestNode()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157">findNearestNodes()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a8213a5876c86611ee4c832981eb1e7de">frustumPosesFiltering()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a1906b8b4ad4b7ffc955d22c4996b1506">radiusPosesFiltering()</a></li>
|
||
<li><b>Planning:</b> <a class="el" href="namespacertabmap_1_1graph.html#a5ec6c3883f73181d9458c5905c0aa0ea">computePath()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a3cd2009752bc8e39ec00f7f08cfd4a39">computePathLength()</a>, <a class="el" href="namespacertabmap_1_1graph.html#a0a04ab5289c258725555d6c18a076094">getPaths()</a> </li>
|
||
</ul>
|
||
</div><h2 class="groupheader">Function Documentation</h2>
|
||
<a id="af5622dec3112ea0b5154056bde132d46" name="af5622dec3112ea0b5154056bde132d46"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af5622dec3112ea0b5154056bde132d46">◆ </a></span>exportPoses()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool RTABMAP_CORE_EXPORT rtabmap::graph::exportPoses </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>filePath</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>format</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>constraints</em> = <code>std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, double > & </td>
|
||
<td class="paramname"><em>stamps</em> = <code>std::map< int, double >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> & </td>
|
||
<td class="paramname"><em>parameters</em> = <code><a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>()</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Writes poses (and optional constraints) to disk. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">filePath</td><td>Output path; extension may be appended from <code>format</code>. </td></tr>
|
||
<tr><td class="paramname">format</td><td>Export format:<ul>
|
||
<li><code>0</code> Raw text (<code>.txt</code>): r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz</li>
|
||
<li><code>1</code> RGBD-SLAM format, in motion capture frame like the ground truth of RGB-D SLAM Dataset (requires <code>stamps</code>) : stamp x y z qx qy qz qw</li>
|
||
<li><code>10</code> Like <code>1</code> without coordinate-frame change (i.e., in base frame) : stamp x y z qx qy qz qw</li>
|
||
<li><code>11</code> Like <code>10</code> with landmark ids after positive ids : stamp x y z qx qy qz qw id</li>
|
||
<li><code>2</code> KITTI odometry format : r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz</li>
|
||
<li><code>3</code> TORO graph (requires <code>constraints</code>; uses <code>parameters</code>)</li>
|
||
<li><code>4</code> g2o (requires <code>constraints</code>; uses <code>parameters</code>) </li>
|
||
</ul>
|
||
</td></tr>
|
||
<tr><td class="paramname">poses</td><td>Node id → pose. </td></tr>
|
||
<tr><td class="paramname">constraints</td><td>Required for formats <code>3</code> and <code>4</code>. </td></tr>
|
||
<tr><td class="paramname">stamps</td><td>Required for formats <code>1</code>, <code>10</code>, and <code>11</code> (same size as <code>poses</code>). </td></tr>
|
||
<tr><td class="paramname">parameters</td><td>Optional optimizer parameters for formats <code>3</code> and <code>4</code>. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>False on I/O or validation error. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5c0eb890db7dba1c353d57595ccbdc6e" name="a5c0eb890db7dba1c353d57595ccbdc6e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5c0eb890db7dba1c353d57595ccbdc6e">◆ </a></span>importPoses()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool RTABMAP_CORE_EXPORT rtabmap::graph::importPoses </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>filePath</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>format</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > * </td>
|
||
<td class="paramname"><em>constraints</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::map< int, double > * </td>
|
||
<td class="paramname"><em>stamps</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Loads poses (and optional constraints) from disk. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">filePath</td><td>Input path. </td></tr>
|
||
<tr><td class="paramname">format</td><td>Import format:<ul>
|
||
<li><code>0</code> Raw text: 3×4 matrix per line (<code><a class="el" href="classrtabmap_1_1Transform.html#a8358aacfcddec4ab82c43c758cad0b75" title="Parses a transform from a string representation. Supported formats:">Transform::fromString()</a></code>)</li>
|
||
<li><code>1</code> RGBD-SLAM motion capture: stamp x y z qw qx qy qz (applies optical-frame conversion)</li>
|
||
<li><code>2</code> KITTI odometry: 3×4 matrix per line (applies optical-frame conversion)</li>
|
||
<li><code>3</code> TORO graph (fills <code>constraints</code>)</li>
|
||
<li><code>4</code> g2o (not supported yet)</li>
|
||
<li><code>5</code> NewCollege: stamp x y (2D; first pose is origin)</li>
|
||
<li><code>6</code> Malaga Urban <a class="el" href="classrtabmap_1_1GPS.html" title="WGS84 GPS fix attached to a sensor sample or graph node.">GPS</a>: 25-field <code>*_GPS.txt</code> line (local X/Y/Z)</li>
|
||
<li><code>7</code> St Lucia INS: 12-field log (<a class="el" href="classrtabmap_1_1GPS.html" title="WGS84 GPS fix attached to a sensor sample or graph node.">GPS</a> → local ENU + roll/pitch/yaw)</li>
|
||
<li><code>8</code> Karlsruhe: timestamp lat lon alt x y z roll pitch yaw (first pose is origin)</li>
|
||
<li><code>9</code> EuRoC MAV: stamp x y z qw qx qy qz vx vy vz vr vp vy ax ay az (17 CSV fields)</li>
|
||
<li><code>10</code> RGBD-SLAM like <code>1</code> without coordinate-frame change</li>
|
||
<li><code>11</code> RGBD-SLAM like <code>10</code> with node id as 9th field: stamp x y z qw qx qy qz id</li>
|
||
<li><code>12</code> RGBD Bonn dynamic dataset format (stamp + pose; Bonn-specific frame conversion) </li>
|
||
</ul>
|
||
</td></tr>
|
||
<tr><td class="paramname">poses</td><td>Output node id → pose. </td></tr>
|
||
<tr><td class="paramname">constraints</td><td>Optional output links (format <code>3</code> only). </td></tr>
|
||
<tr><td class="paramname">stamps</td><td>Optional output timestamps (formats <code>1</code>, <code>5</code>–<code>9</code>, <code>10</code>–<code>12</code> when present in file). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>False on I/O or parse error. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a96a6c2e8348e3d9cfd8b1770d17da9b2" name="a96a6c2e8348e3d9cfd8b1770d17da9b2"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a96a6c2e8348e3d9cfd8b1770d17da9b2">◆ </a></span>exportGPS()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool RTABMAP_CORE_EXPORT rtabmap::graph::exportGPS </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>filePath</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1GPS.html">GPS</a> > & </td>
|
||
<td class="paramname"><em>gpsValues</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned int </td>
|
||
<td class="paramname"><em>rgba</em> = <code>0xFFFFFFFF</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Exports <a class="el" href="classrtabmap_1_1GPS.html" title="WGS84 GPS fix attached to a sensor sample or graph node.">GPS</a> samples to a PLY point cloud. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">filePath</td><td>Output <code>.ply</code> path. </td></tr>
|
||
<tr><td class="paramname">gpsValues</td><td>Node id → <a class="el" href="classrtabmap_1_1GPS.html">GPS</a> fix. </td></tr>
|
||
<tr><td class="paramname">rgba</td><td>Point color (default opaque white). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3c9effdb0d7c235dc1b8d7e3f8487c67" name="a3c9effdb0d7c235dc1b8d7e3f8487c67"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3c9effdb0d7c235dc1b8d7e3f8487c67">◆ </a></span>calcKittiSequenceErrors()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::graph::calcKittiSequenceErrors </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses_gt</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses_result</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>t_err</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>r_err</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>KITTI odometry benchmark error over fixed trajectory segments. </p>
|
||
<p>For each start pose (every 10 frames) and segment length in {100, 200, …, 800} m along <code>poses_gt</code>, compares the relative transform GT vs estimate and accumulates normalized errors. The returned values are the mean over all valid segments.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses_gt</td><td>Ground-truth poses in temporal order (one per frame). </td></tr>
|
||
<tr><td class="paramname">poses_result</td><td>Estimated poses (same length and ordering as <code>poses_gt</code>). </td></tr>
|
||
<tr><td class="paramname">t_err</td><td>Output mean translation error (%): segment translation error (m) divided by segment length, averaged, then × 100. </td></tr>
|
||
<tr><td class="paramname">r_err</td><td>Output mean rotation error (deg/m): segment rotation error (rad) divided by segment length, averaged, then converted to deg/m. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section see"><dt>See also</dt><dd><a href="http://www.cvlibs.net/datasets/kitti/eval_odometry.php">http://www.cvlibs.net/datasets/kitti/eval_odometry.php</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a83c41a7cdd595ae6f76d3f1c5140c215" name="a83c41a7cdd595ae6f76d3f1c5140c215"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a83c41a7cdd595ae6f76d3f1c5140c215">◆ </a></span>calcRelativeErrors()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::graph::calcRelativeErrors </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses_gt</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses_result</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>t_err</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>r_err</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Mean frame-to-frame relative pose error (RPE-style, one step). </p>
|
||
<p>For each consecutive pair <code>(i, i+1)</code>, builds the relative motion in ground truth and in the estimate, then measures how much they differ:</p><ul>
|
||
<li>translation: Euclidean distance between the two relative transforms (m)</li>
|
||
<li>rotation: angle between the two relative transforms (rad → deg)</li>
|
||
</ul>
|
||
<p>Returns the arithmetic mean over all <code>N-1</code> pairs (<code>N</code> = trajectory length). Unlike <a class="el" href="namespacertabmap_1_1graph.html#a3c9effdb0d7c235dc1b8d7e3f8487c67">calcKittiSequenceErrors()</a>, there is no fixed segment length and no path-length normalization.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses_gt</td><td>Ground-truth poses in temporal order (one per frame). </td></tr>
|
||
<tr><td class="paramname">poses_result</td><td>Estimated poses (same length and ordering as <code>poses_gt</code>). </td></tr>
|
||
<tr><td class="paramname">t_err</td><td>Output mean translation error over consecutive pairs (m). </td></tr>
|
||
<tr><td class="paramname">r_err</td><td>Output mean rotation error over consecutive pairs (deg). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5c36e32a4acd10ac3cdbbf7d73591f88" name="a5c36e32a4acd10ac3cdbbf7d73591f88"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5c36e32a4acd10ac3cdbbf7d73591f88">◆ </a></span>calcRMSE()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::graph::calcRMSE </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>groundTruth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>translational_rmse</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>translational_mean</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>translational_median</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>translational_std</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>translational_min</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>translational_max</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>rotational_rmse</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>rotational_mean</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>rotational_median</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>rotational_std</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>rotational_min</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>rotational_max</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>align2D</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Absolute trajectory error (ATE) with Sim(3)-style alignment (TUM RGB-D tool). </p>
|
||
<p>Only poses whose id exists in both <code>groundTruth</code> and <code>poses</code> are compared. An alignment transform <code>t</code> is estimated so that per-pose error is measured after bringing the estimate into the reference frame:</p><ul>
|
||
<li>If more than five poses match: <code>t</code> from SVD on position correspondences (estimate positions → ground-truth positions; z ignored when <code>align2D</code> is true).</li>
|
||
<li>Otherwise: <code>t</code> = groundTruth[firstId] * poses[firstId]⁻¹ using the first matched id.</li>
|
||
</ul>
|
||
<p>For each matched pose, after <code>aligned = t * poses[id]</code>:</p><ul>
|
||
<li><b>Translational error:</b> Euclidean distance between <code>aligned</code> and <code>groundTruth[id]</code> (m).</li>
|
||
<li><b>Rotational error:</b> Angle between the poses' +X axes (deg).</li>
|
||
</ul>
|
||
<p>The eight <code>@p translational_*</code> and <code>@p rotational_*</code> outputs are statistics over those per-pose errors (all matched poses). They are set to <code>0</code> when no id matches.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">groundTruth</td><td>Reference trajectory (node id → pose). </td></tr>
|
||
<tr><td class="paramname">poses</td><td>Estimated trajectory; ids not in <code>groundTruth</code> are skipped. </td></tr>
|
||
<tr><td class="paramname">translational_rmse</td><td>Root mean square of translational errors (m). </td></tr>
|
||
<tr><td class="paramname">translational_mean</td><td>Arithmetic mean of translational errors (m). </td></tr>
|
||
<tr><td class="paramname">translational_median</td><td>Middle sample in matched-pose iteration order (m). </td></tr>
|
||
<tr><td class="paramname">translational_std</td><td>Standard deviation of translational errors (m). </td></tr>
|
||
<tr><td class="paramname">translational_min</td><td>Minimum translational error (m). </td></tr>
|
||
<tr><td class="paramname">translational_max</td><td>Maximum translational error (m). </td></tr>
|
||
<tr><td class="paramname">rotational_rmse</td><td>Root mean square of rotational errors (deg). </td></tr>
|
||
<tr><td class="paramname">rotational_mean</td><td>Arithmetic mean of rotational errors (deg). </td></tr>
|
||
<tr><td class="paramname">rotational_median</td><td>Middle sample in matched-pose iteration order (deg). </td></tr>
|
||
<tr><td class="paramname">rotational_std</td><td>Standard deviation of rotational errors (deg). </td></tr>
|
||
<tr><td class="paramname">rotational_min</td><td>Minimum rotational error (deg). </td></tr>
|
||
<tr><td class="paramname">rotational_max</td><td>Maximum rotational error (deg). </td></tr>
|
||
<tr><td class="paramname">align2D</td><td>If true, alignment uses x/y only (z set to 0 for correspondence); 3D if false. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Alignment transform <code>t</code> applied as <code>t * poses[id]</code> before error computation. </dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd><a href="https://vision.in.tum.de/data/datasets/rgbd-dataset">https://vision.in.tum.de/data/datasets/rgbd-dataset</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a4691b760dfafe6d93de514c96fa55e0e" name="a4691b760dfafe6d93de514c96fa55e0e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a4691b760dfafe6d93de514c96fa55e0e">◆ </a></span>computeMaxGraphErrors()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="structrtabmap_1_1graph_1_1MaxGraphErrors.html">MaxGraphErrors</a> RTABMAP_CORE_EXPORT rtabmap::graph::computeMaxGraphErrors </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>for3DoF</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Finds the worst pose-graph constraint residuals after optimization. </p>
|
||
<p>Iterates over <code>links</code> and, for each non-self-referenced edge (<code>from != to</code>):</p><ol type="1">
|
||
<li>Looks up <code>T_from</code> and <code>T_to</code> in <code>poses</code> (returns default <a class="el" href="structrtabmap_1_1graph_1_1MaxGraphErrors.html">MaxGraphErrors</a> if any endpoint pose is missing, null, or not invertible).</li>
|
||
<li>Builds the relative pose implied by the optimized poses:<ul>
|
||
<li>Normal link: <code>t = T_from⁻¹ · T_to</code></li>
|
||
<li><a class="el" href="classrtabmap_1_1Landmark.html" title="Optimized pose of a visual landmark (e.g. ArUco/AprilTag) in the map.">Landmark</a> (<code>from < 0</code>): <code>t = T_to⁻¹ · T_from</code>, link measurement inverted</li>
|
||
</ul>
|
||
</li>
|
||
<li>Compares <code>t</code> to the link transform:<ul>
|
||
<li><b>Linear error:</b> max |Δx|, |Δy|, and |Δz| (z ignored when <code>for3DoF</code> is true).</li>
|
||
<li><b>Angular error:</b> full 3D angle between <code>t</code> and the link, or yaw-only if <code>for3DoF</code>; skipped for <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9">Link::kLandmark</a> when the information matrix does not constrain yaw.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Normalizes by link uncertainty: <code>error / sqrt(variance)</code> using the link information matrix (largest diagonal variance for translation/rotation).</li>
|
||
</ol>
|
||
<p>The returned <a class="el" href="structrtabmap_1_1graph_1_1MaxGraphErrors.html">MaxGraphErrors</a> holds the link with the highest linear and angular <em>ratios</em> (not necessarily the largest absolute error).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Optimized node poses (must contain every <code>from</code> and <code>to</code> id used). </td></tr>
|
||
<tr><td class="paramname">links</td><td>Graph constraints (typically <code>std::multimap<int, <a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a>></code> keyed by <code>from</code>). </td></tr>
|
||
<tr><td class="paramname">for3DoF</td><td>If true, linear error uses x/y only and angular error compares yaw only. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="structrtabmap_1_1graph_1_1MaxGraphErrors.html">MaxGraphErrors</a>; fields stay <code>-1</code> when no valid link was checked or on early abort. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a6c009c4c819abe37ec2ca6d041edd92b" name="a6c009c4c819abe37ec2ca6d041edd92b"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a6c009c4c819abe37ec2ca6d041edd92b">◆ </a></span>getMaxOdomInf()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< double > RTABMAP_CORE_EXPORT rtabmap::graph::getMaxOdomInf </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Maximum information-matrix diagonal over odometry neighbor links. </p>
|
||
<p>Scans <code>links</code> of type <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf">Link::kNeighbor</a> or <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db">Link::kNeighborMerged</a> and, for each dof (x, y, z, roll, pitch, yaw), keeps the largest diagonal entry of the 6×6 information matrix.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">links</td><td>Graph constraints (multimap keyed by source id). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Six maximum information values, or an empty vector if no neighbor links exist. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aaa0b06795dea514ad1d5fdd4626d32ec" name="aaa0b06795dea514ad1d5fdd4626d32ec"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aaa0b06795dea514ad1d5fdd4626d32ec">◆ </a></span>findLink() <span class="overload">[1/6]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> >::iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink </td>
|
||
<td>(</td>
|
||
<td class="paramtype">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>checkBothWays</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> </td>
|
||
<td class="paramname"><em>type</em> = <code><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a></code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Finds the first link from <code>from</code> to <code>to</code> in a multimap keyed by source id. </p>
|
||
<p>Iterates all entries with key <code>from</code> and matches the destination (and optionally <code>type</code>). When <code>checkBothWays</code> is true, also searches key <code>to</code> for a link back to <code>from</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">links</td><td><a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a> multimap (<code>key</code> = source node id). </td></tr>
|
||
<tr><td class="paramname">from</td><td>Source node id. </td></tr>
|
||
<tr><td class="paramname">to</td><td>Destination node id. </td></tr>
|
||
<tr><td class="paramname">checkBothWays</td><td>If true, also match <code>to → from</code>. </td></tr>
|
||
<tr><td class="paramname">type</td><td>Required link type, or <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a> to accept any type. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Iterator to the link, or <code>links.end()</code> if not found. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ad91079c9cdd934c8ba8927d3c52b40e5" name="ad91079c9cdd934c8ba8927d3c52b40e5"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ad91079c9cdd934c8ba8927d3c52b40e5">◆ </a></span>findLink() <span class="overload">[2/6]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > >::iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink </td>
|
||
<td>(</td>
|
||
<td class="paramtype">std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>checkBothWays</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> </td>
|
||
<td class="paramname"><em>type</em> = <code><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a></code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <code>std::multimap<int, std::pair<int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e" title="Link category and filter sentinels.">Link::Type</a>>></code>. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a06ed3112247c13dcf494665c1d9df327" name="a06ed3112247c13dcf494665c1d9df327"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a06ed3112247c13dcf494665c1d9df327">◆ </a></span>findLink() <span class="overload">[3/6]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, int >::iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink </td>
|
||
<td>(</td>
|
||
<td class="paramtype">std::multimap< int, int > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>checkBothWays</em> = <code>true</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <code>std::multimap<int, int></code>. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7695c60c6bb375057586449674d42eea" name="a7695c60c6bb375057586449674d42eea"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7695c60c6bb375057586449674d42eea">◆ </a></span>findLink() <span class="overload">[4/6]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> >::const_iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>checkBothWays</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> </td>
|
||
<td class="paramname"><em>type</em> = <code><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a></code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Const <code>std::multimap<int, <a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a>></code>. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a8200ae3a6bd27ee2cee4b71d85ace3e9" name="a8200ae3a6bd27ee2cee4b71d85ace3e9"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a8200ae3a6bd27ee2cee4b71d85ace3e9">◆ </a></span>findLink() <span class="overload">[5/6]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > >::const_iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, std::pair< int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> > > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>checkBothWays</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> </td>
|
||
<td class="paramname"><em>type</em> = <code><a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a></code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Const <code>std::multimap<int, std::pair<int, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e" title="Link category and filter sentinels.">Link::Type</a>>></code>. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aecdcc01682092f4c89257d070aa2a437" name="aecdcc01682092f4c89257d070aa2a437"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aecdcc01682092f4c89257d070aa2a437">◆ </a></span>findLink() <span class="overload">[6/6]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, int >::const_iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, int > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>checkBothWays</em> = <code>true</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Const <code>std::multimap<int, int></code>. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a308c9331cd3dd36a776517e64b33bd82" name="a308c9331cd3dd36a776517e64b33bd82"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a308c9331cd3dd36a776517e64b33bd82">◆ </a></span>findLinks()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::list< <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT rtabmap::graph::findLinks </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Lists all links incident on node <code>from</code>. </p>
|
||
<p>Outgoing links (<code>link.from() == from</code>) are returned as stored; for incoming links (<code>link.to() == from</code>), the inverse link is returned so the pose of <code>from</code> is always the source frame.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">links</td><td>Graph constraints. </td></tr>
|
||
<tr><td class="paramname">from</td><td>Node id to query. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Incident links (may be empty). </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5d11e3cccfeca97d570c528858863dd2" name="a5d11e3cccfeca97d570c528858863dd2"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5d11e3cccfeca97d570c528858863dd2">◆ </a></span>filterDuplicateLinks()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT rtabmap::graph::filterDuplicateLinks </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Removes duplicate undirected links. </p>
|
||
<p>Keeps the first occurrence of each <code>(from, to)</code> or <code>(to, from)</code> pair with the same <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> (see <a class="el" href="namespacertabmap_1_1graph.html#aaa0b06795dea514ad1d5fdd4626d32ec">findLink()</a> with <code>checkBothWays</code>).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">links</td><td>Input link multimap. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Copy without duplicates. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a592918d54b32d6f13236de85958da300" name="a592918d54b32d6f13236de85958da300"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a592918d54b32d6f13236de85958da300">◆ </a></span>filterLinks() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT rtabmap::graph::filterLinks </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</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> </td>
|
||
<td class="paramname"><em>filteredType</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>inverted</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Filters links by type or self-reference. </p>
|
||
<ul>
|
||
<li>If <code>filteredType</code> is <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e">kSelfRefLink</a>: exclude self-references (<code>from == to</code>), or include only them when <code>inverted</code> is true.</li>
|
||
<li>Otherwise: exclude links of <code>filteredType</code>, or keep only that type when <code>inverted</code> is true.</li>
|
||
</ul>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">links</td><td>Input links. </td></tr>
|
||
<tr><td class="paramname">filteredType</td><td>Type to filter, or <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e">Link::kSelfRefLink</a> for self-reference filtering. </td></tr>
|
||
<tr><td class="paramname">inverted</td><td>If true, keep the filtered set instead of removing it. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Filtered link container (same structure as input). </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af4dffb2a3eced519378d18bca8fa4419" name="af4dffb2a3eced519378d18bca8fa4419"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af4dffb2a3eced519378d18bca8fa4419">◆ </a></span>filterLinks() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::map< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > RTABMAP_CORE_EXPORT rtabmap::graph::filterLinks </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</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> </td>
|
||
<td class="paramname"><em>filteredType</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>inverted</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. For <code>std::map<int, <a class="el" href="classrtabmap_1_1Link.html" title="Directed constraint between two nodes in RTAB-Map's pose graph.">Link</a>></code>. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a8213a5876c86611ee4c832981eb1e7de" name="a8213a5876c86611ee4c832981eb1e7de"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a8213a5876c86611ee4c832981eb1e7de">◆ </a></span>frustumPosesFiltering()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT rtabmap::graph::frustumPosesFiltering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>cameraPose</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>horizontalFOV</em> = <code>45.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>verticalFOV</em> = <code>45.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>nearClipPlaneDistance</em> = <code>0.1f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>farClipPlaneDistance</em> = <code>100.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>negative</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Keeps poses inside (or outside) a camera frustum. </p>
|
||
<p>Transforms each pose position into the frustum defined by <code>cameraPose</code> using <a class="el" href="group__FrustumFiltering.html#gad05921639a3371d2ee0f684b77542330">util3d::frustumFiltering()</a> (this assumes the cameraPose includes the optical rotation of the camera (X right, Y down, Z forward).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Input poses (null poses are skipped) in base frame (X forward, Y left, Z up), </td></tr>
|
||
<tr><td class="paramname">cameraPose</td><td>Frustum origin and orientation including the optical rotation of the camera (X right, Y down, Z forward). </td></tr>
|
||
<tr><td class="paramname">horizontalFOV</td><td>Horizontal field of view (deg); see <a class="el" href="classrtabmap_1_1CameraModel.html#a12abd4cac897f48bf862a96f0eba1d65">CameraModel::horizontalFOV()</a>. </td></tr>
|
||
<tr><td class="paramname">verticalFOV</td><td>Vertical field of view (deg); see <a class="el" href="classrtabmap_1_1CameraModel.html#af6226e43afcb69259b137bbe50099537">CameraModel::verticalFOV()</a>. </td></tr>
|
||
<tr><td class="paramname">nearClipPlaneDistance</td><td>Near clipping distance (m). </td></tr>
|
||
<tr><td class="paramname">farClipPlaneDistance</td><td>Far clipping distance (m). </td></tr>
|
||
<tr><td class="paramname">negative</td><td>If false, keep poses inside the frustum; if true, keep poses outside. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Subset of <code>poses</code> passing the filter. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a1906b8b4ad4b7ffc955d22c4996b1506" name="a1906b8b4ad4b7ffc955d22c4996b1506"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a1906b8b4ad4b7ffc955d22c4996b1506">◆ </a></span>radiusPosesFiltering()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT rtabmap::graph::radiusPosesFiltering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angle</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>keepLatest</em> = <code>true</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Subsamples poses that are spatially (and optionally angularly) redundant. </p>
|
||
<p>For each pose not yet processed, finds all poses within <code>radius</code> (KD-tree). When <code>angle</code> > 0, only poses whose +X axis differs by at most <code>angle</code> (rad) are grouped. From each group, keeps one pose: the latest in map order if <code>keepLatest</code>, otherwise the earliest. The first and last poses of the input map are always kept.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Input trajectory (map iteration order defines “latest/oldest”). </td></tr>
|
||
<tr><td class="paramname">radius</td><td>Clustering radius (m); if <code>≤ 0</code> or fewer than three poses, returns <code>poses</code> unchanged. </td></tr>
|
||
<tr><td class="paramname">angle</td><td>Max heading difference within a cluster (rad); <code>0</code> ignores orientation. </td></tr>
|
||
<tr><td class="paramname">keepLatest</td><td>If true, keep the latest pose per cluster; otherwise the earliest. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Subsampled poses. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="acaf3e4ffcfc830747c3c3cb02a8ea155" name="acaf3e4ffcfc830747c3c3cb02a8ea155"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#acaf3e4ffcfc830747c3c3cb02a8ea155">◆ </a></span>radiusPosesClustering()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, int > RTABMAP_CORE_EXPORT rtabmap::graph::radiusPosesClustering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angle</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Radius-neighbor clustering of poses. </p>
|
||
<p>For each pose, inserts <code>(queryId, neighborId)</code> into the output for every other pose within <code>radius</code> (and within <code>angle</code> of the query heading when <code>angle</code> > 0).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Input poses. </td></tr>
|
||
<tr><td class="paramname">radius</td><td>Search radius (m); no pairs if <code>≤ 0</code> or fewer than two poses. </td></tr>
|
||
<tr><td class="paramname">angle</td><td>Max heading difference (rad); <code>0</code> ignores orientation. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Multimap of pose id → neighbor id (both ids from <code>poses</code>). </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aabda884597e6b8df053d04ee56cfaf6f" name="aabda884597e6b8df053d04ee56cfaf6f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aabda884597e6b8df053d04ee56cfaf6f">◆ </a></span>reduceGraph()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::graph::reduceGraph </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::multimap< int, int > & </td>
|
||
<td class="paramname"><em>hyperNodes</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>hyperLinks</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Reduces a pose graph into hyper-nodes and hyper-links. </p>
|
||
<p><b>Hyper-nodes:</b> clusters poses connected by non-neighbor loop-closure links. Clustering starts from the largest id downward; each cluster is keyed by its parent (hyper-node) id.</p>
|
||
<p><b>Hyper-links:</b> for each <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf">Link::kNeighbor</a> or <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db">Link::kNeighborMerged</a> link between different clusters, builds one merged <a class="el" href="classrtabmap_1_1Link.html">Link</a> along the shortest path through intra-cluster closure links (Dijkstra with unit cost).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Input optimized poses. </td></tr>
|
||
<tr><td class="paramname">links</td><td>Input constraints (should be unique per directed edge for closure links). </td></tr>
|
||
<tr><td class="paramname">hyperNodes</td><td>Output <code>hyperNodeId → childPoseId</code> membership. </td></tr>
|
||
<tr><td class="paramname">hyperLinks</td><td>Output links between hyper-nodes (one per hyper-edge, most recent kept). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5ec6c3883f73181d9458c5905c0aa0ea" name="a5ec6c3883f73181d9458c5905c0aa0ea"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5ec6c3883f73181d9458c5905c0aa0ea">◆ </a></span>computePath() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::list< std::pair< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > RTABMAP_CORE_EXPORT rtabmap::graph::computePath </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, int > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>updateNewCosts</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>A* shortest path on a pose graph with Euclidean edge costs. </p>
|
||
<p>Edge cost between adjacent nodes is the Euclidean distance between their poses in <code>poses</code>. Uses <code>costSoFar + distToEnd</code> where <code>distToEnd</code> is the distance to the goal pose.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Node id → pose (must contain every node reached by <code>links</code>). </td></tr>
|
||
<tr><td class="paramname">links</td><td>Directed edges (<code>from</code> → <code>to</code>) keyed by source id. </td></tr>
|
||
<tr><td class="paramname">from</td><td>Start node id. </td></tr>
|
||
<tr><td class="paramname">to</td><td>Goal node id. </td></tr>
|
||
<tr><td class="paramname">updateNewCosts</td><td>If true, use a multimap queue that can decrease keys when a shorter path is found. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Ordered path from <code>from</code> to <code>to</code> (inclusive) with poses; empty if unreachable. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a8acc34fed4cb4e452e8e14d05dafc578" name="a8acc34fed4cb4e452e8e14d05dafc578"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a8acc34fed4cb4e452e8e14d05dafc578">◆ </a></span>computePathDepths()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::map< int, int > RTABMAP_CORE_EXPORT rtabmap::graph::computePathDepths </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, int > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Single-source graph depth via BFS. </p>
|
||
<p>Runs one breadth-first search from <code>from</code> and returns, for every reached node, its depth from <code>from</code> (i.e., the number of links on the shortest path, <code>from</code> itself having depth 0).</p>
|
||
<dl class="section note"><dt>Note</dt><dd>The depth is a number of hops, not a distance: it counts links, and the poses of the nodes play no part in it. The path it stands for is thus not the one <a class="el" href="namespacertabmap_1_1graph.html#a5ec6c3883f73181d9458c5905c0aa0ea">computePath()</a> returns, which minimizes the Euclidean length instead and can walk more links to save meters.</dd></dl>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">links</td><td>Directed edges (<code>from</code> → <code>to</code>) keyed by source id. </td></tr>
|
||
<tr><td class="paramname">from</td><td>Start node id. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>If > 0, only nodes with depth ≤ this value are returned (the frontier is not expanded further); <code>0</code> explores the whole component. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Node id → depth mapping. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae21d02d613df461d6163f9d9a3db7ad2" name="ae21d02d613df461d6163f9d9a3db7ad2"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae21d02d613df461d6163f9d9a3db7ad2">◆ </a></span>computePath() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::list< int > RTABMAP_CORE_EXPORT rtabmap::graph::computePath </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>from</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>to</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>updateNewCosts</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>useSameCostForAllLinks</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Dijkstra shortest path on link constraints. </p>
|
||
<p>Explores outgoing links keyed by <code>link.from()</code>. Edge cost is <code>1</code> when <code>useSameCostForAllLinks</code> is true, otherwise the translation norm of the link transform.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">links</td><td>Constraints keyed by source node id. </td></tr>
|
||
<tr><td class="paramname">from</td><td>Start node id. </td></tr>
|
||
<tr><td class="paramname">to</td><td>Goal node id. </td></tr>
|
||
<tr><td class="paramname">updateNewCosts</td><td>If true, allow cost improvements on open nodes. </td></tr>
|
||
<tr><td class="paramname">useSameCostForAllLinks</td><td>If true, unit edge cost; else use <code>link.transform().getNorm()</code>. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Node ids from <code>from</code> to <code>to</code> (inclusive); empty if unreachable. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a1ec6b9506985624f31fb2091219cb142" name="a1ec6b9506985624f31fb2091219cb142"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a1ec6b9506985624f31fb2091219cb142">◆ </a></span>computePath() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::list< std::pair< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > RTABMAP_CORE_EXPORT rtabmap::graph::computePath </td>
|
||
<td>(</td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>fromId</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>toId</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> * </td>
|
||
<td class="paramname"><em>memory</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>lookInDatabase</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>updateNewCosts</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>linearVelocity</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angularVelocity</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>ignoreDirectLinks</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Dijkstra path through the live <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> pose graph. </p>
|
||
<p>Loads links from <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> (optionally from the database), chains transforms along the chosen path, and returns the accumulated poses. Self-referenced links are skipped.</p>
|
||
<p>By default (<code>linearVelocity</code> and <code>angularVelocity</code> ≤ 0), edge cost is translation distance (m) only. When set > 0, costs are expressed in seconds of motion:</p><ul>
|
||
<li><code>linearVelocity</code> adds <code>linkTranslation / linearVelocity</code> (time to drive the edge at that speed). Used alone it scales every edge by the same factor, so the <b>shortest path is unchanged</b>; set it to your robot’s typical forward speed (e.g. <code>0.5</code> m/s) when you also use <code>angularVelocity</code> so translation and rotation costs are comparable.</li>
|
||
<li><code>angularVelocity</code> adds <code>headingMismatch / angularVelocity</code>, where heading mismatch is the angle between the displacement to the next node and that node’s forward (+X) axis. This is what changes which path is chosen: a chain followed <b>mostly forward</b> (small mismatch) can beat a shorter route through loop closures that require large reorientations (e.g. <code>angularVelocity = 1.0</code> rad/s with <code>linearVelocity = 0.5</code> m/s). With <code>angularVelocity</code> > 0 and <code>linearVelocity</code> ≤ 0, translation is ignored and the path minimizes heading mismatch only (forward-following paths, regardless of distance). This can help loop-closure detection when the map was built with a forward-facing camera: the path stays aligned with how places were observed while driving forward.</li>
|
||
</ul>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">fromId</td><td>Start signature id (<code>≥ 0</code>). </td></tr>
|
||
<tr><td class="paramname">toId</td><td>Goal signature id (<code>≠ 0</code>). </td></tr>
|
||
<tr><td class="paramname">memory</td><td>Graph memory (must not be null). </td></tr>
|
||
<tr><td class="paramname">lookInDatabase</td><td>If true, load links from the database when not already in RAM. </td></tr>
|
||
<tr><td class="paramname">updateNewCosts</td><td>If true, allow cost improvements on open nodes. </td></tr>
|
||
<tr><td class="paramname">linearVelocity</td><td>If > 0, add <code>translationNorm / linearVelocity</code> to edge cost (m/s). </td></tr>
|
||
<tr><td class="paramname">angularVelocity</td><td>If > 0, add rotation time from motion direction change (rad/s). </td></tr>
|
||
<tr><td class="paramname">ignoreDirectLinks</td><td>If true, skip the direct edge between <code>fromId</code> and <code>toId</code>. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Path as <code>(nodeId, pose)</code> pairs; first pose is identity at <code>fromId</code>. Empty if unreachable. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3d6e74a018b07cd52151e3e168f6384c" name="a3d6e74a018b07cd52151e3e168f6384c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3d6e74a018b07cd52151e3e168f6384c">◆ </a></span>findNearestNode()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNode </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> & </td>
|
||
<td class="paramname"><em>targetPose</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float * </td>
|
||
<td class="paramname"><em>distance</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Id of the nearest pose to <code>targetPose</code>. </p>
|
||
<p>Wrapper around <a class="el" href="namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157">findNearestNodes()</a> with <code>radius=0</code>, <code>k=1</code> (1-NN in 3D).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Nodes to search. </td></tr>
|
||
<tr><td class="paramname">targetPose</td><td>Query position (x, y, z only; orientation is not used). </td></tr>
|
||
<tr><td class="paramname">distance</td><td>If not null, set to the squared Euclidean distance of the match. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Closest node id, or <code>0</code> if <code>poses</code> is empty. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a92dfe14b22f897e11bf5bf3f7a7c9157" name="a92dfe14b22f897e11bf5bf3f7a7c9157"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a92dfe14b22f897e11bf5bf3f7a7c9157">◆ </a></span>findNearestNodes() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNodes </td>
|
||
<td>(</td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>nodeId</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angle</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>k</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Spatial neighbors of a node (KD-tree radius or k-NN search). </p>
|
||
<p><code>nodeId</code> is removed from the search set. Requires <code>radius &gt; 0</code> or <code>k &gt; 0</code>. When <code>radius &gt; 0</code>, returns all poses within <code>radius</code> (up to <code>k</code> if <code>k &gt; 0</code>). When <code>radius == 0</code>, returns the <code>k</code> nearest neighbors.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">nodeId</td><td>Query node (must exist in <code>poses</code>); excluded from results. </td></tr>
|
||
<tr><td class="paramname">poses</td><td>Candidate poses. </td></tr>
|
||
<tr><td class="paramname">radius</td><td>Search radius (m). </td></tr>
|
||
<tr><td class="paramname">angle</td><td>Max +X axis angle difference (rad); <code>0</code> ignores heading. </td></tr>
|
||
<tr><td class="paramname">k</td><td>Max neighbors (<code>0</code> = all within radius). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Neighbor id → squared Euclidean distance. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a70a5f4b17aa3bb54cad151c9f290ff7f" name="a70a5f4b17aa3bb54cad151c9f290ff7f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a70a5f4b17aa3bb54cad151c9f290ff7f">◆ </a></span>findNearestNodes() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNodes </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>targetPose</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angle</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>k</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Spatial neighbors of a pose (KD-tree radius or k-NN search). </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">targetPose</td><td>Query pose (position used; orientation used when <code>angle</code> > 0). </td></tr>
|
||
<tr><td class="paramname">poses</td><td>Candidate poses (not modified). </td></tr>
|
||
<tr><td class="paramname">radius</td><td>Search radius (m). </td></tr>
|
||
<tr><td class="paramname">angle</td><td>Max +X axis angle difference (rad); <code>0</code> ignores heading. </td></tr>
|
||
<tr><td class="paramname">k</td><td>Max neighbors (<code>0</code> = all within radius). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Neighbor id → squared Euclidean distance. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a236de727a38e51699fe73ff61b459d95" name="a236de727a38e51699fe73ff61b459d95"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a236de727a38e51699fe73ff61b459d95">◆ </a></span>findNearestPoses()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestPoses </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>targetPose</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angle</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>k</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Query by <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> instead of node id. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a52dbbfb5099e97699f2ead9139891a5f" name="a52dbbfb5099e97699f2ead9139891a5f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a52dbbfb5099e97699f2ead9139891a5f">◆ </a></span>findNearestNodes() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNodes </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> > & </td>
|
||
<td class="paramname"><em>nodes</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> & </td>
|
||
<td class="paramname"><em>targetPose</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>k</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespacertabmap_1_1graph.html#a70a5f4b17aa3bb54cad151c9f290ff7f">findNearestNodes(const Transform&,const std::map<int,Transform>&,float,float,int)</a> with <code>radius=0</code>, <code>k</code> set. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af9e81a0b31730adb292591b79f45c87e" name="af9e81a0b31730adb292591b79f45c87e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af9e81a0b31730adb292591b79f45c87e">◆ </a></span>getNodesInRadius() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::getNodesInRadius </td>
|
||
<td>(</td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>nodeId</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>nodes</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157">findNearestNodes(int,const std::map<int,Transform>&,float,float,int)</a>. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a4f7f712868babb4cc74f7fe2cc366620" name="a4f7f712868babb4cc74f7fe2cc366620"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a4f7f712868babb4cc74f7fe2cc366620">◆ </a></span>getNodesInRadius() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::getNodesInRadius </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>targetPose</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>nodes</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespacertabmap_1_1graph.html#a70a5f4b17aa3bb54cad151c9f290ff7f">findNearestNodes(const Transform&,const std::map<int,Transform>&,float,float,int)</a>. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae487257302634dff8248188e2ed69043" name="ae487257302634dff8248188e2ed69043"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae487257302634dff8248188e2ed69043">◆ </a></span>getPosesInRadius() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT rtabmap::graph::getPosesInRadius </td>
|
||
<td>(</td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>nodeId</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>nodes</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angle</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000004">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespacertabmap_1_1graph.html#a8cd823f440a4512407ef78d76ff1dbbf">findNearestPoses(int,const std::map<int,Transform>&,float,float,int)</a>. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a0851e81af5d331032ec790a10bb4302f" name="a0851e81af5d331032ec790a10bb4302f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a0851e81af5d331032ec790a10bb4302f">◆ </a></span>getPosesInRadius() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > RTABMAP_CORE_EXPORT rtabmap::graph::getPosesInRadius </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>targetPose</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>nodes</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>angle</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000005">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespacertabmap_1_1graph.html#a236de727a38e51699fe73ff61b459d95">findNearestPoses(const Transform&,const std::map<int,Transform>&,float,float,int)</a>. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3cd2009752bc8e39ec00f7f08cfd4a39" name="a3cd2009752bc8e39ec00f7f08cfd4a39"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3cd2009752bc8e39ec00f7f08cfd4a39">◆ </a></span>computePathLength() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">float RTABMAP_CORE_EXPORT rtabmap::graph::computePathLength </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< std::pair< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > & </td>
|
||
<td class="paramname"><em>path</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Path length along an ordered list of poses. </p>
|
||
<p>Sums <code>path[i].second.getDistance(path[i+1].second)</code> for consecutive entries.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">path</td><td>Ordered <code>(nodeId, pose)</code> pairs. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Total length (m), or <code>0</code> if fewer than two poses. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a14376d7f2365ab41e5c361876c999277" name="a14376d7f2365ab41e5c361876c999277"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a14376d7f2365ab41e5c361876c999277">◆ </a></span>computePathLength() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">float RTABMAP_CORE_EXPORT rtabmap::graph::computePathLength </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>path</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Path length in map iteration order. </p>
|
||
<p>Sums distances between consecutive poses in ascending map key order (does not verify that entries form a connected path in the graph).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">path</td><td>Poses keyed by node id (sorted by key). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Total length (m), or <code>0</code> if fewer than two poses. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a0a04ab5289c258725555d6c18a076094" name="a0a04ab5289c258725555d6c18a076094"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a0a04ab5289c258725555d6c18a076094">◆ </a></span>getPaths()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::list< std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > > RTABMAP_CORE_EXPORT rtabmap::graph::getPaths </td>
|
||
<td>(</td>
|
||
<td class="paramtype">std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> > & </td>
|
||
<td class="paramname"><em>links</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Splits poses into chains connected only by neighbor links. </p>
|
||
<p>Repeatedly builds a path starting from the lowest remaining id: adds the next pose in map order only if a <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf">Link::kNeighbor</a> or <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db">Link::kNeighborMerged</a> link exists from the previous pose to it. Stops at the first gap, pushes the chain, and continues until <code>poses</code> is empty.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Input poses (cleared as segments are extracted). </td></tr>
|
||
<tr><td class="paramname">links</td><td>Graph constraints keyed by source id. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>List of pose maps, each a contiguous neighbor chain. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a39f8c9011cb5b7652003df9275c88410" name="a39f8c9011cb5b7652003df9275c88410"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a39f8c9011cb5b7652003df9275c88410">◆ </a></span>computeMinMax()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::graph::computeMinMax </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Vec3f & </td>
|
||
<td class="paramname"><em>min</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Vec3f & </td>
|
||
<td class="paramname"><em>max</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Axis-aligned bounding box of pose positions. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">poses</td><td>Input poses (no effect if empty). </td></tr>
|
||
<tr><td class="paramname">min</td><td>Output minimum (x, y, z) in meters. </td></tr>
|
||
<tr><td class="paramname">max</td><td>Output maximum (x, y, z) in meters. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
</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="namespacertabmap_1_1graph.html">graph</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>
|