**RTAB-Map** (Real-Time Appearance-Based Mapping) is a RGB-D, Stereo and Lidar 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 handheld Kinect, a stereo camera or a 3D lidar for 6DoF mapping, or on a robot equipped with a laser rangefinder for 3DoF mapping.
* M. Labbé and F. Michaud, “[RTAB-Map as an Open-Source Lidar and Visual SLAM Library for Large-Scale and Long-Term Online Operation](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/7/7a/Labbe18JFR_preprint.pdf),” in _Journal of Field Robotics_, vol. 36, no. 2, pp. 416–446, 2019. ([Wiley](https://doi.org/10.1002/rob.21831))
* M. Labbé and F. Michaud, “[Long-term online multi-session graph-based SPLAM with memory management](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/8/87/LabbeAURO2017.pdf),” in _Autonomous Robots_, vol. 42, no. 6, pp. 1133-1150, 2018. ([Springer](http://dx.doi.org/10.1007/s10514-017-9682-5))
* M. Labbé and F. Michaud, “[Online Global Loop Closure Detection for Large-Scale Multi-Session Graph-Based SLAM](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/e/eb/Labbe14-IROS.pdf),” in _Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems_, 2014. ([IEEE Xplore](http://ieeexplore.ieee.org/document/6942926/))
* Results shown in this paper can be reproduced by the [Multi-session mapping](https://github.com/introlab/rtabmap/wiki/Multi-session) tutorial.
* M. Labbé and F. Michaud, “[Appearance-Based Loop Closure Detection for Online Large-Scale and Long-Term Operation](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/b/bc/TRO2013.pdf),” in _IEEE Transactions on Robotics_, vol. 29, no. 3, pp. 734-745, 2013. ([IEEE Xplore](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6459608))
* M. Labbé and F. Michaud, “[Memory management for real-time appearance-based loop closure detection](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/f/f0/Labbe11memory.pdf),” in _Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems_, 2011, pp. 1271–1276. ([IEEE Xplore](http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6094602))
* Visit [RTAB-Map's page on IntRoLab](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/index.php/RTAB-Map) for detailed information on the loop closure detection approach and related datasets.
* For **ROS** users, take a look to [rtabmap](http://wiki.ros.org/rtabmap) page on the ROS wiki for a package overview. See also [SetupOnYourRobot](http://wiki.ros.org/rtabmap_ros/Tutorials/SetupOnYourRobot) to know how to integrate RTAB-Map on your robot.
* Visit the [wiki](https://github.com/introlab/rtabmap/wiki).
* Ask a question on [RTAB-Map Forum](http://official-rtab-map-forum.67519.x6.nabble.com/).
* Post an [issue on GitHub](https://github.com/introlab/rtabmap/issues)
* For the loop closure detection approach, visit [RTAB-Map on IntRoLab website](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/index.php/RTAB-Map)
* Visit [rtabmap_ros](http://wiki.ros.org/rtabmap_ros) wiki page for nodes documentation, demos and tutorials on ROS.
* Ask a question on [answers.ros.org](http://answers.ros.org/questions/scope:all/sort:activity-desc/tags:rtabmap_ros/page:1/) with **rtabmap** or **rtabmap_ros** tag.
* If OpenCV is built **without the nonfree** module, RTAB-Map can be used under the permissive BSD License.
* If OpenCV is built **with the nonfree** module, RTAB-Map is free for research only because it depends on **SURF** and **SIFT** features. **SIFT** and **SURF** are not free for commercial use.
[RTAB-Map Tango](https://play.google.com/store/apps/details?id=com.introlab.rtabmap&hl=en) app on Google Play Store requires access to camera to record images that will be used for creating the map. When saving, a database containing these images is created. That database is saved locally on the device (on the sd-card under RTAB-Map folder). While location permission is required to install RTAB-Map Tango, the GPS coordinates are not saved by default, the option "Settings->Mapping...->Save GPS" should be enabled first. RTAB-Map requires read/write access to RTAB-Map folder only, to save, export and open maps. RTAB-Map doesn't access any other information outside the RTAB-Map folder. RTAB-Map doesn't share information over Internet unless the user explicitly exports a map to Sketchfab, for which RTAB-Map needs the network. If so, the user will be asked for authorization ([oauth2](https://oauth.net/)) by Sketchfab (see their Privacy Policy [here](https://sketchfab.com/privacy)).
* Similar projects: [Find-Object](http://introlab.github.io/find-object/)
* 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 [Stereolabs](https://www.stereolabs.com/) for the [ZED](https://www.stereolabs.com/zed/specs/), thanks Walt (with Tango coupon discount) and Google for [Google Tango Development Kits](https://store.google.com/product/tango_tablet_development_kit) and thanks to all contributors (for donations, reporting bugs, helping me fixing bugs or making pull requests).
* New version 0.14 of RTAB-Map Tango with GPS support. See it on [play store](https://play.google.com/store/apps/details?id=com.introlab.rtabmap&hl=en).
* I uploaded a [presentation](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/3/31/Labbe2015ULaval.pdf) that I did in 2015 at Université Laval in Québec! A summary of RTAB-Map as a RGBD-SLAM approach:
* Application example: See how RTAB-Map is helping nuclear dismantling with Orano's MANUELA project (Mobile Apparatus for Nuclear Expertise and Localisation Assistance):
* I'm pleased to announce that RTAB-Map is now on **Project Tango**. The app is [available](https://play.google.com/store/apps/details?id=com.introlab.rtabmap) on Google Play Store.
* **Version 0.10.6**: Integration of a robust graph optimization approach called <a href="https://openslam.org/vertigo.html">Vertigo</a> (which uses [g2o](https://openslam.org/g2o.html) or [GTSAM](https://collab.cc.gatech.edu/borg/gtsam)), see [this page](https://github.com/introlab/rtabmap/wiki/Robust-Graph-Optimization):
* **Version 0.10.5**: New example to export data to [MeshLab](http://meshlab.sourceforge.net/) in order to add textures on a created mesh with low polygons, see [this page](https://github.com/introlab/rtabmap/wiki/Export-Raster-Layers-to-MeshLab):
* At **IROS 2014** in Chicago, a team using RTAB-Map for SLAM **won** the Kinect navigation contest held during the conference. See their press release for more details: [Winning the IROS2014 Microsoft Kinect Challenge](http://www.meetup.com/SV-ROS-users/pages/Winning_the_IROS2014_Microsoft_Connect_Challenge/). I also added the Wiki page [IROS2014KinectChallenge](https://github.com/introlab/rtabmap/wiki/IROS-2014-Kinect-Challenge) showing in details the RTAB-Map part used in their solution.
* Here a comparison between reality and what can be shown in RVIZ (you can [reproduce this demo here](http://wiki.ros.org/rtabmap_ros#Robot_mapping_with_Find-Object)):
* Added [Setup on your robot](http://wiki.ros.org/rtabmap_ros/Tutorials/SetupOnYourRobot) 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.
* I'm glad to announce that my paper submitted to [IROS 2014](http://www.iros2014.org/) was accepted! [This paper](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/e/eb/Labbe14-IROS.pdf) explains in details how RGB-D mapping with RTAB-Map is done. Results shown in this paper can be reproduced by the [Multi-session mapping](https://github.com/introlab/rtabmap/wiki/Multi-session) tutorial: