Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
RTAB-Map
Information
Type SLAM library
Industry Robotics, computer vision
Developer Mathieu Labbé, IntRoLab (Université de Sherbrooke)
Written In C++
Operating System Linux (Ubuntu), Windows, macOS, iOS, Android
License BSD (research-only when built with OpenCV's nonfree SURF module)
Supported Devices RGB-D cameras, stereo cameras, 2D and 3D lidars; iPhone and iPad with LiDAR (iOS app)
Release Date 2013 (open-source release)
Website https://introlab.github.io/rtabmap


RTAB-Map (Real-Time Appearance-Based Mapping) is an open-source, graph-based simultaneous localization and mapping (SLAM) library and standalone application developed by Mathieu Labbé and François Michaud at IntRoLab, Université de Sherbrooke, in Quebec, Canada. The project page describes it as an "RGB-D, Stereo and Lidar Graph-Based SLAM approach based on an incremental appearance-based loop closure detector", in which a bag-of-words model estimates whether a new image comes from a previously visited place or a new one.[1] When a loop closure is accepted, a new constraint is added to the map's graph and a graph optimizer reduces the accumulated error. A memory management scheme limits how many locations are used for loop closure detection and optimization, so that processing stays within real-time limits in large environments.[1]

Development began in 2009, and the code was released as an open-source library in 2013.[2] Besides a C++ library and a Robot Operating System (ROS) package for robots, RTAB-Map is available as a handheld 3D scanning app. The iOS version uses Apple's ARKit visual-inertial odometry as its tracking front end, and earlier Android versions ran on Google's Tango augmented reality devices.[3][1]

Reviewed 12 October 2026. Checked all seven papers (authors, titles, venues, pages, DOIs via Crossref and arXiv text), the project page news and licence, GitHub repository, release 0.23.8, tags and READMEs, the Android source tree, the App Store listing and version history, and the UploadVR article. About review dates.

History

Loop closure detector (2009-2013)

RTAB-Map started as a loop closure detection method, not as a full SLAM system. Labbé and Michaud presented its memory management approach at the 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). The paper described a "real-time loop closure detection approach for large-scale and long-term SLAM" that keeps the computation time for each new observation under a fixed limit.[4] The full method appeared in IEEE Transactions on Robotics in June 2013. In it, the most recent and most frequently observed locations are kept in a Working Memory (WM) used for loop closure detection, and the others move to a Long-Term Memory (LTM). When the current location matches one in WM, associated locations in LTM can be brought back for further detections.[5]

That paper built its visual vocabulary incrementally online, rather than training it in advance, using SURF features extracted with OpenCV. A Bayesian filter estimated whether the current image showed a new place or a revisited one.[5] It evaluated the method on ten standard datasets from other loop closure research, on a 2 km loop around the Université de Sherbrooke campus, and on a 7-hour dataset of images captured from the racing video game Need for Speed: Most Wanted.[5] The paper gave the code's address as rtabmap.googlecode.com.[5] The project's GitHub repository was created in August 2014.[6]

Graph-based SLAM and multi-session mapping (2014-2019)

At IROS 2014, Labbé and Michaud combined the loop closure detector with a graph-based SLAM system for multi-session mapping. This setting covers the "kidnapped robot" problem, where a robot starts without knowing where it is relative to an earlier map. They tested it on five indoor mapping sessions recorded with a robot carrying a laser rangefinder and a Kinect.[7] A paper in Autonomous Robots, published online in November 2017, extended the memory mechanism to simultaneous planning, localization and mapping (SPLAM). In the reported test, a robot with a short-range laser rangefinder and an RGB-D camera patrolled 10.5 km of an indoor environment autonomously over 11 sessions.[8]

The project's news page says a team using RTAB-Map for SLAM won the Kinect navigation contest at IROS 2014 in Chicago.[1] In February 2016 the developers released an RTAB-Map app for Google's Project Tango on the Google Play Store. A multi-session mapping tutorial for the Tango app followed in March 2017, and version 0.14 of RTAB-Map Tango added GPS support in September 2017.[1] In a March 2017 UploadVR article on Tango 3D capture, Sketchfab co-founder Alban Denoyel listed RTAB-Map among the Tango capture apps and noted that it included native export to Sketchfab.[9]

The main reference paper for the extended library appeared in the Journal of Field Robotics, published online in October 2018 and in the March 2019 issue. The authors extended RTAB-Map to support both visual and lidar SLAM so that the two approaches could be compared on the same system. They evaluated it on the KITTI, EuRoC, TUM RGB-D and MIT Stata Center datasets.[2][10]

