Contents
Overview
This package is a ROS wrapper of RTAB-Map (Real-Time Appearance-Based Mapping), a RGB-D SLAM approach based on a global loop closure detector with real-time constraints. This package can be used to generate a 3D point clouds of the environment and/or to create a 2D occupancy grid map for navigation. The tutorials and demos show some examples of mapping with RTAB-Map.
Migration Guide New Interface Noetic/ROS2
rtabmap_ros is now a meta package, all nodes were moved into sub packages matching their function. Documentation for each node/nodelet is moved in respective sub packages linked in this table:
Old Name |
|
New Name |
|
rtabmap_ros |
rtabmap.launch |
rtabmap.launch |
|
rtabmap_ros |
rtabmap |
||
rtabmap_ros |
|
|
|
|
rgbd_odometry |
|
|
|
stereo_odometry |
|
|
|
icp_odometry |
|
|
rtabmap_ros |
|
|
|
rgb_sync |
|
||
rgbd_sync |
|
||
stereo_sync |
|
||
rtabmap_ros |
|
|
|
point_cloud_xyz |
|
||
point_cloud_xyzrgb |
|
||
map_assembler |
|
||
map_optimizer |
|
||
point_cloud_assembler |
|
||
point_cloud_aggregator |
|
||
pointcloud_to_depthimage |
|
||
disparity_to_depth |
|
||
obstacles_detection |
|
||
rgbd_relay |
|
||
rtabmap_ros |
|
|
|
data_odom_sync |
|
||
data_throttle |
|
||
stereo_throttle |
|
||
camera |
|
||
rtabmap_ros |
rtabmapviz |
||
rtabmap_ros |
messages |
messages |
|
rtabmap_ros |
rviz plugins |
rviz plugins |
|
rtabmap_ros |
costmap plugins |
costmap plugins |
Tutorials
- RGB-D Handheld Mapping
This tutorial shows how to use rtabmap_ros out-of-the-box with a Kinect-like sensor in mapping mode or localization mode.
- Stereo Handheld Mapping
This tutorial shows how to use rtabmap_ros out-of-the-box with a stereo camera in mapping mode or localization mode.
- Remote Mapping
This tutorial shows how to do mapping on a remote computer.
- Stereo Outdoor Mapping
This tutorial shows how to do stereo mapping with RTAB-Map.
- Stereo Outdoor Navigation
This tutorial shows how to integrate autonomous navigation with RTAB-Map in context of outdoor stereo mapping.
- Setup RTAB-Map on Your Robot!
This tutorial shows multiple RTAB-Map configurations that can be used on your robot.
- Mapping and Navigation with Turtlebot
This tutorial shows how to use RTAB-Map with Turtlebot for mapping and navigation.
- Tango ROS Streamer
Tutorial to get Tango ROS Streamer working with rtabmap_ros
- Advanced Parameter Tuning
This tutorial tells you which parameter to change to improve performances
- Wifi Signal Strength Mapping (User Data Usage)
This tutorial shows how to add user data during mapping that will be saved directly in RTAB-Map's database for convenience.
Demos
Robot mapping
For this demo, you will need the ROS bag demo_mapping.bag (295 MB, fixed camera TF 2016/06/28, fixed not normalized quaternions 2017/02/24, fixed compressedDepth encoding format 2020/05/27, fixed odom child_frame_id not set 2021/01/22).
Launch: demo_robot_mapping.launch
$ roslaunch rtabmap_demos demo_robot_mapping.launch $ rosbag play --clock demo_mapping.bag
After mapping, you could try the localization mode:
$ roslaunch rtabmap_demos demo_robot_mapping.launch localization:=true $ rosbag play --clock demo_mapping.bag
Note that the GUI node doesn't download automatically the map when started. You will need to click "Edit->Download Map" on the GUI to download the map from the core node.
Robot mapping with RVIZ
For this demo, you will need the ROS bag demo_mapping.bag (295 MB, fixed camera TF 2016/06/28, fixed not normalized quaternions 2017/02/24, fixed compressedDepth encoding format 2020/05/27, fixed odom child_frame_id not set 2021/01/22).
Launch: demo_robot_mapping.launch
$ roslaunch rtabmap_demos demo_robot_mapping.launch rviz:=true rtabmapviz:=false $ rosbag play --clock demo_mapping.bag
Multi-session mapping
Detailed results are shown on the Multi-session page on RTAB-Map's wiki.
For this demo, you will need the ROS bags of five mapping sessions:
Updated 2015/09/21: fixed TF rotation of the camera
Updated 2017/09/08: fixed TF quaternion not normalized error
map1.bag.zip (542 MB)
map2.bag.zip (490 MB)
map3.bag.zip (318 MB)
map4.bag.zip (1.1 GB)
map5.bag.zip (843 MB)
For the first launch, you can do "Edit->Delete memory" to make sure that you start from a clean memory. You may need to do this after starting the first bag with "--pause" so that rtabmap node is initialized to avoid a "service /reset cannot be called" error.
Launch: demo_multi-session_mapping.launch
$ roslaunch rtabmap_demos demo_multi-session_mapping.launch $ rosbag play --clock --pause map1.bag $ (...) $ rosbag play --clock map2.bag $ (...) $ rosbag play --clock map3.bag $ (...) $ rosbag play --clock map4.bag $ (...) $ rosbag play --clock map5.bag
Robot mapping with Find-Object
Find-Object's ros-pkg find_object_2d should be installed.
ROS Bag: demo_find_object.bag (416 MB, fixed compressedDepth encoding format 2024/04/27)
Launch: demo_find_object.launch
$ roslaunch rtabmap_demos demo_find_object.launch $ rosbag play --clock demo_find_object.bag
IROS 2014 Kinect Challenge
There is no bag recorded for this demo but how to reproduce this setup is described on the page IROS 2014 Kinect Challenge of the RTAB-Map's wiki.
Stereo mapping
Visit the tutorial StereoOutdoorMapping for detailed information. It is also shown how to create 2D occupancy grid map for navigation.
ROS bags:
stereo_outdoorA.bag (668 MB)
stereo_outdoorB.bag (987 MB)
Launch : demo_stereo_outdoor.launch
$ roslaunch rtabmap_demos demo_stereo_outdoor.launch $ rosbag play --clock stereo_outdoorA.bag [...] $ rosbag play --clock stereo_outdoorB.bag
Stereo navigation
There is no bag recorded for this demo but how to reproduce this setup is described in the tutorial StereoOutdoorNavigation.
Appearance-based loop closure detection-only
Data:
Set video_or_images_path parameter of camera node in the launch file below accordingly.
Launch: demo_appearance_mapping.launch
$ roslaunch rtabmap_demos demo_appearance_mapping.launch
The GUI shows a plenty of information about the loop closures detected. If you only need the ID of the matched past image of a loop closure, you can do that:
$ rostopic echo /rtabmap/info/loopClosureId 6 --- 0 --- 7 ---
A "0" means no loop closure detected. This can be also used in localization mode:
$ roslaunch rtabmap_demos demo_appearance_mapping.launch localization:=true
For more videos and information about the loop closure detection approach used in RTAB-Map, visit RTAB-Map on IntRoLab.