Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 4bc66056a634db26a1f4d0845dc41ca6 > files > 3889

mrpt-doc-0.9.5-0.1.20110925svn2670.fc16.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mrpt::graphs::CNetworkOfPoses Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> &gt; <b>C++ reference</b> </div>
<div align="right">
<a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a>
</div>
<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <div class="left">
            <form id="FSearchBox" action="search.php" method="get">
              <img id="MSearchSelect" src="search/mag.png" alt=""/>
              <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                     onfocus="searchBox.OnSearchFieldFocus(true)" 
                     onblur="searchBox.OnSearchFieldFocus(false)"/>
            </form>
          </div><div class="right"></div>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespacemrpt.html">mrpt</a>      </li>
      <li class="navelem"><a class="el" href="namespacemrpt_1_1graphs.html">graphs</a>      </li>
      <li class="navelem"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html">CNetworkOfPoses</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a>  </div>
  <div class="headertitle">
<div class="title">mrpt::graphs::CNetworkOfPoses Class Reference<div class="ingroups"><a class="el" href="group__mrpt__graphs__grp.html">[mrpt-graphs]</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="mrpt::graphs::CNetworkOfPoses" --><!-- doxytag: inherits="CDirectedGraph&lt; CPOSE, EDGE_ANNOTATIONS &gt;" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A directed graph of pose constraints, with edges being the relative pose between pairs of nodes indentified by their numeric IDs (of type TNodeID). </p>
<p>A link or edge between two nodes "i" and "j", that is, the pose <img class="formulaInl" alt="$ p_{ij} $" src="form_100.png"/>, holds the relative position of "j" with respect to "i". These poses are stored in the edges in the format specified by the template argument CPOSE. Users should employ the following derived classes depending on the desired representation of edges:</p>
<ul>
<li><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses2_d.html" title="The specialization of CNetworkOfPoses for poses of type CPose2D (not a PDF!), also implementing seria...">mrpt::graphs::CNetworkOfPoses2D</a> : 2D edges as a simple CPose2D (x y phi)</li>
<li><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses3_d.html" title="The specialization of CNetworkOfPoses for poses of type CPose3D (not a PDF!), also implementing seria...">mrpt::graphs::CNetworkOfPoses3D</a> : 3D edges as a simple CPose3D (x y z yaw pitch roll)</li>
<li><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses2_d_inf.html" title="The specialization of CNetworkOfPoses for poses of type CPosePDFGaussianInf, also implementing serial...">mrpt::graphs::CNetworkOfPoses2DInf</a> : 2D edges as a Gaussian PDF with information matrix ( CPosePDFGaussianInf )</li>
<li><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses3_d_inf.html" title="The specialization of CNetworkOfPoses for poses of type CPose3DPDFGaussianInf, also implementing seri...">mrpt::graphs::CNetworkOfPoses3DInf</a> : 3D edges as a Gaussian PDF with information matrix ( CPose3DPDFGaussianInf )</li>
<li><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses2_d_cov.html" title="The specialization of CNetworkOfPoses for poses of type CPosePDFGaussian, also implementing serializa...">mrpt::graphs::CNetworkOfPoses2DCov</a> : 2D edges as a Gaussian PDF with covariance matrix ( CPosePDFGaussian ). It's more efficient to use the information matrix version instead!</li>
<li><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses3_d_cov.html" title="The specialization of CNetworkOfPoses for poses of type CPose3DPDFGaussian, also implementing seriali...">mrpt::graphs::CNetworkOfPoses3DCov</a> : 3D edges as a Gaussian PDF with covariance matrix ( CPose3DPDFGaussian ). It's more efficient to use the information matrix version instead!</li>
</ul>
<p>Two main members store all the information in this class:</p>
<ul>
<li><em>edge</em> (in the base class mrpt::graphs::CDirectedGraph::edge): A map from pairs of node ID -&gt; pose constraints.</li>
<li><em>nodes</em> : A map from node ID -&gt; estimated pose of that node (actually, read below on the template argument MAPS_IMPLEMENTATION).</li>
</ul>
<p>Graphs can be loaded and saved to text file in the format used by TORO &amp; HoG-man (more on the format <a href="http://www.mrpt.org/Robotics_file_formats">here</a> ), using <em>loadFromTextFile</em> and <em>saveToTextFile</em>.</p>
<p>This class is the base for representing networks of poses, which are the main data type of a series of SLAM algorithms implemented in the library mrpt-slam, in the namespace <a class="el" href="namespacemrpt_1_1graphslam.html" title="SLAM methods related to graphs of pose constraints.">mrpt::graphslam</a>.</p>
<p>For tools to visualize graphs as 2D/3D plots, see the namespace <a class="el" href="namespacemrpt_1_1opengl_1_1graph__tools.html" title="Tool functions for graphs of pose constraints.">mrpt::opengl::graph_tools</a> in the library mrpt-opengl.</p>
<p>The template arguments are:</p>
<ul>
<li>CPOSE: The type of the edges, which hold a relative pose (2D/3D, just a value or a Gaussian, etc.)</li>
<li>MAPS_IMPLEMENTATION: Can be either <a class="el" href="structmrpt_1_1utils_1_1map__traits__stdmap.html" title="Traits for using a std::map&lt;&gt; (sparse representation)">mrpt::utils::map_traits_stdmap</a> or <a class="el" href="structmrpt_1_1utils_1_1map__traits__map__as__vector.html" title="Traits for using a mrpt::utils::map_as_vector&lt;&gt; (dense, fastest representation)">mrpt::utils::map_traits_map_as_vector</a>. Determines the type of the list of global poses (member <em>nodes</em>).</li>
</ul>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespacemrpt_1_1graphslam.html" title="SLAM methods related to graphs of pose constraints.">mrpt::graphslam</a> </dd></dl>
</div>
<p><code>#include &lt;<a class="el" href="_c_network_of_poses_8h_source.html">mrpt/graphs/CNetworkOfPoses.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for mrpt::graphs::CNetworkOfPoses:</div>
<div class="dyncontent">
<div class="center"><img src="classmrpt_1_1graphs_1_1_c_network_of_poses__inherit__graph.png" border="0" usemap="#mrpt_1_1graphs_1_1_c_network_of_poses_inherit__map" alt="Inheritance graph"/></div>
<map name="mrpt_1_1graphs_1_1_c_network_of_poses_inherit__map" id="mrpt_1_1graphs_1_1_c_network_of_poses_inherit__map">
<area shape="rect" id="node7" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="mrpt::graphs::CNetworkOfPoses\&lt; CPose3DPDFGaussianInf, map_traits_stdmap \&gt;" alt="" coords="1510,15,2021,41"/><area shape="rect" id="node11" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="mrpt::graphs::CNetworkOfPoses\&lt; CPose3D, map_traits_stdmap \&gt;" alt="" coords="1559,65,1972,92"/><area shape="rect" id="node15" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="mrpt::graphs::CNetworkOfPoses\&lt; CPosePDFGaussian, map_traits_stdmap \&gt;" alt="" coords="1526,116,2005,143"/><area shape="rect" id="node19" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="mrpt::graphs::CNetworkOfPoses\&lt; CPose2D, map_traits_stdmap \&gt;" alt="" coords="1559,167,1972,193"/><area shape="rect" id="node23" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="mrpt::graphs::CNetworkOfPoses\&lt; CPosePDFGaussianInf, map_traits_stdmap \&gt;" alt="" coords="1519,217,2012,244"/><area shape="rect" id="node27" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="mrpt::graphs::CNetworkOfPoses\&lt; CPose3DPDFGaussian, map_traits_stdmap \&gt;" alt="" coords="1518,268,2013,295"/><area shape="rect" id="node2" href="classmrpt_1_1graphs_1_1_c_directed_graph.html" title="mrpt::graphs::CDirectedGraph\&lt; CPOSE, EDGE_ANNOTATIONS \&gt;" alt="" coords="477,143,896,169"/><area shape="rect" id="node4" href="classmrpt_1_1graphs_1_1_c_directed_graph.html" title="A directed graph with the argument of the template specifying the type of the annotations in the edge..." alt="" coords="5,143,203,169"/><area shape="rect" id="node9" href="classmrpt_1_1graphs_1_1_c_network_of_poses3_d_inf.html" title="The specialization of CNetworkOfPoses for poses of type CPose3DPDFGaussianInf, also implementing seri..." alt="" coords="2077,15,2323,41"/><area shape="rect" id="node13" href="classmrpt_1_1graphs_1_1_c_network_of_poses3_d.html" title="The specialization of CNetworkOfPoses for poses of type CPose3D (not a PDF!), also implementing seria..." alt="" coords="2085,65,2315,92"/><area shape="rect" id="node17" href="classmrpt_1_1graphs_1_1_c_network_of_poses2_d_cov.html" title="The specialization of CNetworkOfPoses for poses of type CPosePDFGaussian, also implementing serializa..." alt="" coords="2073,116,2327,143"/><area shape="rect" id="node21" href="classmrpt_1_1graphs_1_1_c_network_of_poses2_d.html" title="The specialization of CNetworkOfPoses for poses of type CPose2D (not a PDF!), also implementing seria..." alt="" coords="2085,167,2315,193"/><area shape="rect" id="node25" href="classmrpt_1_1graphs_1_1_c_network_of_poses2_d_inf.html" title="The specialization of CNetworkOfPoses for poses of type CPosePDFGaussianInf, also implementing serial..." alt="" coords="2077,217,2323,244"/><area shape="rect" id="node29" href="classmrpt_1_1graphs_1_1_c_network_of_poses3_d_cov.html" title="The specialization of CNetworkOfPoses for poses of type CPose3DPDFGaussian, also implementing seriali..." alt="" coords="2073,268,2327,295"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classmrpt_1_1graphs_1_1_c_network_of_poses-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1graphs_1_1_c_network_of_poses_1_1global__pose__t.html">global_pose_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The type of each global pose in <em>nodes:</em> an extension of the <em>constraint_no_pdf_t</em> pose with any optional user-defined data.  <a href="structmrpt_1_1graphs_1_1_c_network_of_poses_1_1global__pose__t.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
<a class="el" href="structmrpt_1_1aligned__containers.html">mrpt::aligned_containers</a><br class="typebreak"/>
&lt; <a class="el" href="namespacemrpt_1_1utils.html#aee71d7beb4d61406566af3847410d0e4">TPairNodeIDs</a>, edge_t &gt;<br class="typebreak"/>
::multimap_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a61f20647604df391401a440bbcada042">edges_map_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The type of the member <em>edges</em>.  <a href="#a61f20647604df391401a440bbcada042"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classstd_1_1multimap_1_1iterator.html">edges_map_t::iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classstd_1_1multimap_1_1const__iterator.html">edges_map_t::const_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a></td></tr>
<tr><td colspan="2"><div class="groupHeader">Typedef's</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
<a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html">mrpt::graphs::CDirectedGraph</a><br class="typebreak"/>
&lt; CPOSE, EDGE_ANNOTATIONS &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a2b28a76b8b0f6db2ec2110511c28f828">BASE</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The base class "CDirectedGraph&lt;CPOSE,EDGE_ANNOTATIONS&gt;" */.  <a href="#a2b28a76b8b0f6db2ec2110511c28f828"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html">CNetworkOfPoses</a>&lt; CPOSE, <br class="typebreak"/>
MAPS_IMPLEMENTATION, <br class="typebreak"/>
NODE_ANNOTATIONS, <br class="typebreak"/>
EDGE_ANNOTATIONS &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a9e356853f95f522495be2883f2b125b9">self_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">My own type.  <a href="#a9e356853f95f522495be2883f2b125b9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef CPOSE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a33527a2b73636d0012ba4c511b05dea5">constraint_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The type of PDF poses in the contraints (edges) (=CPOSE template argument)  <a href="#a33527a2b73636d0012ba4c511b05dea5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef NODE_ANNOTATIONS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ae0f5e3857e0d7ccc77b7b2abd1c72abd">node_annotations_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The extra annotations in nodes, apart from a <em>constraint_no_pdf_t</em>.  <a href="#ae0f5e3857e0d7ccc77b7b2abd1c72abd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef EDGE_ANNOTATIONS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a75e33fdd563d79b9eb5243b2ad12adcf">edge_annotations_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The extra annotations in edges, apart from a <em>constraint_t</em>.  <a href="#a75e33fdd563d79b9eb5243b2ad12adcf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef MAPS_IMPLEMENTATION&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a8f0d390603072e70a09aa819a47f1c4b">maps_implementation_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The type of map's implementation (=MAPS_IMPLEMENTATION template argument)  <a href="#a8f0d390603072e70a09aa819a47f1c4b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef CPOSE::type_value&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a11996ae62368446ff5d1dc514a9f6b9e">constraint_no_pdf_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The type of edges or their means if they are PDFs (that is, a simple "edge" value)  <a href="#a11996ae62368446ff5d1dc514a9f6b9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
MAPS_IMPLEMENTATION::template <br class="typebreak"/>
<a class="el" href="classstd_1_1map.html">map</a>&lt; <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>, CPOSE &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#abdbfe33f29a34d4356768003a37cb8e2">global_poses_pdf_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A map from pose IDs to their global coordinates estimates, with uncertainty.  <a href="#abdbfe33f29a34d4356768003a37cb8e2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
MAPS_IMPLEMENTATION::template <br class="typebreak"/>
<a class="el" href="classstd_1_1map.html">map</a>&lt; <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>, <a class="el" href="structmrpt_1_1graphs_1_1_c_network_of_poses_1_1global__pose__t.html">global_pose_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a126602ce589ff9039d000fb95c32c0c6">global_poses_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A map from pose IDs to their global coordinates estimates, without uncertainty (the "most-likely value")  <a href="#a126602ce589ff9039d000fb95c32c0c6"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a00410afac8cede69cdc275ff3e4a1a30">begin</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a9f0c17f5db14446650391ba6c37bd6cc">begin</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a265aeeb118a342f8773badf2d0242d6d">end</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a5c0aaefb7f5394d9ca8f9c3052df8a5f">end</a> () const </td></tr>
<tr><td colspan="2"><div class="groupHeader">I/O file methods</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a412155ad1b3752c9777745d4a246407f">saveToTextFile</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;fileName) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves to a text file in the format used by TORO &amp; HoG-man (more on the format <a href="http://www.mrpt.org/Robotics_file_formats">here</a> ) For 2D graphs only VERTEX2 &amp; EDGE2 entries will be saved, and VERTEX3 &amp; EDGE3 entries for 3D graphs.  <a href="#a412155ad1b3752c9777745d4a246407f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ad7a2677376c6255772509d0e82fee89f">loadFromTextFile</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;fileName, bool collapse_dup_edges=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads from a text file in the format used by TORO &amp; HoG-man (more on the format <a href="http://www.mrpt.org/Robotics_file_formats">here</a> ) Recognized line entries are: VERTEX2, VERTEX3, EDGE2, EDGE3, EQUIV.  <a href="#ad7a2677376c6255772509d0e82fee89f"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Utility methods</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a5050d30406681b2bc2dd62830d5bc85b">dijkstra_nodes_estimate</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Spanning tree computation of a simple estimation of the global coordinates of each node just from the information in all edges, sorted in a Dijkstra tree based on the current "root" node.  <a href="#a5050d30406681b2bc2dd62830d5bc85b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a4fbe45ec3544ca53d629a701b2f3913c">collapseDuplicatedEdges</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Look for duplicated edges (even in opposite directions) between all pairs of nodes and fuse them.  <a href="#a4fbe45ec3544ca53d629a701b2f3913c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#aca1c63c9a12604f985f30112325671ad">getGlobalSquareError</a> (bool ignoreCovariances=true) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the overall square error from all the pose constraints (edges) with respect to the global poses in  If <em>ignoreCovariances</em> is false, the squared Mahalanobis distance will be computed instead of the straight square error.  <a href="#aca1c63c9a12604f985f30112325671ad"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ad85b9c5e002cedbb600cf1361b5fe965">getEdgeSquareError</a> (const typename <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">BASE::edges_map_t::const_iterator</a> &amp;itEdge, bool ignoreCovariances=true) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the square error of one pose constraints (edge) with respect to the global poses in  If <em>ignoreCovariances</em> is false, the squared Mahalanobis distance will be computed instead of the straight square error.  <a href="#ad85b9c5e002cedbb600cf1361b5fe965"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#aed449b8431bc7c752602c1acf3dca09f">getEdgeSquareError</a> (const <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_id, const <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_id, bool ignoreCovariances=true) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the square error of one pose constraints (edge) with respect to the global poses in  If <em>ignoreCovariances</em> is false, the squared Mahalanobis distance will be computed instead of the straight square error.  <a href="#aed449b8431bc7c752602c1acf3dca09f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ad5aa90f5955844cee5f8ac5279409fd4">clear</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty all edges, nodes and set root to ID 0.  <a href="#ad5aa90f5955844cee5f8ac5279409fd4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#aaaa9239749ca20089ab0f6ac4904b763">nodeCount</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return number of nodes in the list  of global coordinates (may be differente that all nodes appearing in edges)  <a href="#aaaa9239749ca20089ab0f6ac4904b763"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Ctors &amp; Dtors</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a294c11fda3b26aa4bf3e6ceae4010b21">CNetworkOfPoses</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor (just sets root to "0" and edges_store_inverse_poses to "false")  <a href="#a294c11fda3b26aa4bf3e6ceae4010b21"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a9e9e6ffb56c5c1035655781fbd9e7196">~CNetworkOfPoses</a> ()</td></tr>
<tr><td colspan="2"><div class="groupHeader">Edges/nodes utility methods</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a5fbfb47dfb250f23acf3a7802a70dac3">edgeCount</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of edges in the graph.  <a href="#a5fbfb47dfb250f23acf3a7802a70dac3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a0fbd2b4cc97be2a0e1a96c91e0727b8c">clearEdges</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase all edges.  <a href="#a0fbd2b4cc97be2a0e1a96c91e0727b8c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8db3c28b8b73e01cf5e38cef5b9ab1df">insertEdge</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID, const edge_t &amp;edge_value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert an edge (from -&gt; to) with the given edge value.  <a href="#a8db3c28b8b73e01cf5e38cef5b9ab1df"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a69842cf7adcab68da36898d217fb1977">insertEdgeAtEnd</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID, const edge_t &amp;edge_value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert an edge (from -&gt; to) with the given edge value (more efficient version to be called if you know that the end will go at the end of the sorted <a class="el" href="classstd_1_1multimap.html" title="STL class.">std::multimap</a>).  <a href="#a69842cf7adcab68da36898d217fb1977"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8d9be5feb0368b37f4598ce7a591a96c">edgeExists</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Test is the given directed edge exists.  <a href="#a8d9be5feb0368b37f4598ce7a591a96c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">edge_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a2d858a4b74c090b99a3aa1f4c92e76d6">getEdge</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a reference to the content of a given edge.  <a href="#a2d858a4b74c090b99a3aa1f4c92e76d6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const edge_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#ada6c10bb7f912abb084c2e4173845619">getEdge</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a reference to the content of a given edge.  <a href="#ada6c10bb7f912abb084c2e4173845619"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::pair&lt; <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a>, <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#adf2bb3bd0774fee8fd3f14f7f316aaa1">getEdges</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pair&lt;first,last&gt; of iterators to the range of edges between two given nodes.  <a href="#adf2bb3bd0774fee8fd3f14f7f316aaa1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::pair&lt; <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a>, <br class="typebreak"/>
<a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a548e07d2c9b49ceb08610f3e4eca19dc">getEdges</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pair&lt;first,last&gt; of const iterators to the range of edges between two given nodes.  <a href="#a548e07d2c9b49ceb08610f3e4eca19dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a9e072ff6281e3aacf318b84685fc2a55">eraseEdge</a> (<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> from_nodeID, <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> to_nodeID)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase all edges between the given nodes (it has no effect if no edge existed)  <a href="#a9e072ff6281e3aacf318b84685fc2a55"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#ad73f9ea9eaa069cf1b7000b8b560155e">getAllNodes</a> (<a class="el" href="classstd_1_1set.html">std::set</a>&lt; <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> &gt; &amp;lstNode_IDs) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a list of all the node_ID's of the graph, generated from all the nodes that appear in the list of edges.  <a href="#ad73f9ea9eaa069cf1b7000b8b560155e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1set.html">std::set</a>&lt; <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a11fed5f0111f8a42f891f788aea8408e">getAllNodes</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Less efficient way to get all nodes that returns a copy of the set object.  <a href="#a11fed5f0111f8a42f891f788aea8408e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#aac62b79ce4e35b186bf12427ef72f77e">countDifferentNodesInEdges</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Count how many different node IDs appear in the graph edges.  <a href="#aac62b79ce4e35b186bf12427ef72f77e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#ab275c72b1763fb12b09f762e83ad6355">getNeighborsOf</a> (const <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> nodeID, <a class="el" href="classstd_1_1set.html">std::set</a>&lt; <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> &gt; &amp;neighborIDs) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the list of all neighbors of "nodeID", by creating a list of their node IDs.  <a href="#ab275c72b1763fb12b09f762e83ad6355"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a6b05ec8c7974689a9013c142fe82b3e5">getAdjacencyMatrix</a> (MAP_NODEID_SET_NODEIDS &amp;outAdjacency) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a map from node IDs to all its neighbors (that is, connected nodes, regardless of the edge direction) This is a much more efficient method than calling getNeighborsOf() for each node in the graph.  <a href="#a6b05ec8c7974689a9013c142fe82b3e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a3434d7335a5ef1f2bf166c438a0e23ac">getAdjacencyMatrix</a> (MAP_NODEID_SET_NODEIDS &amp;outAdjacency, const SET_NODEIDS &amp;onlyForTheseNodes) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Just like <em>getAdjacencyMatrix</em> but return only the adjacency for those node_ids in the set <em>onlyForTheseNodes</em> (both endings nodes of an edge must be within the set for it to be returned)  <a href="#a3434d7335a5ef1f2bf166c438a0e23ac"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a61f20647604df391401a440bbcada042">edges_map_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a6b82920b6172bcdaeb088c64a6c9a80f">edges</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The public member with the directed edges in the graph.  <a href="#a6b82920b6172bcdaeb088c64a6c9a80f"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Data members</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a126602ce589ff9039d000fb95c32c0c6">global_poses_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ad7ed942c40716b8c387205ed4bb5423a">nodes</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The nodes (vertices) of the graph, with their estimated "global" (with respect to <em>root</em>) position, without an associated covariance.  <a href="#ad7ed942c40716b8c387205ed4bb5423a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#adee1f9ffb91303fa1ea909eaa23c61bc">root</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The ID of the node that is the origin of coordinates, used as reference by all coordinates in .  <a href="#adee1f9ffb91303fa1ea909eaa23c61bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a90863011f1177a9920171ede6b8ca8aa">edges_store_inverse_poses</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">False (default) if an edge i-&gt;j stores the normal relative pose of j as seen from i: <img class="formulaInl" alt="$ \Delta_i^j = j \ominus i $" src="form_101.png"/> True if an edge i-&gt;j stores the inverse relateive pose, that is, i as seen from j: <img class="formulaInl" alt="$ \Delta_i^j = i \ominus j $" src="form_102.png"/>.  <a href="#a90863011f1177a9920171ede6b8ca8aa"></a><br/></td></tr>
</table>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a2b28a76b8b0f6db2ec2110511c28f828"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::BASE" ref="a2b28a76b8b0f6db2ec2110511c28f828" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html">mrpt::graphs::CDirectedGraph</a>&lt;CPOSE,EDGE_ANNOTATIONS&gt; <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a2b28a76b8b0f6db2ec2110511c28f828">mrpt::graphs::CNetworkOfPoses::BASE</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The base class "CDirectedGraph&lt;CPOSE,EDGE_ANNOTATIONS&gt;" */. </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00111">111</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8acbd51f416c2688ce308c7b04a0d41e"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::const_iterator" ref="a8acbd51f416c2688ce308c7b04a0d41e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classstd_1_1multimap_1_1const__iterator.html">edges_map_t::const_iterator</a> <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">mrpt::graphs::CDirectedGraph::const_iterator</a><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00077">77</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

