Files
rtabmap/api/latest/tools.html
T

197 lines
15 KiB
HTML

<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTAB-Map: Command-line tools</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
<script type="text/javascript" src="../versions.js"></script>
<script type="text/javascript" src="version-switcher.js"></script>
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">RTAB-Map<span id="projectnumber">&#160;0.23.12</span>
</div>
<div id="projectbrief">Real-Time Appearance-Based Mapping</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('tools.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">Command-line tools</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Building RTAB-Map installs a set of executables next to the libraries. They are built on the same API these pages document, so each one is also a worked example of it &ndash; and the quickest way to inspect, replay or convert a map without writing code.</p>
<p>All of them take the <code>--Param Group/Name value</code> arguments described in the <a class="el" href="parameters.html">Parameter reference</a>, and print their options with <code>--help</code>.</p>
<h1><a class="anchor" id="autotoc_md5"></a>
Working with a map</h1>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Command </th><th class="markdownTableHeadNone">What it does </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_info"></a><code>rtabmap-info</code> </td><td class="markdownTableBodyNone">Prints a database summary: version, sizes, parameters and per-node statistics. <code>--diff</code> shows only the parameters that differ from the defaults, or from another database. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_export"></a><code>rtabmap-export</code> </td><td class="markdownTableBodyNone">Exports the map: assembled point cloud, mesh or textured mesh (<code>.ply</code>, <code>.pcd</code>, <code>.obj</code>), 2D occupancy grid, poses and camera images. Filtering, decimation, colour and texturing are all options. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_report"></a><code>rtabmap-report</code> </td><td class="markdownTableBodyNone">Reports the statistics recorded in one or several databases: RMSE against ground truth, timings, loop closures. Plots them when built with Qt. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_recovery"></a><code>rtabmap-recovery</code> </td><td class="markdownTableBodyNone">Repairs a database whose session was not closed properly (e.g. after a crash), by rebuilding it from the nodes and links that can still be read. The original is kept as <code>*.backup.db</code> unless <code>-d</code> is given. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_reprocess"></a><code>rtabmap-reprocess</code> </td><td class="markdownTableBodyNone">Replays the data of a database through a fresh <a class="el" href="classrtabmap_1_1Rtabmap.html">Rtabmap</a> instance, with different parameters, and writes a new database. Several databases can be merged in one run. The way to try a new configuration on recorded data. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_detectmoreloopclosures"></a><code>rtabmap-detectMoreLoopClosures</code> </td><td class="markdownTableBodyNone">Looks for additional loop closures in an existing map, by clustering nodes that are close in the optimized graph, and re-optimizes it. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_globalba"></a><code>rtabmap-globalBundleAdjustment</code> </td><td class="markdownTableBodyNone">Runs a global bundle adjustment over the whole graph and saves the refined poses. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_reducegraph"></a><code>rtabmap-reduceGraph</code> </td><td class="markdownTableBodyNone">Merges nodes of the same location to shrink the graph, keeping the map usable for localization. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_cleanuplocalgrids"></a><code>rtabmap-cleanupLocalGrids</code> </td><td class="markdownTableBodyNone">Clears from the local occupancy grids the space that the assembled global grid shows as empty, so that removed obstacles do not reappear when the map is regenerated. </td></tr>
</table>
<h1><a class="anchor" id="autotoc_md6"></a>
Recording and datasets</h1>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Command </th><th class="markdownTableHeadNone">What it does </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_console"></a><code>rtabmap-console</code> </td><td class="markdownTableBodyNone">Runs loop closure detection without a GUI on a directory of images, a video or a database, and reports the loop closures found. Appearance-only: it forces <a class="el" href="classrtabmap_1_1Parameters.html#a660983e23247cd39034f2ea07cfcd54b">RGBD/Enabled</a> to false and feeds images without a pose, so there is no odometry, no graph optimization and no metric map &ndash; unlike the dataset tools below, which run the whole SLAM pipeline. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_datarecorder"></a><code>rtabmap-dataRecorder</code> </td><td class="markdownTableBodyNone">Records a live sensor into a database, using a configuration file exported from the GUI preferences. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_kitti"></a><code>rtabmap-kitti_dataset</code> </td><td class="markdownTableBodyNone">Runs a <a href="https://www.cvlibs.net/datasets/kitti/">KITTI</a> odometry sequence (stereo, optionally Velodyne) and reports the KITTI errors against ground truth. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_rgbd"></a><code>rtabmap-rgbd_dataset</code> </td><td class="markdownTableBodyNone">Same for a <a href="https://cvg.cit.tum.de/data/datasets/rgbd-dataset">TUM RGB-D</a> sequence. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_euroc"></a><code>rtabmap-euroc_dataset</code> </td><td class="markdownTableBodyNone">Same for a <a href="https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets">EuRoC MAV</a> sequence (stereo and IMU). </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_cidsims"></a><code>rtabmap-cidsims_dataset</code> </td><td class="markdownTableBodyNone">Same for a CID-SIMS sequence (RGB-D, IMU and wheel odometry). </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_imagesjoiner"></a><code>rtabmap-imagesJoiner</code> </td><td class="markdownTableBodyNone">Joins images of two directories side by side, to build a stereo sequence out of two monocular ones. </td></tr>
</table>
<h1><a class="anchor" id="autotoc_md7"></a>
Sensors and calibration</h1>
<p>These need the GUI library (Qt), so they are only built when it is available.</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Command </th><th class="markdownTableHeadNone">What it does </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_camera"></a><code>rtabmap-camera</code> </td><td class="markdownTableBodyNone">Streams a USB camera, a video file or a directory of images, and shows what the driver delivers. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_rgbdcamera"></a><code>rtabmap-rgbd_camera</code> </td><td class="markdownTableBodyNone">Same for the RGB-D and stereo drivers (OpenNI, Freenect, RealSense, Kinect for Azure, ZED...), to check a device before mapping with it. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_lidarviewer"></a><code>rtabmap-lidar_viewer</code> </td><td class="markdownTableBodyNone">Shows the scans of a network lidar (VLP-16). </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_calibration"></a><code>rtabmap-calibration</code> </td><td class="markdownTableBodyNone">Calibrates a camera or a stereo pair from a chessboard, and saves the model RTAB-Map reads. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_odometryviewer"></a><code>rtabmap-odometryViewer</code> </td><td class="markdownTableBodyNone">Runs <a class="el" href="classrtabmap_1_1Odometry.html">Odometry</a> alone on a live sensor and shows the features, the local map and the estimated trajectory. Useful to tune the <code>Odom/</code> and <code>Vis/</code> parameters. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_databaseviewer"></a><code>rtabmap-databaseViewer</code> </td><td class="markdownTableBodyNone">Inspects a database: browse the nodes and their data, the graph and its links, add or remove constraints, re-optimize, regenerate the grids and export. </td></tr>
</table>
<h1><a class="anchor" id="autotoc_md8"></a>
Algorithm evaluation</h1>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Command </th><th class="markdownTableHeadNone">What it does </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_matcher"></a><code>rtabmap-matcher</code> </td><td class="markdownTableBodyNone">Registers two images with the <a class="el" href="classrtabmap_1_1RegistrationVis.html">visual</a> or <a class="el" href="classrtabmap_1_1RegistrationIcp.html">ICP</a> pipeline and draws the correspondences. The direct way to compare feature detectors and matching parameters on a hard pair. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_stereoeval"></a><code>rtabmap-stereoEval</code> </td><td class="markdownTableBodyNone">Evaluates the stereo correspondence parameters against a ground truth disparity map (Middlebury format). </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_epipolar"></a><code>rtabmap-epipolar_geometry</code> </td><td class="markdownTableBodyNone">Shows the epipolar geometry between two images. </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_extractobject"></a><code>rtabmap-extractObject</code> </td><td class="markdownTableBodyNone">Extracts an object lying on a plane from a point cloud file. </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="anchor" id="tool_vocabulary"></a><code>rtabmap-vocabularyComparison</code> </td><td class="markdownTableBodyNone">Compares the nearest-neighbour strategies of the visual dictionary on a saved vocabulary. Built only with the OpenCV non-free module. </td></tr>
</table>
<p>The GUI application itself is <code>rtabmap</code>; everything the tools above do offline is also reachable from its menus. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>