<strong>RTAB-Map</strong> (Real-Time Appearance-Based Mapping) is a RGB-D Graph-Based SLAM approach based on an incremental appearance-based loop closure detector. The loop closure detector uses a bag-of-words approach to determinate how likely a new image comes from a previous location or a new location. When a loop closure hypothesis is accepted, a new constraint is added to the map's graph, then a graph optimizer minimizes the errors in the map. A memory management approach is used to limit the number of locations used for loop closure detection and graph optimization, so that real-time constraints on large-scale environnements are always respected. RTAB-Map can be used alone with a hand-held Kinect or stereo camera for 6DoF RGB-D mapping, or on a robot equipped with a laser rangefinder for 3DoF mapping.</p>
<li>M. Labbé and F. Michaud, “<ahref="https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/e/eb/Labbe14-IROS.pdf">Online Global Loop Closure Detection for Large-Scale Multi-Session Graph-Based SLAM</a>,” in <em>Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems</em>, 2014. (<ahref="http://ieeexplore.ieee.org/document/6942926/">IEEE Xplore</a>)</li>
<li>Results shown in this paper can be reproduced by the <ahref="https://github.com/introlab/rtabmap/wiki/Multi-session">Multi-session mapping</a> tutorial.</li>
</ul>
</li>
<li>
<strong>Loop closure detection</strong>:
<ul>
<li>M. Labbé and F. Michaud, “<ahref="https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/b/bc/TRO2013.pdf">Appearance-Based Loop Closure Detection for Online Large-Scale and Long-Term Operation</a>,” in <em>IEEE Transactions on Robotics</em>, vol. 29, no. 3, pp. 734-745, 2013. (<ahref="http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6459608">IEEE Xplore</a>)</li>
<li>M. Labbé and F. Michaud, “<ahref="https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/f/f0/Labbe11memory.pdf">Memory management for real-time appearance-based loop closure detection</a>,” in <em>Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems</em>, 2011, pp. 1271–1276. (<ahref="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6094602">IEEE Xplore</a>)</li>
<li>Visit <ahref="https://introlab.3it.usherbrooke.ca/mediawiki-introlab/index.php/RTAB-Map">RTAB-Map's page on IntRoLab</a> for detailed information on the loop closure detection approach and related datasets.</li>
<p><ahref="https://github.com/introlab/rtabmap_ros#rtabmap_ros"><imgsrc="https://raw.githubusercontent.com/wiki/introlab/rtabmap/doc/logos/ros.png"alt="ROS"width="50"></a><ahref="https://github.com/introlab/rtabmap/wiki/Installation#ubuntu"><imgsrc="https://raw.githubusercontent.com/wiki/introlab/rtabmap/doc/logos/ubuntu.png"alt="Ubuntu"width="50"></a><ahref="https://github.com/introlab/rtabmap/wiki/Installation#macosx"><imgsrc="https://raw.githubusercontent.com/wiki/introlab/rtabmap/doc/logos/apple.png"alt="Mac OS X"width="50"></a><ahref="https://github.com/introlab/rtabmap/wiki/Installation#windows"><imgsrc="https://raw.githubusercontent.com/wiki/introlab/rtabmap/doc/logos/windows.png"alt="Windows"width="50"></a><ahref="https://play.google.com/store/apps/details?id=com.introlab.rtabmap"><imgsrc="https://raw.githubusercontent.com/wiki/introlab/rtabmap/doc/logos/tango.png"alt="Google Tango"width="50"></a><ahref="https://github.com/introlab/rtabmap/wiki/Installation#raspberrypi"><imgsrc="https://raw.githubusercontent.com/wiki/introlab/rtabmap/doc/logos/raspberrypi.png"alt="Raspberry Pi"width="40"></a></p>
<li>For <strong>ROS</strong> users, take a look to <ahref="http://wiki.ros.org/rtabmap">rtabmap</a> page on the ROS wiki for a package overview. See also <ahref="http://wiki.ros.org/rtabmap_ros/Tutorials/SetupOnYourRobot">SetupOnYourRobot</a> to know how to integrate RTAB-Map on your robot.</li>
<li>Visit <ahref="http://wiki.ros.org/rtabmap_ros">rtabmap_ros</a> wiki page for nodes documentation, demos and tutorials on ROS. </li>
<li>Ask a question on <ahref="http://answers.ros.org/questions/scope:all/sort:activity-desc/tags:rtabmap_ros/page:1/">answers.ros.org</a> with <strong>rtabmap</strong> or <strong>rtabmap_ros</strong> tag.</li>
<li>If OpenCV is built <strong>without the nonfree</strong> module, RTAB-Map can be used under the permissive BSD License.</li>
<li>If OpenCV is built <strong>with the nonfree</strong> module, RTAB-Map is free for research only because it depends on <strong>SURF</strong> and <strong>SIFT</strong> features. <strong>SIFT</strong> and <strong>SURF</strong> are not free for commercial use.
<p>If you find this project useful and to help me keeping this project updated, you can buy me a cup of coffee with the link below :P. It is also nice to receive new sensors to test with and even supporting them in RTAB-Map for quick SLAM demonstrations (e.g., stereo cameras, RGB-D cameras, 2D/3D LiDARs). Thanks <ahref="https://www.stereolabs.com/">Stereolabs</a> for the <ahref="https://www.stereolabs.com/zed/specs/">ZED</a>, thanks Walt (with Tango coupon discount) and Google for <ahref="https://store.google.com/product/tango_tablet_development_kit">Google Tango Development Kits</a> and thanks to all contributors (for donations, reporting bugs, helping me fixing bugs or making pull requests).</p>
<p>Application example: See how RTAB-Map is helping nuclear dismantling with Areva's MANUELA project (Mobile Apparatus for Nuclear Expertise and Localisation Assistance):</p>
<li><p><strong>Version 0.11.11</strong>: Visit the <ahref="https://github.com/introlab/rtabmap/releases/0.11.11">release page</a> for more info!</p></li>
<p>I'm pleased to announce that RTAB-Map is now on <strong>Project Tango</strong>. The app is <ahref="https://play.google.com/store/apps/details?id=com.introlab.rtabmap">available</a> on Google Play Store.</p>
<p><strong>Version 0.10.6</strong>: Integration of a robust graph optimization approach called <ahref="https://openslam.org/vertigo.html">Vertigo</a> (which uses <ahref="https://openslam.org/g2o.html">g2o</a> or <ahref="https://collab.cc.gatech.edu/borg/gtsam">GTSAM</a>), see <ahref="https://github.com/introlab/rtabmap/wiki/Robust-Graph-Optimization">this page</a>:</p>
<p><strong>Version 0.10.5</strong>: New example to export data to <ahref="http://meshlab.sourceforge.net/">MeshLab</a> in order to add textures on a created mesh with low polygons, see <ahref="https://github.com/introlab/rtabmap/wiki/Export-Raster-Layers-to-MeshLab">this page</a>:</p>
<p>At <strong>IROS 2014</strong> in Chicago, a team using RTAB-Map for SLAM <strong>won</strong> the Kinect navigation contest held during the conference. See their press release for more details: <ahref="http://www.meetup.com/SV-ROS-users/pages/Winning_the_IROS2014_Microsoft_Connect_Challenge/">Winning the IROS2014 Microsoft Kinect Challenge</a>. I also added the Wiki page <ahref="https://github.com/introlab/rtabmap/wiki/IROS-2014-Kinect-Challenge">IROS2014KinectChallenge</a> showing in details the RTAB-Map part used in their solution.</p>
<p>Here a comparison between reality and what can be shown in RVIZ (you can <ahref="http://wiki.ros.org/rtabmap_ros#Robot_mapping_with_Find-Object">reproduce this demo here</a>):</p>
<p>Added <ahref="http://wiki.ros.org/rtabmap_ros/Tutorials/SetupOnYourRobot">Setup on your robot</a> wiki page to know how to integrate RTAB-Map on your ROS robot. Multiple sensor configurations are shown but the optimal configuration is to have a 2D laser, a Kinect-like sensor and odometry.</p>
<p>I'm glad to announce that my paper submitted to <ahref="http://www.iros2014.org/">IROS 2014</a> was accepted! <ahref="https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/e/eb/Labbe14-IROS.pdf">This paper</a> explains in details how RGB-D mapping with RTAB-Map is done. Results shown in this paper can be reproduced by the <ahref="https://github.com/introlab/rtabmap/wiki/Multi-session">Multi-session mapping</a> tutorial:</p>