</div>
</div>
<a class="anchor" id="a11996ae62368446ff5d1dc514a9f6b9e"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::constraint_no_pdf_t" ref="a11996ae62368446ff5d1dc514a9f6b9e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef CPOSE::type_value <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a11996ae62368446ff5d1dc514a9f6b9e">mrpt::graphs::CNetworkOfPoses::constraint_no_pdf_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The type of edges or their means if they are PDFs (that is, a simple "edge" value) </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00119">119</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a33527a2b73636d0012ba4c511b05dea5"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::constraint_t" ref="a33527a2b73636d0012ba4c511b05dea5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef CPOSE <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a33527a2b73636d0012ba4c511b05dea5">mrpt::graphs::CNetworkOfPoses::constraint_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The type of PDF poses in the contraints (edges) (=CPOSE template argument) </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00114">114</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a75e33fdd563d79b9eb5243b2ad12adcf"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::edge_annotations_t" ref="a75e33fdd563d79b9eb5243b2ad12adcf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef EDGE_ANNOTATIONS <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a75e33fdd563d79b9eb5243b2ad12adcf">mrpt::graphs::CNetworkOfPoses::edge_annotations_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The extra annotations in edges, apart from a <em>constraint_t</em>. </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00116">116</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a61f20647604df391401a440bbcada042"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::edges_map_t" ref="a61f20647604df391401a440bbcada042" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structmrpt_1_1aligned__containers.html">mrpt::aligned_containers</a>&lt;<a class="el" href="namespacemrpt_1_1utils.html#aee71d7beb4d61406566af3847410d0e4">TPairNodeIDs</a>,edge_t&gt;::multimap_t <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a61f20647604df391401a440bbcada042">mrpt::graphs::CDirectedGraph::edges_map_t</a><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The type of the member <em>edges</em>. </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00075">75</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

</div>
</div>
<a class="anchor" id="abdbfe33f29a34d4356768003a37cb8e2"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::global_poses_pdf_t" ref="abdbfe33f29a34d4356768003a37cb8e2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef MAPS_IMPLEMENTATION::template <a class="el" href="classstd_1_1map.html">map</a>&lt;<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>,CPOSE&gt; <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#abdbfe33f29a34d4356768003a37cb8e2">mrpt::graphs::CNetworkOfPoses::global_poses_pdf_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A map from pose IDs to their global coordinates estimates, with uncertainty. </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00131">131</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a126602ce589ff9039d000fb95c32c0c6"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::global_poses_t" ref="a126602ce589ff9039d000fb95c32c0c6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef MAPS_IMPLEMENTATION::template <a class="el" href="classstd_1_1map.html">map</a>&lt;<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>,<a class="el" href="structmrpt_1_1graphs_1_1_c_network_of_poses_1_1global__pose__t.html">global_pose_t</a>&gt; <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a126602ce589ff9039d000fb95c32c0c6">mrpt::graphs::CNetworkOfPoses::global_poses_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A map from pose IDs to their global coordinates estimates, without uncertainty (the "most-likely value") </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00134">134</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a79519246c2bf66e78eacaffa55ca0272"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::iterator" ref="a79519246c2bf66e78eacaffa55ca0272" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classstd_1_1multimap_1_1iterator.html">edges_map_t::iterator</a> <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">mrpt::graphs::CDirectedGraph::iterator</a><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00076">76</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8f0d390603072e70a09aa819a47f1c4b"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::maps_implementation_t" ref="a8f0d390603072e70a09aa819a47f1c4b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef MAPS_IMPLEMENTATION <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a8f0d390603072e70a09aa819a47f1c4b">mrpt::graphs::CNetworkOfPoses::maps_implementation_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The type of map's implementation (=MAPS_IMPLEMENTATION template argument) </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00118">118</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae0f5e3857e0d7ccc77b7b2abd1c72abd"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::node_annotations_t" ref="ae0f5e3857e0d7ccc77b7b2abd1c72abd" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef NODE_ANNOTATIONS <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ae0f5e3857e0d7ccc77b7b2abd1c72abd">mrpt::graphs::CNetworkOfPoses::node_annotations_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The extra annotations in nodes, apart from a <em>constraint_no_pdf_t</em>. </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00115">115</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9e356853f95f522495be2883f2b125b9"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::self_t" ref="a9e356853f95f522495be2883f2b125b9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html">CNetworkOfPoses</a>&lt;CPOSE,MAPS_IMPLEMENTATION,NODE_ANNOTATIONS,EDGE_ANNOTATIONS&gt; <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a9e356853f95f522495be2883f2b125b9">mrpt::graphs::CNetworkOfPoses::self_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>My own type. </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00112">112</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a294c11fda3b26aa4bf3e6ceae4010b21"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::CNetworkOfPoses" ref="a294c11fda3b26aa4bf3e6ceae4010b21" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::graphs::CNetworkOfPoses::CNetworkOfPoses </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Default constructor (just sets root to "0" and edges_store_inverse_poses to "false") </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00252">252</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9e9e6ffb56c5c1035655781fbd9e7196"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::~CNetworkOfPoses" ref="a9e9e6ffb56c5c1035655781fbd9e7196" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::graphs::CNetworkOfPoses::~CNetworkOfPoses </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00253">253</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a00410afac8cede69cdc275ff3e4a1a30"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::begin" ref="a00410afac8cede69cdc275ff3e4a1a30" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a> mrpt::graphs::CDirectedGraph::begin </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00086">86</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a9f0c17f5db14446650391ba6c37bd6cc"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::begin" ref="a9f0c17f5db14446650391ba6c37bd6cc" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a> mrpt::graphs::CDirectedGraph::begin </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00088">88</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="ad5aa90f5955844cee5f8ac5279409fd4"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::clear" ref="ad5aa90f5955844cee5f8ac5279409fd4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CNetworkOfPoses::clear </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Empty all edges, nodes and set root to ID 0. </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00234">234</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0fbd2b4cc97be2a0e1a96c91e0727b8c"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::clearEdges" ref="a0fbd2b4cc97be2a0e1a96c91e0727b8c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::clearEdges </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Erase all edges. </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00096">96</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a4fbe45ec3544ca53d629a701b2f3913c"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::collapseDuplicatedEdges" ref="a4fbe45ec3544ca53d629a701b2f3913c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::graphs::CNetworkOfPoses::collapseDuplicatedEdges </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Look for duplicated edges (even in opposite directions) between all pairs of nodes and fuse them. </p>
<p>Upon return, only one edge remains between each pair of nodes with the mean &amp; covariance (or information matrix) corresponding to the Bayesian fusion of all the Gaussians. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Overall number of removed edges. </dd></dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00201">201</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="aac62b79ce4e35b186bf12427ef72f77e"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::countDifferentNodesInEdges" ref="aac62b79ce4e35b186bf12427ef72f77e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::graphs::CDirectedGraph::countDifferentNodesInEdges </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Count how many different node IDs appear in the graph edges. </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00179">179</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a5050d30406681b2bc2dd62830d5bc85b"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::dijkstra_nodes_estimate" ref="a5050d30406681b2bc2dd62830d5bc85b" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CNetworkOfPoses::dijkstra_nodes_estimate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Spanning tree computation of a simple estimation of the global coordinates of each node just from the information in all edges, sorted in a Dijkstra tree based on the current "root" node. </p>
<p>Note that "global" coordinates are with respect to the node with the ID specified in <em>root</em>. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This method takes into account the value of <em>edges_store_inverse_poses</em> </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd>node, <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#adee1f9ffb91303fa1ea909eaa23c61bc" title="The ID of the node that is the origin of coordinates, used as reference by all coordinates in ...">root</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00195">195</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5fbfb47dfb250f23acf3a7802a70dac3"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::edgeCount" ref="a5fbfb47dfb250f23acf3a7802a70dac3" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::graphs::CDirectedGraph::edgeCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The number of edges in the graph. </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00095">95</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a8d9be5feb0368b37f4598ce7a591a96c"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::edgeExists" ref="a8d9be5feb0368b37f4598ce7a591a96c" args="(TNodeID from_nodeID, TNodeID to_nodeID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::graphs::CDirectedGraph::edgeExists </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test is the given directed edge exists. </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00118">118</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a265aeeb118a342f8773badf2d0242d6d"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::end" ref="a265aeeb118a342f8773badf2d0242d6d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a> mrpt::graphs::CDirectedGraph::end </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00087">87</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a5c0aaefb7f5394d9ca8f9c3052df8a5f"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::end" ref="a5c0aaefb7f5394d9ca8f9c3052df8a5f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a> mrpt::graphs::CDirectedGraph::end </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00089">89</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a9e072ff6281e3aacf318b84685fc2a55"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::eraseEdge" ref="a9e072ff6281e3aacf318b84685fc2a55" args="(TNodeID from_nodeID, TNodeID to_nodeID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::eraseEdge </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Erase all edges between the given nodes (it has no effect if no edge existed) </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00158">158</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a6b05ec8c7974689a9013c142fe82b3e5"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getAdjacencyMatrix" ref="a6b05ec8c7974689a9013c142fe82b3e5" args="(MAP_NODEID_SET_NODEIDS &amp;outAdjacency) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::getAdjacencyMatrix </td>
          <td>(</td>
          <td class="paramtype">MAP_NODEID_SET_NODEIDS &amp;&#160;</td>
          <td class="paramname"><em>outAdjacency</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a map from node IDs to all its neighbors (that is, connected nodes, regardless of the edge direction) This is a much more efficient method than calling getNeighborsOf() for each node in the graph. </p>
<p>Possible values for the template argument MAP_NODEID_SET_NODEIDS are:</p>
<ul>
<li><a class="el" href="classstd_1_1map.html" title="STL class.">std::map</a>&lt;TNodeID, std::set&lt;TNodeID&gt; &gt;</li>
<li><a class="el" href="classmrpt_1_1utils_1_1map__as__vector.html" title="A STL-like container which looks and behaves (almost exactly) like a std::map&lt;&gt; but is implemented as...">mrpt::utils::map_as_vector</a>&lt;TNodeID, std::set&lt;TNodeID&gt; &gt; <dl class="see"><dt><b>See also:</b></dt><dd>getNeighborsOf </dd></dl>
</li>
</ul>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00211">211</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a3434d7335a5ef1f2bf166c438a0e23ac"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getAdjacencyMatrix" ref="a3434d7335a5ef1f2bf166c438a0e23ac" args="(MAP_NODEID_SET_NODEIDS &amp;outAdjacency, const SET_NODEIDS &amp;onlyForTheseNodes) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::getAdjacencyMatrix </td>
          <td>(</td>
          <td class="paramtype">MAP_NODEID_SET_NODEIDS &amp;&#160;</td>
          <td class="paramname"><em>outAdjacency</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const SET_NODEIDS &amp;&#160;</td>
          <td class="paramname"><em>onlyForTheseNodes</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Just like <em>getAdjacencyMatrix</em> but return only the adjacency for those node_ids in the set <em>onlyForTheseNodes</em> (both endings nodes of an edge must be within the set for it to be returned) </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00224">224</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="ad73f9ea9eaa069cf1b7000b8b560155e"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getAllNodes" ref="ad73f9ea9eaa069cf1b7000b8b560155e" args="(std::set&lt; TNodeID &gt; &amp;lstNode_IDs) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::getAllNodes </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1set.html">std::set</a>&lt; <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>lstNode_IDs</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a list of all the node_ID's of the graph, generated from all the nodes that appear in the list of edges. </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00164">164</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a11fed5f0111f8a42f891f788aea8408e"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getAllNodes" ref="a11fed5f0111f8a42f891f788aea8408e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1set.html">std::set</a>&lt;<a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&gt; mrpt::graphs::CDirectedGraph::getAllNodes </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Less efficient way to get all nodes that returns a copy of the set object. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>getAllNodes( std::set&lt;TNodeID&gt; &amp;lstNode_IDs) </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00175">175</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00175">mrpt::graphs::CDirectedGraph::getAllNodes()</a>.</p>

</div>
</div>
<a class="anchor" id="a2d858a4b74c090b99a3aa1f4c92e76d6"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getEdge" ref="a2d858a4b74c090b99a3aa1f4c92e76d6" args="(TNodeID from_nodeID, TNodeID to_nodeID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">edge_t&amp; mrpt::graphs::CDirectedGraph::getEdge </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a reference to the content of a given edge. </p>
<p>If several edges exist between the given nodes, the first one is returned. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>if the given edge does not exist </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd>getEdges </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00126">126</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>, <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>, and <a class="el" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8">mrpt::format()</a>.</p>

</div>
</div>
<a class="anchor" id="ada6c10bb7f912abb084c2e4173845619"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getEdge" ref="ada6c10bb7f912abb084c2e4173845619" args="(TNodeID from_nodeID, TNodeID to_nodeID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const edge_t&amp; mrpt::graphs::CDirectedGraph::getEdge </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a reference to the content of a given edge. </p>
<p>If several edges exist between the given nodes, the first one is returned. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>if the given edge does not exist </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd>getEdges </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00139">139</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>, <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>, and <a class="el" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8">mrpt::format()</a>.</p>

</div>
</div>
<a class="anchor" id="adf2bb3bd0774fee8fd3f14f7f316aaa1"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getEdges" ref="adf2bb3bd0774fee8fd3f14f7f316aaa1" args="(TNodeID from_nodeID, TNodeID to_nodeID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;<a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a>,<a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a79519246c2bf66e78eacaffa55ca0272">iterator</a>&gt; mrpt::graphs::CDirectedGraph::getEdges </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a pair&lt;first,last&gt; of iterators to the range of edges between two given nodes. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>getEdge </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00148">148</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a548e07d2c9b49ceb08610f3e4eca19dc"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getEdges" ref="a548e07d2c9b49ceb08610f3e4eca19dc" args="(TNodeID from_nodeID, TNodeID to_nodeID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;<a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a>,<a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">const_iterator</a>&gt; mrpt::graphs::CDirectedGraph::getEdges </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a pair&lt;first,last&gt; of const iterators to the range of edges between two given nodes. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>getEdge </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00152">152</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="ad85b9c5e002cedbb600cf1361b5fe965"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getEdgeSquareError" ref="ad85b9c5e002cedbb600cf1361b5fe965" args="(const typename BASE::edges_map_t::const_iterator &amp;itEdge, bool ignoreCovariances=true) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::graphs::CNetworkOfPoses::getEdgeSquareError </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a8acbd51f416c2688ce308c7b04a0d41e">BASE::edges_map_t::const_iterator</a> &amp;&#160;</td>
          <td class="paramname"><em>itEdge</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ignoreCovariances</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the square error of one pose constraints (edge) with respect to the global poses in  If <em>ignoreCovariances</em> is false, the squared Mahalanobis distance will be computed instead of the straight square error. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>On global poses not in <em>nodes</em> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00220">220</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="aed449b8431bc7c752602c1acf3dca09f"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getEdgeSquareError" ref="aed449b8431bc7c752602c1acf3dca09f" args="(const TNodeID from_id, const TNodeID to_id, bool ignoreCovariances=true) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::graphs::CNetworkOfPoses::getEdgeSquareError </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ignoreCovariances</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the square error of one pose constraints (edge) with respect to the global poses in  If <em>ignoreCovariances</em> is false, the squared Mahalanobis distance will be computed instead of the straight square error. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>On edge not existing or global poses not in <em>nodes</em> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00226">226</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="aca1c63c9a12604f985f30112325671ad"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getGlobalSquareError" ref="aca1c63c9a12604f985f30112325671ad" args="(bool ignoreCovariances=true) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::graphs::CNetworkOfPoses::getGlobalSquareError </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ignoreCovariances</em> = <code>true</code></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the overall square error from all the pose constraints (edges) with respect to the global poses in  If <em>ignoreCovariances</em> is false, the squared Mahalanobis distance will be computed instead of the straight square error. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ad85b9c5e002cedbb600cf1361b5fe965" title="Computes the square error of one pose constraints (edge) with respect to the global poses in  If igno...">getEdgeSquareError</a> </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>On global poses not in <em>nodes</em> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00208">208</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab275c72b1763fb12b09f762e83ad6355"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::getNeighborsOf" ref="ab275c72b1763fb12b09f762e83ad6355" args="(const TNodeID nodeID, std::set&lt; TNodeID &gt; &amp;neighborIDs) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::getNeighborsOf </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1set.html">std::set</a>&lt; <a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>neighborIDs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the list of all neighbors of "nodeID", by creating a list of their node IDs. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>getAdjacencyMatrix </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00191">191</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a8db3c28b8b73e01cf5e38cef5b9ab1df"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::insertEdge" ref="a8db3c28b8b73e01cf5e38cef5b9ab1df" args="(TNodeID from_nodeID, TNodeID to_nodeID, const edge_t &amp;edge_value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::insertEdge </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const edge_t &amp;&#160;</td>
          <td class="paramname"><em>edge_value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insert an edge (from -&gt; to) with the given edge value. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>insertEdgeAtEnd </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00100">100</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="a69842cf7adcab68da36898d217fb1977"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::insertEdgeAtEnd" ref="a69842cf7adcab68da36898d217fb1977" args="(TNodeID from_nodeID, TNodeID to_nodeID, const edge_t &amp;edge_value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CDirectedGraph::insertEdgeAtEnd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>from_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a>&#160;</td>
          <td class="paramname"><em>to_nodeID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const edge_t &amp;&#160;</td>
          <td class="paramname"><em>edge_value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insert an edge (from -&gt; to) with the given edge value (more efficient version to be called if you know that the end will go at the end of the sorted <a class="el" href="classstd_1_1multimap.html" title="STL class.">std::multimap</a>). </p>
<dl class="see"><dt><b>See also:</b></dt><dd>insertEdge </dd></dl>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00109">109</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

<p>References <a class="el" href="_c_directed_graph_8h_source.html#l00080">mrpt::graphs::CDirectedGraph::edges</a>.</p>

</div>
</div>
<a class="anchor" id="ad7a2677376c6255772509d0e82fee89f"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::loadFromTextFile" ref="ad7a2677376c6255772509d0e82fee89f" args="(const std::string &amp;fileName, bool collapse_dup_edges=true)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CNetworkOfPoses::loadFromTextFile </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;&#160;</td>
          <td class="paramname"><em>fileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>collapse_dup_edges</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Loads from a text file in the format used by TORO &amp; HoG-man (more on the format <a href="http://www.mrpt.org/Robotics_file_formats">here</a> ) Recognized line entries are: VERTEX2, VERTEX3, EDGE2, EDGE3, EQUIV. </p>
<p>If an unknown entry is found, a warning is dumped to std::cerr (only once for each unknown keyword). An exception will be raised if trying to load a 3D graph into a 2D class (in the opposite case, missing 3D data will default to zero). </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">fileName</td><td>The file to load. </td></tr>
    <tr><td class="paramname">collapse_dup_edges</td><td>If true, <em>collapseDuplicatedEdges</em> will be called automatically after loading (note that this operation may take significant time for very large graphs). </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd>loadFromBinaryFile, <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a412155ad1b3752c9777745d4a246407f" title="Saves to a text file in the format used by TORO &amp; HoG-man (more on the format here ) For 2D graphs on...">saveToTextFile</a> </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">On</td><td>any error, as a malformed line or loading a 3D graph in a 2D graph. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00180">180</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="aaaa9239749ca20089ab0f6ac4904b763"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::nodeCount" ref="aaaa9239749ca20089ab0f6ac4904b763" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::graphs::CNetworkOfPoses::nodeCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return number of nodes in the list  of global coordinates (may be differente that all nodes appearing in edges) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#aac62b79ce4e35b186bf12427ef72f77e" title="Count how many different node IDs appear in the graph edges.">mrpt::graphs::CDirectedGraph::countDifferentNodesInEdges</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00244">244</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="a412155ad1b3752c9777745d4a246407f"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::saveToTextFile" ref="a412155ad1b3752c9777745d4a246407f" args="(const std::string &amp;fileName) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::graphs::CNetworkOfPoses::saveToTextFile </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;&#160;</td>
          <td class="paramname"><em>fileName</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Saves to a text file in the format used by TORO &amp; HoG-man (more on the format <a href="http://www.mrpt.org/Robotics_file_formats">here</a> ) For 2D graphs only VERTEX2 &amp; EDGE2 entries will be saved, and VERTEX3 &amp; EDGE3 entries for 3D graphs. </p>
<p>Note that EQUIV entries will not be saved, but instead several EDGEs will be stored between the same node IDs. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>saveToBinaryFile, <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ad7a2677376c6255772509d0e82fee89f" title="Loads from a text file in the format used by TORO &amp; HoG-man (more on the format here ) Recognized lin...">loadFromTextFile</a> </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname">On</td><td>any error </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00167">167</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a6b82920b6172bcdaeb088c64a6c9a80f"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::edges" ref="a6b82920b6172bcdaeb088c64a6c9a80f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a61f20647604df391401a440bbcada042">edges_map_t</a> <a class="el" href="classmrpt_1_1graphs_1_1_c_directed_graph.html#a6b82920b6172bcdaeb088c64a6c9a80f">mrpt::graphs::CDirectedGraph::edges</a><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The public member with the directed edges in the graph. </p>

<p>Definition at line <a class="el" href="_c_directed_graph_8h_source.html#l00080">80</a> of file <a class="el" href="_c_directed_graph_8h_source.html">CDirectedGraph.h</a>.</p>

</div>
</div>
<a class="anchor" id="a90863011f1177a9920171ede6b8ca8aa"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::edges_store_inverse_poses" ref="a90863011f1177a9920171ede6b8ca8aa" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a90863011f1177a9920171ede6b8ca8aa">mrpt::graphs::CNetworkOfPoses::edges_store_inverse_poses</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>False (default) if an edge i-&gt;j stores the normal relative pose of j as seen from i: <img class="formulaInl" alt="$ \Delta_i^j = j \ominus i $" src="form_101.png"/> True if an edge i-&gt;j stores the inverse relateive pose, that is, i as seen from j: <img class="formulaInl" alt="$ \Delta_i^j = i \ominus j $" src="form_102.png"/>. </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00153">153</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad7ed942c40716b8c387205ed4bb5423a"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::nodes" ref="ad7ed942c40716b8c387205ed4bb5423a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a126602ce589ff9039d000fb95c32c0c6">global_poses_t</a> <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#ad7ed942c40716b8c387205ed4bb5423a">mrpt::graphs::CNetworkOfPoses::nodes</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The nodes (vertices) of the graph, with their estimated "global" (with respect to <em>root</em>) position, without an associated covariance. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#a5050d30406681b2bc2dd62830d5bc85b" title="Spanning tree computation of a simple estimation of the global coordinates of each node just from the...">dijkstra_nodes_estimate</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00145">145</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

<p>Referenced by <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00161">mrpt::graphs::detail::graph_ops::load_graph_of_poses_from_text_file()</a>.</p>

</div>
</div>
<a class="anchor" id="adee1f9ffb91303fa1ea909eaa23c61bc"></a><!-- doxytag: member="mrpt::graphs::CNetworkOfPoses::root" ref="adee1f9ffb91303fa1ea909eaa23c61bc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemrpt_1_1utils.html#a718b4f99645b7e9f6501c9b7bb2a2fe7">TNodeID</a> <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html#adee1f9ffb91303fa1ea909eaa23c61bc">mrpt::graphs::CNetworkOfPoses::root</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The ID of the node that is the origin of coordinates, used as reference by all coordinates in . </p>
<p>By default, root is the ID "0". </p>

<p>Definition at line <a class="el" href="_c_network_of_poses_8h_source.html#l00148">148</a> of file <a class="el" href="_c_network_of_poses_8h_source.html">CNetworkOfPoses.h</a>.</p>

</div>
</div>
</div>
<br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150">  </td></tr> </table>  </body></html>