<divclass="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 – 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 <aclass="el"href="parameters.html">Parameter reference</a>, and print their options with <code>--help</code>.</p>
<h1><aclass="anchor"id="autotoc_md5"></a>
Working with a map</h1>
<tableclass="markdownTable">
<trclass="markdownTableHead">
<thclass="markdownTableHeadNone">Command </th><thclass="markdownTableHeadNone">What it does </th></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_info"></a><code>rtabmap-info</code></td><tdclass="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>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_export"></a><code>rtabmap-export</code></td><tdclass="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>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_report"></a><code>rtabmap-report</code></td><tdclass="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>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_recovery"></a><code>rtabmap-recovery</code></td><tdclass="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>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_reprocess"></a><code>rtabmap-reprocess</code></td><tdclass="markdownTableBodyNone">Replays the data of a database through a fresh <aclass="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>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_detectmoreloopclosures"></a><code>rtabmap-detectMoreLoopClosures</code></td><tdclass="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>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_globalba"></a><code>rtabmap-globalBundleAdjustment</code></td><tdclass="markdownTableBodyNone">Runs a global bundle adjustment over the whole graph and saves the refined poses. </td></tr>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_reducegraph"></a><code>rtabmap-reduceGraph</code></td><tdclass="markdownTableBodyNone">Merges nodes of the same location to shrink the graph, keeping the map usable for localization. </td></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_cleanuplocalgrids"></a><code>rtabmap-cleanupLocalGrids</code></td><tdclass="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><aclass="anchor"id="autotoc_md6"></a>
Recording and datasets</h1>
<tableclass="markdownTable">
<trclass="markdownTableHead">
<thclass="markdownTableHeadNone">Command </th><thclass="markdownTableHeadNone">What it does </th></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_console"></a><code>rtabmap-console</code></td><tdclass="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 <aclass="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 – unlike the dataset tools below, which run the whole SLAM pipeline. </td></tr>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_datarecorder"></a><code>rtabmap-dataRecorder</code></td><tdclass="markdownTableBodyNone">Records a live sensor into a database, using a configuration file exported from the GUI preferences. </td></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_kitti"></a><code>rtabmap-kitti_dataset</code></td><tdclass="markdownTableBodyNone">Runs a <ahref="https://www.cvlibs.net/datasets/kitti/">KITTI</a> odometry sequence (stereo, optionally Velodyne) and reports the KITTI errors against ground truth. </td></tr>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_rgbd"></a><code>rtabmap-rgbd_dataset</code></td><tdclass="markdownTableBodyNone">Same for a <ahref="https://cvg.cit.tum.de/data/datasets/rgbd-dataset">TUM RGB-D</a> sequence. </td></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_euroc"></a><code>rtabmap-euroc_dataset</code></td><tdclass="markdownTableBodyNone">Same for a <ahref="https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets">EuRoC MAV</a> sequence (stereo and IMU). </td></tr>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_cidsims"></a><code>rtabmap-cidsims_dataset</code></td><tdclass="markdownTableBodyNone">Same for a CID-SIMS sequence (RGB-D, IMU and wheel odometry). </td></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_imagesjoiner"></a><code>rtabmap-imagesJoiner</code></td><tdclass="markdownTableBodyNone">Joins images of two directories side by side, to build a stereo sequence out of two monocular ones. </td></tr>
</table>
<h1><aclass="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>
<tableclass="markdownTable">
<trclass="markdownTableHead">
<thclass="markdownTableHeadNone">Command </th><thclass="markdownTableHeadNone">What it does </th></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_camera"></a><code>rtabmap-camera</code></td><tdclass="markdownTableBodyNone">Streams a USB camera, a video file or a directory of images, and shows what the driver delivers. </td></tr>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_rgbdcamera"></a><code>rtabmap-rgbd_camera</code></td><tdclass="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>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_lidarviewer"></a><code>rtabmap-lidar_viewer</code></td><tdclass="markdownTableBodyNone">Shows the scans of a network lidar (VLP-16). </td></tr>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_calibration"></a><code>rtabmap-calibration</code></td><tdclass="markdownTableBodyNone">Calibrates a camera or a stereo pair from a chessboard, and saves the model RTAB-Map reads. </td></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_odometryviewer"></a><code>rtabmap-odometryViewer</code></td><tdclass="markdownTableBodyNone">Runs <aclass="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>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_databaseviewer"></a><code>rtabmap-databaseViewer</code></td><tdclass="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><aclass="anchor"id="autotoc_md8"></a>
Algorithm evaluation</h1>
<tableclass="markdownTable">
<trclass="markdownTableHead">
<thclass="markdownTableHeadNone">Command </th><thclass="markdownTableHeadNone">What it does </th></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_matcher"></a><code>rtabmap-matcher</code></td><tdclass="markdownTableBodyNone">Registers two images with the <aclass="el"href="classrtabmap_1_1RegistrationVis.html">visual</a> or <aclass="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>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_stereoeval"></a><code>rtabmap-stereoEval</code></td><tdclass="markdownTableBodyNone">Evaluates the stereo correspondence parameters against a ground truth disparity map (Middlebury format). </td></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_epipolar"></a><code>rtabmap-epipolar_geometry</code></td><tdclass="markdownTableBodyNone">Shows the epipolar geometry between two images. </td></tr>
<trclass="markdownTableRowEven">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_extractobject"></a><code>rtabmap-extractObject</code></td><tdclass="markdownTableBodyNone">Extracts an object lying on a plane from a point cloud file. </td></tr>
<trclass="markdownTableRowOdd">
<tdclass="markdownTableBodyNone"><aclass="anchor"id="tool_vocabulary"></a><code>rtabmap-vocabularyComparison</code></td><tdclass="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 -->
<divid="nav-path"class="navpath"><!-- id is needed for treeview function! -->
<ul>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.9.8 </li>