Mobile apps and later work (2020-present)

In June 2021 the developer announced an iOS version of RTAB-Map for iPhone and iPad models with a LiDAR sensor, distributed through the App Store.[1] A 2022 paper in Frontiers in Robotics and AI used RTAB-Map to build multi-session visual maps that capture the same indoor space under different lighting conditions, so that re-localization works at different times of day. It compared SURF, SIFT, BRIEF, BRISK, KAZE, DAISY and SuperPoint features. The data were six mapping and six localization sessions recorded at 30-minute intervals during sunset with a Google Tango phone in an apartment.[11] The ROS 2 packages were overhauled in December 2024 with new demos and examples, along with fixes for synchronization delays.[1]

Architecture

RTAB-Map represents the map as a graph of nodes and links. Each node stores the odometry pose, raw sensor data and derived data such as visual words and a local occupancy grid. Links store rigid transformations between nodes and come in three kinds: neighbor links between consecutive nodes, loop closure links, and proximity links. All of them serve as constraints in graph optimization. When a new loop closure or proximity link is added, optimization spreads the error correction across the whole graph to reduce odometry drift.[2]

Memory management

Memory is divided into a Short-Term Memory (STM), a Working Memory and a Long-Term Memory. New nodes enter the STM, which acts as a fixed-size buffer and is excluded from loop closure detection because its recent locations would bias the hypotheses. When the update time exceeds a set time threshold, or the WM exceeds a set number of nodes, nodes move from WM to LTM. A weighting heuristic keeps locations that have been observed longer in WM, and the oldest of the lowest-weighted nodes are transferred first. After a loop closure with a location in WM, its neighbors can be retrieved from LTM.[2]

Odometry

Odometry is an external input to the SLAM module, so RTAB-Map can be fed with visual odometry, lidar odometry, wheel odometry or another source.[2] Its own visual odometry has two modes, Frame-To-Frame (F2F) and Frame-To-Map (F2M), for RGB-D or stereo cameras. The pipeline detects GoodFeaturesToTrack (GFTT) features, matches them using BRIEF descriptors or optical flow, estimates motion with OpenCV's Perspective-n-Point RANSAC, and refines the result with local bundle adjustment. Lidar odometry has matching Scan-To-Scan and Scan-To-Map modes based on iterative closest point (ICP) registration with the libpointmatcher library.[2] The 2019 paper lists third-party odometry approaches integrated for comparison: FOVIS, Viso2, DVO, OKVIS, ORB-SLAM2 (with its own loop closure disabled), MSCKF and Google Project Tango's visual-inertial odometry. An open-source version of LOAM was added for lidar.[2]

Loop closure and graph optimization

Loop closure detection uses the bag-of-words approach from the 2013 paper. Visual features from each new node are quantized into an incremental vocabulary of visual words, using any feature type available in OpenCV, such as SURF, SIFT, ORB or BRIEF. A tf-idf score between the new node and the nodes in WM updates a Bayes filter. When a hypothesis passes a threshold, the transformation is computed and, if accepted, added as a link. When lidar data is available, the link is refined with ICP.[2] Proximity detection uses laser scans to find links to nearby nodes, for example when a robot drives back down a corridor in the opposite direction and the camera cannot recognize the place.[2]

The library integrates three graph optimization back ends: TORO, g2o and GTSAM. The 2019 paper reports that GTSAM was then the default because it was slightly more robust for multi-session mapping than g2o.[2] To reject wrong loop closures caused by similar-looking places, RTAB-Map discards the new loop closure and proximity links if a link's transformation changes by more than a set factor of its translational variance after optimization.[2]

Map outputs

From local occupancy grids stored in each node, RTAB-Map assembles global outputs: a 2D occupancy grid, a 3D occupancy grid (OctoMap) and dense point clouds. The 2019 paper describes these outputs as maps that external modules, such as navigation algorithms, can use.[2] The project news page reports that AliceVision was integrated in November 2019 to improve texture quality, using multi-band blending when exporting textured meshes.[1]

Platforms and integration

RTAB-Map is distributed as a cross-platform C++ library, a desktop application, a ROS package and mobile apps.[2][6] The ROS wrapper, rtabmap_ros, has been part of ROS since 2013.[2] Its ROS 2 version requires ROS 2 Humble or later and is split into packages for SLAM, odometry, sensor synchronization, utilities and visualization.[12] As of October 2026, the main repository lists binary packages for ROS 1 Noetic and for the ROS 2 Humble, Jazzy, Kilted, Lyrical and Rolling distributions, plus Docker images.[6]

