video ## Overview RTAB-Map logo **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. #### Illumination-Invariant Visual Re-Localization * M. Labbé and F. Michaud, “[Multi-Session Visual SLAM for Illumination-Invariant Re-Localization in Indoor Environments](https://arxiv.org/abs/2103.03827),” in ''Frontiers in Robotics and AI'', vol. 9, 2022. ([Frontiers](https://doi.org/10.3389/frobt.2022.801886)) ([Dataset link](https://github.com/introlab/rtabmap/tree/master/archive/2022-IlluminationInvariant)) #### Lidar and Visual SLAM * 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)) #### Simultaneous Planning, Localization and Mapping (SPLAM) * 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)) #### Multi-session SLAM * 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. #### Loop closure detection * 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. ## Install ROS Ubuntu Mac OS X Windows iOS Google Tango  Raspberry Pi Docker * [Installation](https://github.com/introlab/rtabmap/wiki/Installation) instructions. * [Tutorials](https://github.com/introlab/rtabmap/wiki/Tutorials). * [Tools](https://github.com/introlab/rtabmap/wiki/Tools). * 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. ### Troubleshooting **Standalone** * Visit the [wiki](https://github.com/introlab/rtabmap/wiki). * Ask a question on [RTAB-Map Forum](http://official-rtab-map-forum.206.s1.nabble.com/) (**New address! August 9, 2021**). * 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) **ROS** * 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. ## License * 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** features. **SURF** is not free for commercial use. Note that SIFT patent has expired, so it can be a good free equivalent of SURF. * SURF noncommercial notice: http://www.vision.ee.ethz.ch/~surf/download.html ## Privacy Policy RTAB-Map App on [Google Play Store](https://play.google.com/store/apps/details?id=com.introlab.rtabmap&hl=en) or [Apple Store](https://apps.apple.com/ca/app/rtab-map-3d-lidar-scanner/id1564774365) 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 or anywhere else, 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)). This website uses Google Analytics. See their Privacy Policy [here](https://support.google.com/analytics/answer/6004245?hl=en). ## Author * [Mathieu Labbé](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/index.php?title=Mathieu_Labbe&setlang=en) * [RTAB-Map's page at IntRoLab](http://introlab.3it.usherbrooke.ca/mediawiki-introlab/index.php/RTAB-Map) * [Papers](https://introlab.3it.usherbrooke.ca/mediawiki-introlab/index.php/RTAB-Map#Publications) * 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). [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X8TCXXHHDL62Q) ## What's new ### January 2022 Added [demo](https://github.com/introlab/rtabmap_ros/blob/master/launch/demo/demo_catvehicle_mapping.launch) for car mapping and localization with [CitySim](https://github.com/osrf/citysim) simulator and [CAT Vehicle](https://github.com/jmscslgroup/catvehicle): [![Watch the video](https://img.youtube.com/vi/vKCTg4plPkw/maxresdefault.jpg)](https://youtu.be/vKCTg4plPkw) ### December 2021 Added indoor drone visual navigation example using [move_base](http://wiki.ros.org/move_base), [PX4](https://github.com/PX4/PX4-Autopilot) and [mavros](http://wiki.ros.org/mavros): [![Watch the video](https://img.youtube.com/vi/A487ybS7E4E/maxresdefault.jpg)](https://youtu.be/A487ybS7E4E) More info on the [rtabmap-drone-example](https://github.com/matlabbe/rtabmap_drone_example) github repo. ### June 2021 * I'm pleased to announce that RTAB-Map is now on **iOS** (iPhone/iPad with LiDAR required). The app is [available](https://apps.apple.com/ca/app/rtab-map-3d-lidar-scanner/id1564774365) on App Store. video ### December 2020 New release [v0.20.7](https://github.com/introlab/rtabmap/releases/tag/0.20.7)! ### August 2020 New release [v0.20.3](https://github.com/introlab/rtabmap/releases/tag/0.20.3)! ### July 2020 New release [v0.20.2](https://github.com/introlab/rtabmap/releases/tag/0.20.2)! ### November 2019 * [AliceVision](https://alicevision.org/) library has been integrated to RTAB-Map to provide higher texture quality. Compare the [updated version of the Ski Cottage on Sketchfab](https://skfb.ly/6OyUy) with the [old version](https://skfb.ly/6KBFz). Look at how the edges between camera texures are smoother (thx to multi-band blending), decreasing significantly the sharp edge artifacts. Multi-band blending approach can be enabled in File->Export Clouds dialog under Texturing section. RTAB-Map should be built with AliceVision support (CUDA is not required as only texture pipeline is used). A [patch](https://gist.github.com/matlabbe/469bba5e7733ad6f2e3d7857b84f1f9e) is required to avoid problems with Eigen, refer to Docker file [here](https://github.com/introlab/rtabmap/blob/e7be12e0ff7ae95e492837f0414d553c977d6d4d/docker/bionic/Dockerfile#L69-L116). texture_oldtexture_new ### September 2017 * 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). ### July 2017 * New version 0.13 of RTAB-Map Tango. 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: RTAB-Map overview ### March 2017 * New tutorial: [Multi-Session Mapping with RTAB-Map Tango](https://github.com/introlab/rtabmap/wiki/Multi-Session-Mapping-with-RTAB-Map-Tango) MeshCloud ### February 2017 * **Version 0.11.14** : Visit the [release page](https://github.com/introlab/rtabmap/releases/0.11.14) for more info! * Tango app also updated: video ### October 2016 * Application example: See how RTAB-Map is helping nuclear dismantling with Orano's MANUELA project (Mobile Apparatus for Nuclear Expertise and Localisation Assistance): video * **Version 0.11.11**: Visit the [release page](https://github.com/introlab/rtabmap/releases/0.11.11) for more info! ### July 2016 * **Version 0.11.8**: Visit the [release page](https://github.com/introlab/rtabmap/releases/0.11.8) for more info! ### June 2016 * **Version 0.11.7**: Visit the [release page](https://github.com/introlab/rtabmap/releases/0.11.7) for more info! ### February 2016 * 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. video * Screenshots: rtabmap tango 1 rtabmap tango 2 ### October 2015 * **Version 0.10.10**: Visit the [release page](https://github.com/introlab/rtabmap/releases/0.10.10) for more info! ### September 2015 * **Version 0.10.6**: Integration of a robust graph optimization approach called Vertigo (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): video ### August 2015 * **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): Texture tutorial ### October 2014 * New example to speed up RTAB-Map's odometry, see [this page](https://github.com/introlab/rtabmap/wiki/Change-parameters): video ### September 2014 * 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. video ### August 2014 * 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)): video ### July 2014 * 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. AZIMUT3 Onboard mapping | Remote mapping ------------ | ------------- | ### June 2014 * 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: Multi-session mapping ## Videos * **RGBD-SLAM** video video [![video](https://raw.githubusercontent.com/wiki/introlab/rtabmap/doc/video_screenshots/onlinergbdslam.jpeg)](http://www.youtube.com/watch?v=AMLwjo80WzI) * **Appearance-based loop closure detection** video video * More loop closure detection videos [here](http://introlab.3it.usherbrooke.ca/mediawiki-introlab/index.php/RTAB-Map).