<divclass="line"><aid="l00005"name="l00005"></a><spanclass="lineno"> 5</span><spanclass="comment">Redistribution and use in source and binary forms, with or without</span></div>
<divclass="line"><aid="l00006"name="l00006"></a><spanclass="lineno"> 6</span><spanclass="comment">modification, are permitted provided that the following conditions are met:</span></div>
<divclass="line"><aid="l00007"name="l00007"></a><spanclass="lineno"> 7</span><spanclass="comment"> * Redistributions of source code must retain the above copyright</span></div>
<divclass="line"><aid="l00008"name="l00008"></a><spanclass="lineno"> 8</span><spanclass="comment"> notice, this list of conditions and the following disclaimer.</span></div>
<divclass="line"><aid="l00009"name="l00009"></a><spanclass="lineno"> 9</span><spanclass="comment"> * Redistributions in binary form must reproduce the above copyright</span></div>
<divclass="line"><aid="l00010"name="l00010"></a><spanclass="lineno"> 10</span><spanclass="comment"> notice, this list of conditions and the following disclaimer in the</span></div>
<divclass="line"><aid="l00011"name="l00011"></a><spanclass="lineno"> 11</span><spanclass="comment"> documentation and/or other materials provided with the distribution.</span></div>
<divclass="line"><aid="l00012"name="l00012"></a><spanclass="lineno"> 12</span><spanclass="comment"> * Neither the name of the Universite de Sherbrooke nor the</span></div>
<divclass="line"><aid="l00013"name="l00013"></a><spanclass="lineno"> 13</span><spanclass="comment"> names of its contributors may be used to endorse or promote products</span></div>
<divclass="line"><aid="l00014"name="l00014"></a><spanclass="lineno"> 14</span><spanclass="comment"> derived from this software without specific prior written permission.</span></div>
<divclass="line"><aid="l00016"name="l00016"></a><spanclass="lineno"> 16</span><spanclass="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span></div>
<divclass="line"><aid="l00017"name="l00017"></a><spanclass="lineno"> 17</span><spanclass="comment">ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<divclass="line"><aid="l00018"name="l00018"></a><spanclass="lineno"> 18</span><spanclass="comment">WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<divclass="line"><aid="l00019"name="l00019"></a><spanclass="lineno"> 19</span><spanclass="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY</span></div>
<divclass="line"><aid="l00020"name="l00020"></a><spanclass="lineno"> 20</span><spanclass="comment">DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div>
<divclass="line"><aid="l00021"name="l00021"></a><spanclass="lineno"> 21</span><spanclass="comment">(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<divclass="line"><aid="l00022"name="l00022"></a><spanclass="lineno"> 22</span><spanclass="comment">LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div>
<divclass="line"><aid="l00023"name="l00023"></a><spanclass="lineno"> 23</span><spanclass="comment">ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div>
<divclass="line"><aid="l00024"name="l00024"></a><spanclass="lineno"> 24</span><spanclass="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div>
<divclass="line"><aid="l00025"name="l00025"></a><spanclass="lineno"> 25</span><spanclass="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<divclass="line"><aid="l00279"name="l00279"></a><spanclass="lineno"> 279</span><spanclass="keyword">const</span> std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f>>>& texCoords = std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f>>>(), <spanclass="comment">// Textures -> uv coords for each vertex of the polygons</span></div>
<divclass="line"><aid="l00281"name="l00281"></a><spanclass="lineno"> 281</span><spanclass="keyword">const</span> std::vector<std::vector<Eigen::Vector2f>>& texCoords = std::vector<std::vector<Eigen::Vector2f>>(), <spanclass="comment">// Textures -> uv coords for each vertex of the polygons</span></div>
<divclass="line"><aid="l00283"name="l00283"></a><spanclass="lineno"> 283</span><spanclass="keyword">const</span> cv::Mat & textures = cv::Mat()) <spanclass="keyword">const</span>; <spanclass="comment">// concatenated textures (assuming square textures with all same size)</span></div>
<divclass="line"><aid="l00880"name="l00880"></a><spanclass="lineno"> 880</span><spanclass="keywordtype">bool</span> _memoryChanged; <spanclass="comment">// False by default, become true only when Memory::update() is called.</span></div>
<divclass="line"><aid="l00881"name="l00881"></a><spanclass="lineno"> 881</span><spanclass="keywordtype">bool</span> _linksChanged; <spanclass="comment">// False by default, become true when links are modified.</span></div>
<divclass="line"><aid="l00883"name="l00883"></a><spanclass="lineno"> 883</span><spanclass="keywordtype">int</span> _workingMemIntermediateNodesCount; <spanclass="comment">// number of nodes with weight==-1 currently in _workingMem</span></div>
<divclass="line"><aid="l00884"name="l00884"></a><spanclass="lineno"> 884</span><spanclass="keywordtype">int</span> _stMemIntermediateNodesCount; <spanclass="comment">// number of nodes with weight==-1 currently in _stMem</span></div>
<divclass="line"><aid="l00892"name="l00892"></a><spanclass="lineno"> 892</span> std::map<int, Signature *> _signatures; <spanclass="comment">// TODO : check if a signature is already added? although it is not supposed to occur...</span></div>
<divclass="ttc"id="aUStl_8h_html"><divclass="ttname"><ahref="UStl_8h.html">UStl.h</a></div><divclass="ttdoc">Wrappers of STL for convenient functions.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1DBDriver_html"><divclass="ttname"><ahref="classrtabmap_1_1DBDriver.html">rtabmap::DBDriver</a></div><divclass="ttdoc">Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).</div><divclass="ttdef"><b>Definition</b><ahref="DBDriver_8h_source.html#l00071">DBDriver.h:72</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Feature2D_html"><divclass="ttname"><ahref="classrtabmap_1_1Feature2D.html">rtabmap::Feature2D</a></div><divclass="ttdoc">Abstract 2D feature detector and descriptor extractor for visual SLAM.</div><divclass="ttdef"><b>Definition</b><ahref="Features2d_8h_source.html#l00145">Features2d.h:145</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1GPS_html"><divclass="ttname"><ahref="classrtabmap_1_1GPS.html">rtabmap::GPS</a></div><divclass="ttdoc">WGS84 GPS fix attached to a sensor sample or graph node.</div><divclass="ttdef"><b>Definition</b><ahref="GPS_8h_source.html#l00046">GPS.h:47</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Link_html"><divclass="ttname"><ahref="classrtabmap_1_1Link.html">rtabmap::Link</a></div><divclass="ttdoc">Directed constraint between two nodes in RTAB-Map's pose graph.</div><divclass="ttdef"><b>Definition</b><ahref="Link_8h_source.html#l00054">Link.h:55</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1LocalGridMaker_html"><divclass="ttname"><ahref="classrtabmap_1_1LocalGridMaker.html">rtabmap::LocalGridMaker</a></div><divclass="ttdoc">Builds per-node local occupancy grids from laser scans or depth clouds.</div><divclass="ttdef"><b>Definition</b><ahref="LocalGridMaker_8h_source.html#l00064">LocalGridMaker.h:65</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a072ec41027a03072f1a945540b43a1b8"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a072ec41027a03072f1a945540b43a1b8">rtabmap::Memory::emptyTrash</a></div><divclass="ttdeci">void emptyTrash()</div><divclass="ttdoc">Forces the database driver to flush any queued signature/word saves.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a0827d1d23744b3693f00e518e1b0fda8"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a0827d1d23744b3693f00e518e1b0fda8">rtabmap::Memory::loadOptimizedMesh</a></div><divclass="ttdeci">cv::Mat loadOptimizedMesh(std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX >>> *polygons=0, std::vector< std::vector< Eigen::Vector2f >> *texCoords=0, cv::Mat *textures=0) const</div><divclass="ttdoc">Loads the optimized mesh previously written by saveOptimizedMesh().</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a10c44ee8a5d84480b41aa4980665d894"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a10c44ee8a5d84480b41aa4980665d894">rtabmap::Memory::getNeighborsIdRadius</a></div><divclass="ttdeci">std::map< int, float > getNeighborsIdRadius(int signatureId, float radius, const std::map< int, Transform >&optimizedPoses, int maxGraphDepth) const</div><divclass="ttdoc">Returns neighbor ids within a Euclidean radius using optimized poses.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a12042e10017298c4dcf6e435c5a2290a"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a12042e10017298c4dcf6e435c5a2290a">rtabmap::Memory::kIdStart</a></div><divclass="ttdeci">static const int kIdStart</div><divclass="ttdoc">First valid signature id assigned to a new signature (positive integer).</div><divclass="ttdef"><b>Definition</b><ahref="Memory_8h_source.html#l00105">Memory.h:105</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a1b470cb9ff41fd77a35d9a6230750446"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a1b470cb9ff41fd77a35d9a6230750446">rtabmap::Memory::dumpSignatures</a></div><divclass="ttdeci">virtual void dumpSignatures(const char *fileNameSign, bool words3D) const</div><divclass="ttdoc">Dumps signatures' word ids (and 3D positions if words3D) to fileNameSign.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a22d6c0b38d8699cdbba73b6bcdb38dd6"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a22d6c0b38d8699cdbba73b6bcdb38dd6">rtabmap::Memory::getNodeData</a></div><divclass="ttdeci">SensorData getNodeData(int locationId, bool images, bool scan, bool userData, bool occupancyGrid) const</div><divclass="ttdoc">Loads sensor data of locationId from WM or LTM.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a24d451cdf46a9cc04cce995142a101d4"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a24d451cdf46a9cc04cce995142a101d4">rtabmap::Memory::Memory</a></div><divclass="ttdeci">Memory(const ParametersMap &parameters=ParametersMap())</div><divclass="ttdoc">Constructs a Memory instance with the given parameters.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a29636c34234e6e2809e3d57329dc40d6"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a29636c34234e6e2809e3d57329dc40d6">rtabmap::Memory::computeTransform</a></div><divclass="ttdeci">Transform computeTransform(int fromId, int toId, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false)</div><divclass="ttdoc">Convenience overload: loads signatures by id and forwards to the Signature variant.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a2b91d8b5d651fbaa12a31e364c793a21"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a2b91d8b5d651fbaa12a31e364c793a21">rtabmap::Memory::deleteLocation</a></div><divclass="ttdeci">void deleteLocation(int locationId, std::list< int > *deletedWords=0, bool keepLinkedInDb=false)</div><divclass="ttdoc">Removes locationId from WM/STM and the database.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a2bba8c0aa57778bb441a97728d45a58e"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a2bba8c0aa57778bb441a97728d45a58e">rtabmap::Memory::joinTrashThread</a></div><divclass="ttdeci">void joinTrashThread()</div><divclass="ttdoc">Blocks until the asynchronous database write thread has finished pending work.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a34aa7efd5f6ce0fd3136459542ad8ebb"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a34aa7efd5f6ce0fd3136459542ad8ebb">rtabmap::Memory::computeIcpTransformMulti</a></div><divclass="ttdeci">Transform computeIcpTransformMulti(int newId, int oldId, const std::map< int, Transform >&poses, RegistrationInfo *info=0)</div><divclass="ttdoc">ICP registration of one node against an assembled cloud from multiple neighbors.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a3c029b2788f3b599480d5150120a6bee"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a3c029b2788f3b599480d5150120a6bee">rtabmap::Memory::update</a></div><divclass="ttdeci">bool update(const SensorData &data, Statistics *stats=0)</div><divclass="ttdoc">Adds a sensor observation to the map (overload without odometry pose).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a3fcaa79a33d63f7e383d05868b1316e3"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a3fcaa79a33d63f7e383d05868b1316e3">rtabmap::Memory::removeLink</a></div><divclass="ttdeci">void removeLink(int idA, int idB)</div><divclass="ttdoc">Removes any link between idA and idB (both directions).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a4140effa4830fbe679a51e975f0021a1"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a4140effa4830fbe679a51e975f0021a1">rtabmap::Memory::addLink</a></div><divclass="ttdeci">bool addLink(const Link &link, bool addInDatabase=false)</div><divclass="ttdoc">Adds a graph link between two signatures.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a44023158524dee3471a8dff43ea132db"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a44023158524dee3471a8dff43ea132db">rtabmap::Memory::close</a></div><divclass="ttdeci">void close(bool databaseSaved=true, bool postInitClosingEvents=false, const std::string &ouputDatabasePath="")</div><divclass="ttdoc">Flushes pending data and closes the database connection.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a4ae0287262c04905baab2d6f94448486"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a4ae0287262c04905baab2d6f94448486">rtabmap::Memory::computeTransform</a></div><divclass="ttdeci">Transform computeTransform(Signature &fromS, Signature &toS, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false) const</div><divclass="ttdoc">Computes the relative transform from fromS to toS using the registration pipeline.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a4aef39ff933463d9693e8f4f325f74e7"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a4aef39ff933463d9693e8f4f325f74e7">rtabmap::Memory::dumpMemoryTree</a></div><divclass="ttdeci">void dumpMemoryTree(const char *fileNameTree) const</div><divclass="ttdoc">Writes a human-readable dump of WM/STM, links and weights to fileNameTree.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a4c555fac41be4b4d44c551c010971dc3"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a4c555fac41be4b4d44c551c010971dc3">rtabmap::Memory::getNodeWordsAndGlobalDescriptors</a></div><divclass="ttdeci">void getNodeWordsAndGlobalDescriptors(int nodeId, std::multimap< int, int >&words, std::vector< cv::KeyPoint >&wordsKpts, std::vector< cv::Point3f >&words3, cv::Mat &wordsDescriptors, std::vector< GlobalDescriptor >&globalDescriptors) const</div><divclass="ttdoc">Loads the visual words, 3D points and global descriptors stored with nodeId.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a4c7c344a7f3733a8f30a6e82fbb4f20a"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a4c7c344a7f3733a8f30a6e82fbb4f20a">rtabmap::Memory::getAllSignatureIds</a></div><divclass="ttdeci">std::set< int > getAllSignatureIds(bool ignoreChildren=true) const</div><divclass="ttdoc">Returns all signature ids in WM, STM and LTM.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a4d8bfc0b85f270dbb3fc66cde079b63e"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a4d8bfc0b85f270dbb3fc66cde079b63e">rtabmap::Memory::getWeights</a></div><divclass="ttdeci">std::map< int, int > getWeights() const</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a51e89ccab2261912b09a5b7178fdd46c"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a51e89ccab2261912b09a5b7178fdd46c">rtabmap::Memory::forget</a></div><divclass="ttdeci">std::list< int > forget(const std::set< int >&ignoredIds=std::set< int >())</div><divclass="ttdoc">Transfers oldest signatures from WM to LTM to respect memory and/or time limits.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a521305f39adcdfbedebbe5bdae9efbc6"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a521305f39adcdfbedebbe5bdae9efbc6">rtabmap::Memory::getNeighborsId</a></div><divclass="ttdeci">std::map< int, int > getNeighborsId(int signatureId, int maxGraphDepth, int maxCheckedInDatabase=-1, bool incrementMarginOnLoop=false, bool ignoreLoopIds=false, bool ignoreIntermediateNodes=false, bool ignoreLocalSpaceLoopIds=false, const std::set< int >&nodesSet=std::set< int >(), double *dbAccessTime=0) const</div><divclass="ttdoc">Breadth-first walk of the pose graph from signatureId.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a539ccf650a81905db46dd6d98112f603"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a539ccf650a81905db46dd6d98112f603">rtabmap::Memory::kIdVirtual</a></div><divclass="ttdeci">static const int kIdVirtual</div><divclass="ttdoc">Reserved id for the "virtual place" used by the Bayes filter (negative).</div><divclass="ttdef"><b>Definition</b><ahref="Memory_8h_source.html#l00107">Memory.h:107</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a5ca9260a2a63fae6f3d16e1db9cbce53"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a5ca9260a2a63fae6f3d16e1db9cbce53">rtabmap::Memory::getWorkingMemSize</a></div><divclass="ttdeci">size_t getWorkingMemSize(bool ignoreIntermediateNodes=false) const</div><divclass="ttdoc">Returns the number of signatures in working memory, excluding the virtual place.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a6110b0ea8a7b35bae46083f2ce66e148"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a6110b0ea8a7b35bae46083f2ce66e148">rtabmap::Memory::_dbDriver</a></div><divclass="ttdeci">DBDriver * _dbDriver</div><divclass="ttdoc">Database driver owning the persistent storage (created by init()).</div><divclass="ttdef"><b>Definition</b><ahref="Memory_8h_source.html#l00819">Memory.h:819</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a634e2fdc0e1c93a2cb01f07c9cbac33f"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a634e2fdc0e1c93a2cb01f07c9cbac33f">rtabmap::Memory::dumpMemory</a></div><divclass="ttdeci">virtual void dumpMemory(std::string directory) const</div><divclass="ttdoc">Dumps every internal map (signatures, words, dictionary) to text files in directory.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a655f123daec9e4e50e322db9f3bbd6db"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a655f123daec9e4e50e322db9f3bbd6db">rtabmap::Memory::setDummyDictionary</a></div><divclass="ttdeci">void setDummyDictionary(bool enabled)</div><divclass="ttdoc">Enables a dummy visual word dictionary (no descriptors kept, word ids only).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a6e63312ada575016b583a4252dc0a70c"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a6e63312ada575016b583a4252dc0a70c">rtabmap::Memory::cleanupLocalGrids</a></div><divclass="ttdeci">int cleanupLocalGrids(const std::map< int, Transform >&poses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)</div><divclass="ttdoc">Removes spurious obstacle points from each node's local grid using a reference 2D map.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a76fd8c93220c16fac5843ccc2c0bec3c"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a76fd8c93220c16fac5843ccc2c0bec3c">rtabmap::Memory::updateAge</a></div><divclass="ttdeci">void updateAge(int signatureId)</div><divclass="ttdoc">Refreshes the age of signatureId in working memory, marking it as recent.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a7c7f80937a35204cb5b44faec8e99736"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a7c7f80937a35204cb5b44faec8e99736">rtabmap::Memory::updateLink</a></div><divclass="ttdeci">void updateLink(const Link &link, bool updateInDatabase=false)</div><divclass="ttdoc">Replaces an existing link with link (same endpoints and type).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a7d4e2a2281980bc1b18683fd8fc2ebeb"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a7d4e2a2281980bc1b18683fd8fc2ebeb">rtabmap::Memory::getLinks</a></div><divclass="ttdeci">std::multimap< int, Link > getLinks(int signatureId, bool lookInDatabase=false, bool withLandmarks=false) const</div><divclass="ttdoc">Returns all links of signatureId (neighbor, loop, prior, gravity, ...).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a838b48bb9c2e6ccfe4f916ea2b2d00fd"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a838b48bb9c2e6ccfe4f916ea2b2d00fd">rtabmap::Memory::removeAllVirtualLinks</a></div><divclass="ttdeci">void removeAllVirtualLinks()</div><divclass="ttdoc">Removes every virtual link in WM.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a8720df55fa6f8be933827808d364f20a"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a8720df55fa6f8be933827808d364f20a">rtabmap::Memory::memoryChanged</a></div><divclass="ttdeci">bool memoryChanged() const</div><divclass="ttdoc">Reports whether the in-memory map has been modified since the database was last loaded or reset....</div><divclass="ttdef"><b>Definition</b><ahref="Memory_8h_source.html#l00602">Memory.h:602</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a88fecb24bd16886d6086937277df5f20"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a88fecb24bd16886d6086937277df5f20">rtabmap::Memory::getLoopClosureLinks</a></div><divclass="ttdeci">std::multimap< int, Link > getLoopClosureLinks(int signatureId, bool lookInDatabase=false) const</div><divclass="ttdoc">Returns loop-closure links of signatureId; lookInDatabase also checks LTM.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a93119d10342db4a55c77b180cb249453"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a93119d10342db4a55c77b180cb249453">rtabmap::Memory::saveLocationData</a></div><divclass="ttdeci">void saveLocationData(int locationId)</div><divclass="ttdoc">Forces locationId to be flushed to the database.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a984ca01a87434b11a66dc1d96e2fff17"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a984ca01a87434b11a66dc1d96e2fff17">rtabmap::Memory::computeLikelihood</a></div><divclass="ttdeci">std::map< int, float > computeLikelihood(const Signature *signature, const std::list< int >&ids)</div><divclass="ttdoc">Computes loop-closure likelihood of signature against a set of WM ids.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a9a71f27d0de4f7e6400ca470a82be19d"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a9a71f27d0de4f7e6400ca470a82be19d">rtabmap::Memory::load2DMap</a></div><divclass="ttdeci">cv::Mat load2DMap(float &xMin, float &yMin, float &cellSize) const</div><divclass="ttdoc">Loads the 2D occupancy grid previously written by save2DMap().</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_a9e2972a53619456d75ad923fb5e9bc7e"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#a9e2972a53619456d75ad923fb5e9bc7e">rtabmap::Memory::loadOptimizedPoses</a></div><divclass="ttdeci">std::map< int, Transform > loadOptimizedPoses(Transform *lastlocalizationPose) const</div><divclass="ttdoc">Loads optimized poses previously written by saveOptimizedPoses().</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aa244b8581684b85e35d2056cf972e377"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aa244b8581684b85e35d2056cf972e377">rtabmap::Memory::reactivateSignatures</a></div><divclass="ttdeci">std::set< int > reactivateSignatures(const std::list< int >&ids, unsigned int maxLoaded, double &timeDbAccess)</div><divclass="ttdoc">Reloads signatures from LTM into WM.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aa77fb0f90185a274b3e9d0c609ce14ed"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aa77fb0f90185a274b3e9d0c609ce14ed">rtabmap::Memory::removeVirtualLinks</a></div><divclass="ttdeci">void removeVirtualLinks(int signatureId)</div><divclass="ttdoc">Removes virtual links attached to signatureId.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aae43fd080c6bc9773fa58f1c36e6684f"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aae43fd080c6bc9773fa58f1c36e6684f">rtabmap::Memory::update</a></div><divclass="ttdeci">bool update(const SensorData &data, const Transform &pose, const cv::Mat &covariance, const std::vector< float >&velocity=std::vector< float >(), Statistics *stats=0)</div><divclass="ttdoc">Adds a sensor observation with odometry pose and velocity to the map.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ab5329c43c6b185613222d8458c049848"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ab5329c43c6b185613222d8458c049848">rtabmap::Memory::getMetricConstraints</a></div><divclass="ttdeci">void getMetricConstraints(const std::set< int >&ids, std::map< int, Transform >&poses, std::multimap< int, Link >&links, bool lookInDatabase=false, bool landmarksAdded=false)</div><divclass="ttdoc">Extracts a sub-graph (poses + links) for a set of node ids.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ab7a2da56bb12845f0370a20a9497dfe0"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ab7a2da56bb12845f0370a20a9497dfe0">rtabmap::Memory::saveOptimizedPoses</a></div><divclass="ttdeci">void saveOptimizedPoses(const std::map< int, Transform >&optimizedPoses, const Transform &lastlocalizationPose) const</div><divclass="ttdoc">Persists an optimized pose graph and the last localization pose for next session.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_abba1fbec2be0cfced6e14d723fc45794"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#abba1fbec2be0cfced6e14d723fc45794">rtabmap::Memory::labelSignature</a></div><divclass="ttdeci">bool labelSignature(int id, const std::string &label)</div><divclass="ttdoc">Assigns or removes a label on id.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_abbf54d2a34838cc13ce98d41a9991918"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#abbf54d2a34838cc13ce98d41a9991918">rtabmap::Memory::parseParameters</a></div><divclass="ttdeci">virtual void parseParameters(const ParametersMap &parameters)</div><divclass="ttdoc">Re-parses parameters and propagates them to owned sub-objects.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_abd0d7277526f06861df17e03fa13e817"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#abd0d7277526f06861df17e03fa13e817">rtabmap::Memory::loadPreviewImage</a></div><divclass="ttdeci">cv::Mat loadPreviewImage() const</div><divclass="ttdoc">Loads the preview image previously written by savePreviewImage().</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ac78b3a9a3394eb63c50650a4b8ada68e"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ac78b3a9a3394eb63c50650a4b8ada68e">rtabmap::Memory::kIdInvalid</a></div><divclass="ttdeci">static const int kIdInvalid</div><divclass="ttdoc">Sentinel value indicating an invalid signature id (zero).</div><divclass="ttdef"><b>Definition</b><ahref="Memory_8h_source.html#l00109">Memory.h:109</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ac9e6bfaf161d4bd1a9f99d2352492a1d"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ac9e6bfaf161d4bd1a9f99d2352492a1d">rtabmap::Memory::reduceNode</a></div><divclass="ttdeci">int reduceNode(int id, float maxDistance=0.0f, bool keepLinkedInDb=false, int direction=0)</div><divclass="ttdoc">Merges id with a close neighbor (graph reduction).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aca3bdb688c64dd62672f2385ce6de594"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aca3bdb688c64dd62672f2385ce6de594">rtabmap::Memory::getGPS</a></div><divclass="ttdeci">void getGPS(int id, GPS &gps, Transform &offsetENU, bool lookInDatabase, int maxGraphDepth=0) const</div><divclass="ttdoc">Returns a GPS fix for id, falling back to the nearest GPS-tagged neighbor.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aca66c6d1316f9d833b279104a683ee50"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aca66c6d1316f9d833b279104a683ee50">rtabmap::Memory::computeIcpTransform</a></div><divclass="ttdeci">Transform computeIcpTransform(const Signature &fromS, const Signature &toS, Transform guess, RegistrationInfo *info=0) const</div><divclass="ttdoc">Refines a transform using ICP alignment of laser scans only.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_acab72b1076370287ac28a1d464d480f0"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#acab72b1076370287ac28a1d464d480f0">rtabmap::Memory::removeRawData</a></div><divclass="ttdeci">void removeRawData(int id, bool image=true, bool scan=true, bool userData=true, bool occupancyGrid=true)</div><divclass="ttdoc">Strips raw images, scan, user data and/or occupancy grid from id to save memory (RAM)....</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_acde7a0f34f8896c3c9f002c6cbcc614e"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#acde7a0f34f8896c3c9f002c6cbcc614e">rtabmap::Memory::getAllLinks</a></div><divclass="ttdeci">std::multimap< int, Link > getAllLinks(bool lookInDatabase, bool ignoreNullLinks=true, bool withLandmarks=false) const</div><divclass="ttdoc">Returns links of every signature; ignoreNullLinks drops empty placeholders.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_acf7e6cbe5eda50b024cbb1bc82d03b7c"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#acf7e6cbe5eda50b024cbb1bc82d03b7c">rtabmap::Memory::getLandmarksIndex</a></div><divclass="ttdeci">const std::map< int, std::set< int >>& getLandmarksIndex() const</div><divclass="ttdef"><b>Definition</b><ahref="Memory_8h_source.html#l00458">Memory.h:458</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ad14c4346a42a621b7834c60de6bc2e63"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ad14c4346a42a621b7834c60de6bc2e63">rtabmap::Memory::getLastWorkingSignature</a></div><divclass="ttdeci">const Signature * getLastWorkingSignature(bool ignoreIntermediateNodes) const</div><divclass="ttdoc">Returns the most recent WM signature.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ad59e8591cd04e2ecd93b4e706f198763"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ad59e8591cd04e2ecd93b4e706f198763">rtabmap::Memory::getMemoryUsed</a></div><divclass="ttdeci">unsigned long getMemoryUsed() const</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ae6184a6979703045f34d3e2a155eb9f3"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ae6184a6979703045f34d3e2a155eb9f3">rtabmap::Memory::getNodeInfo</a></div><divclass="ttdeci">bool getNodeInfo(int signatureId, Transform &odomPose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruth, std::vector< float >&velocity, GPS &gps, EnvSensors &sensors, bool lookInDatabase=false) const</div><divclass="ttdoc">Reads metadata of signatureId (no images/scan/words).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_ae66a7837edc6e844ee9186e61d139300"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#ae66a7837edc6e844ee9186e61d139300">rtabmap::Memory::convertToIntermediate</a></div><divclass="ttdeci">void convertToIntermediate(int locationId)</div><divclass="ttdoc">Marks locationId as intermediate (weight = -1); excludes it from loop closure.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aebef354bb315f522b4767337a6bd1ee6"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aebef354bb315f522b4767337a6bd1ee6">rtabmap::Memory::generateGraph</a></div><divclass="ttdeci">void generateGraph(const std::string &fileName, const std::set< int >&ids=std::set< int >())</div><divclass="ttdoc">Writes a Graphviz DOT file of the pose graph.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aeeabc78648bf7dc14ea1356828cdeddd"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aeeabc78648bf7dc14ea1356828cdeddd">rtabmap::Memory::init</a></div><divclass="ttdeci">bool init(const std::string &dbUrl, bool dbOverwritten=false, const ParametersMap &parameters=ParametersMap(), bool postInitClosingEvents=false)</div><divclass="ttdoc">Opens or creates a database and loads existing state into WM.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_af48dbd905dda453b6b2c2246a90d0e04"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#af48dbd905dda453b6b2c2246a90d0e04">rtabmap::Memory::getNodeCalibration</a></div><divclass="ttdeci">void getNodeCalibration(int nodeId, std::vector< CameraModel >&models, std::vector< StereoCameraModel >&stereoModels) const</div><divclass="ttdoc">Loads mono and/or stereo camera calibration stored with nodeId.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_af4cc965870dd757517b126af4860d34d"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#af4cc965870dd757517b126af4860d34d">rtabmap::Memory::getParameters</a></div><divclass="ttdeci">virtual const ParametersMap & getParameters() const</div><divclass="ttdef"><b>Definition</b><ahref="Memory_8h_source.html#l00130">Memory.h:130</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_af87e4718dd842c59fd8459430c40d78f"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#af87e4718dd842c59fd8459430c40d78f">rtabmap::Memory::cleanup</a></div><divclass="ttdeci">int cleanup()</div><divclass="ttdoc">Drops the last signature if flagged as bad, or any signature in localization mode.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_afbcfc92dc9bbc344ab106d2f21d93aaf"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#afbcfc92dc9bbc344ab106d2f21d93aaf">rtabmap::Memory::saveStatistics</a></div><divclass="ttdeci">void saveStatistics(const Statistics &statistics, bool saveWMState)</div><divclass="ttdoc">Persists statistics to the database; saveWMState records the WM id list.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_afc3de4b861e23f90bf753794bcb40e68"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#afc3de4b861e23f90bf753794bcb40e68">rtabmap::Memory::dumpDictionary</a></div><divclass="ttdeci">void dumpDictionary(const char *fileNameRef, const char *fileNameDesc) const</div><divclass="ttdoc">Dumps the visual word dictionary: references to fileNameRef, descriptors to fileNameDesc.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_afce9dbf3e5657d65540e33c59e992d83"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#afce9dbf3e5657d65540e33c59e992d83">rtabmap::Memory::incrementMapId</a></div><divclass="ttdeci">int incrementMapId(std::map< int, int > *reducedIds=0)</div><divclass="ttdoc">Starts a new map id, breaking session continuity (e.g. after localization loss).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_afe7a1c036129e7ec94905c3650e91cc8"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#afe7a1c036129e7ec94905c3650e91cc8">rtabmap::Memory::getNodesObservingLandmark</a></div><divclass="ttdeci">std::map< int, Link > getNodesObservingLandmark(int landmarkId, bool lookInDatabase) const</div><divclass="ttdoc">Returns all nodes observing landmark landmarkId, mapped to the observation link.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_aff18f08be0a7951f508276e341759f5c"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#aff18f08be0a7951f508276e341759f5c">rtabmap::Memory::setUserData</a></div><divclass="ttdeci">bool setUserData(int id, const cv::Mat &data)</div><divclass="ttdoc">Attaches user data to signature id, compressing it on the fly if needed.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Memory_html_affdd654e385b61306a2ac2ea91d13b85"><divclass="ttname"><ahref="classrtabmap_1_1Memory.html#affdd654e385b61306a2ac2ea91d13b85">rtabmap::Memory::savePreviewImage</a></div><divclass="ttdeci">void savePreviewImage(const cv::Mat &image) const</div><divclass="ttdoc">Stores a preview image (typically a thumbnail of the last frame) in the database.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1RegistrationInfo_html"><divclass="ttname"><ahref="classrtabmap_1_1RegistrationInfo.html">rtabmap::RegistrationInfo</a></div><divclass="ttdoc">Statistics and diagnostics returned by Registration.</div><divclass="ttdef"><b>Definition</b><ahref="RegistrationInfo_8h_source.html#l00047">RegistrationInfo.h:48</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1RegistrationVis_html"><divclass="ttname"><ahref="classrtabmap_1_1RegistrationVis.html">rtabmap::RegistrationVis</a></div><divclass="ttdoc">Visual registration between two signatures using features and geometry.</div><divclass="ttdef"><b>Definition</b><ahref="RegistrationVis_8h_source.html#l00060">RegistrationVis.h:61</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Registration_html"><divclass="ttname"><ahref="classrtabmap_1_1Registration.html">rtabmap::Registration</a></div><divclass="ttdoc">Abstract base for registering two observations (visual, ICP, or both).</div><divclass="ttdef"><b>Definition</b><ahref="Registration_8h_source.html#l00060">Registration.h:61</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1SensorData_html"><divclass="ttname"><ahref="classrtabmap_1_1SensorData.html">rtabmap::SensorData</a></div><divclass="ttdoc">Container class for all sensor data captured at a specific time.</div><divclass="ttdef"><b>Definition</b><ahref="SensorData_8h_source.html#l00096">SensorData.h:97</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Signature_html"><divclass="ttname"><ahref="classrtabmap_1_1Signature.html">rtabmap::Signature</a></div><divclass="ttdoc">Represents a node in RTAB-Map's pose graph.</div><divclass="ttdef"><b>Definition</b><ahref="Signature_8h_source.html#l00083">Signature.h:84</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Statistics_html"><divclass="ttname"><ahref="classrtabmap_1_1Statistics.html">rtabmap::Statistics</a></div><divclass="ttdoc">Collects and manages runtime statistics for RTAB-Map.</div><divclass="ttdef"><b>Definition</b><ahref="Statistics_8h_source.html#l00107">Statistics.h:108</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Transform_html"><divclass="ttname"><ahref="classrtabmap_1_1Transform.html">rtabmap::Transform</a></div><divclass="ttdoc">Represents a 3D rigid body transformation (rotation + translation).</div><divclass="ttdef"><b>Definition</b><ahref="Transform_8h_source.html#l00052">Transform.h:53</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1VWDictionary_html"><divclass="ttname"><ahref="classrtabmap_1_1VWDictionary.html">rtabmap::VWDictionary</a></div><divclass="ttdoc">Manages a dictionary of visual words for visual place recognition and loop closure detection.</div><divclass="ttdef"><b>Definition</b><ahref="VWDictionary_8h_source.html#l00065">VWDictionary.h:66</a></div></div>
<divclass="ttc"id="anamespacertabmap_html_ac175ef40b7a4acb632232d3d96a1199a"><divclass="ttname"><ahref="namespacertabmap.html#ac175ef40b7a4acb632232d3d96a1199a">rtabmap::EnvSensors</a></div><divclass="ttdeci">std::map< EnvSensor::Type, EnvSensor > EnvSensors</div><divclass="ttdoc">Map of environmental readings keyed by EnvSensor::Type (at most one per type).</div><divclass="ttdef"><b>Definition</b><ahref="EnvSensor_8h_source.html#l00114">EnvSensor.h:114</a></div></div>
<divclass="ttc"id="anamespacertabmap_html_ad08b6f1796a27dd7316c99c385e2cc55"><divclass="ttname"><ahref="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">rtabmap::ParametersMap</a></div><divclass="ttdeci">std::map< std::string, std::string > ParametersMap</div><divclass="ttdoc">Parameter keys mapped to their values, as used by every configurable class (see Parameters).</div><divclass="ttdef"><b>Definition</b><ahref="Parameters_8h_source.html#l00044">Parameters.h:44</a></div></div>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.9.8 </li>