The Windows binaries of version 0.23.8 include drivers for OpenNI and OpenNI2 devices, Kinect for Xbox One, Kinect for Azure, Intel RealSense cameras (T265, D415, D435, D435i, L515), the Stereolabs ZED SDK, Luxonis DepthAI (OAK-D, OAK-D Lite) and the Orbbec SDK (Astra 2). The CUDA build adds SuperPoint learned features.[13]

Mobile apps

App Platform Tracking front end Notes
RTAB-Map Tango Android (Tango devices) Tango Released on Google Play in February 2016.[1] The project's install guide lists APK builds for the ASUS ZenFone AR, the Lenovo Phab 2 Pro and the Project Tango tablet.[14]
RTAB-Map (Android) Android ARCore, Tango, Huawei AR Engine The Android source tree contains camera modules for ARCore, Huawei AR Engine and Tango.[15] The install guide describes an "RTAB-Map ARCore" APK built from source.[14]
RTAB-Map - 3D LiDAR Scanner iOS and iPadOS 14.3 or later ARKit VIO Free; released June 2021; 3D reconstruction requires a LiDAR sensor; version 0.22.1 (23 December 2025).[3][1]

Apple's App Store listing states that "ARKit's visual inertial odometry (VIO) is used as the SLAM front-end for RTAB-Map (the SLAM back-end)". Unlike scanning apps that optimize the map only after capture, the app detects loop closures and corrects the map during scanning. Listed features include multi-session mapping, AprilTag markers to help find loop closures in textureless areas, a "Mixed AR/VR First-Person" visualization mode, raw ARKit data recording at up to 60 Hz, and export to PLY, LAS or OBJ.[3] The 0.21.11 update (March 2025) added a VR measuring tool for use after an optimized mesh is assembled.[3]

Use in VR and AR research

RTAB-Map appears in research that pairs robot mapping with augmented reality displays. In a system presented at IROS 2020, Shuwen Qiu and co-authors built a shared AR workspace for human-robot interaction. The robot's perception module, a Kinect 2 RGB-D sensor and a Hokuyo lidar, built the 3D structure of the environment with RTAB-Map, while human participants wore a Microsoft HoloLens.[16][17] A 2024 preprint by Michael D. Friske displayed point cloud maps built by a mobile robot's SLAM system in an Android AR app, made with Unity, that used ARCore for device pose estimation. The author tested both ORB-SLAM3 and RTAB-Map. He found the monocular ORB-SLAM3 maps, which lacked color and consistent scale, not useful for visualization, and reported that RTAB-Map's point cloud density was "far superior for visualization", while noting that RGB-D input might improve ORB-SLAM3's results.[18]

Licensing

The repository's licence file contains a three-clause BSD-style licence, with copyright held by Mathieu Labbé, IntRoLab, Université de Sherbrooke.[19] The project page adds a condition: if OpenCV is built without its nonfree module, RTAB-Map can be used under the permissive BSD licence, but if OpenCV is built with the nonfree module, RTAB-Map is "free for research only" because it then depends on the patented SURF features. The page notes that the SIFT patent has expired.[1]

Current status

RTAB-Map remains under active development. As of 12 October 2026, the latest GitHub release was version 0.23.8, published on 5 July 2026, and the repository carries later ROS distribution tags up to 0.23.13 (1 October 2026).[13][20] Commits were still being added to the main branch on 12 October 2026.[6]

See also

References

  1. ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 Mathieu Labbé. "RTAB-Map - Real-Time Appearance-Based Mapping". RTAB-Map project page. IntRoLab, Université de Sherbrooke. https://introlab.github.io/rtabmap/. Retrieved 2026-10-12.
  2. ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 Mathieu Labbé, François Michaud (2019). "RTAB-Map as an open-source lidar and visual simultaneous localization and mapping library for large-scale and long-term online operation". Journal of Field Robotics, vol. 36, no. 2, pp. 416-446. Wiley. https://doi.org/10.1002/rob.21831. Retrieved 2026-10-12.
  3. ↑ 3.0 3.1 3.2 3.3 "RTAB-Map - 3D LiDAR Scanner". App Store. Apple Inc.. https://apps.apple.com/ca/app/rtab-map-3d-lidar-scanner/id1564774365. Retrieved 2026-10-12.
  4. ↑ Mathieu Labbé, François Michaud (2011-09). "Memory management for real-time appearance-based loop closure detection". 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems, pp. 1271-1276. IEEE. https://doi.org/10.1109/IROS.2011.6094602. Retrieved 2026-10-12.
  5. ↑ 5.0 5.1 5.2 5.3 Mathieu Labbé, François Michaud (2013-06). "Appearance-Based Loop Closure Detection for Online Large-Scale and Long-Term Operation". IEEE Transactions on Robotics, vol. 29, no. 3, pp. 734-745. IEEE. https://doi.org/10.1109/TRO.2013.2242375. Retrieved 2026-10-12.
  6. ↑ 6.0 6.1 6.2 6.3 "introlab/rtabmap: RTAB-Map library and standalone application". GitHub. IntRoLab. https://github.com/introlab/rtabmap. Retrieved 2026-10-12.
  7. ↑ Mathieu Labbé, François Michaud (2014-09). "Online global loop closure detection for large-scale multi-session graph-based SLAM". 2014 IEEE/RSJ International Conference on Intelligent Robots and Systems, pp. 2661-2666. IEEE. https://doi.org/10.1109/IROS.2014.6942926. Retrieved 2026-10-12.
  8. ↑ Mathieu Labbé, François Michaud (2017-11-16). "Long-term online multi-session graph-based SPLAM with memory management". Autonomous Robots, vol. 42, no. 6, pp. 1133-1150. Springer. https://doi.org/10.1007/s10514-017-9682-5. Retrieved 2026-10-12.
  9. ↑ Alban Denoyel (2017-03-20). "Google Tango Brings Mobile 3D Photography to Life". UploadVR. https://www.uploadvr.com/google-tango-brings-mobile-3d-photography-life/. Retrieved 2026-10-12.
  10. ↑ Mathieu Labbé, François Michaud (2024-03-10). "RTAB-Map as an Open-Source Lidar and Visual SLAM Library for Large-Scale and Long-Term Online Operation (preprint)". arXiv. https://arxiv.org/abs/2403.06341. Retrieved 2026-10-12.
  11. ↑ Mathieu Labbé, François Michaud (2022-06-16). "Multi-Session Visual SLAM for Illumination-Invariant Re-Localization in Indoor Environments". Frontiers in Robotics and AI, vol. 9. https://doi.org/10.3389/frobt.2022.801886. Retrieved 2026-10-12.
  12. ↑ "introlab/rtabmap_ros: RTAB-Map's ROS package". GitHub. IntRoLab. https://github.com/introlab/rtabmap_ros. Retrieved 2026-10-12.
  13. ↑ 13.0 13.1 "RTAB-Map 0.23.8 release". GitHub. IntRoLab. 2026-07-05. https://github.com/introlab/rtabmap/releases/tag/0.23.8. Retrieved 2026-10-12.
  14. ↑ 14.0 14.1 "Installation". RTAB-Map wiki, GitHub. IntRoLab. https://github.com/introlab/rtabmap/wiki/Installation. Retrieved 2026-10-12.
  15. ↑ "rtabmap/app/android/jni". GitHub. IntRoLab. https://github.com/introlab/rtabmap/tree/master/app/android/jni. Retrieved 2026-10-12.
  16. ↑ Shuwen Qiu, Hangxin Liu, Zeyu Zhang, Yixin Zhu, Song-Chun Zhu (2020). "Human-Robot Interaction in a Shared Augmented Reality Workspace". 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), pp. 11413-11418. IEEE. https://doi.org/10.1109/IROS45743.2020.9340781. Retrieved 2026-10-12.
  17. ↑ Shuwen Qiu, Hangxin Liu, Zeyu Zhang, Yixin Zhu, Song-Chun Zhu (2020-07-24). "Human-Robot Interaction in a Shared Augmented Reality Workspace (preprint)". arXiv. https://arxiv.org/abs/2007.12656. Retrieved 2026-10-12.
  18. ↑ Michael D. Friske (2024-09-03). "Integration of Augmented Reality and Mobile Robot Indoor SLAM for Enhanced Spatial Awareness". arXiv. https://arxiv.org/abs/2409.01915. Retrieved 2026-10-12.
  19. ↑ "LICENSE". introlab/rtabmap, GitHub. IntRoLab. https://github.com/introlab/rtabmap/blob/master/LICENSE. Retrieved 2026-10-12.
  20. ↑ "Tags - introlab/rtabmap". GitHub. IntRoLab. https://github.com/introlab/rtabmap/tags. Retrieved 2026-10-12.