Awesome
rtabmap_ros
RTAB-Map's ROS package.
For more information, demos and tutorials about this package, visit rtabmap_ros page on ROS wiki.
For the RTAB-Map libraries and standalone application, visit RTAB-Map's home page or RTAB-Map's wiki.
CI Latest
<table> <tbody> <tr> <td>ROS 1</td> <td><a href="https://github.com/introlab/rtabmap_ros/actions/workflows/ros1.yml"><img src="https://github.com/introlab/rtabmap_ros/actions/workflows/ros1.yml/badge.svg" alt="Build Status"/> <br> <a href="https://github.com/introlab/rtabmap_ros/actions/workflows/docker.yml"><img src="https://github.com/introlab/rtabmap_ros/actions/workflows/docker.yml/badge.svg" alt="Build Status"/> </td> </tr> <tr> <td>ROS 2</td> <td><a href="https://github.com/introlab/rtabmap_ros/actions/workflows/ros2.yml"><img src="https://github.com/introlab/rtabmap_ros/actions/workflows/ros2.yml/badge.svg" alt="Build Status"/> </td> </tr> </tbody> </table>ROS Binaries
<table> <tbody> <tr> <td rowspan="1">ROS 1</td> <td>Noetic</td> <td><a href="http://build.ros.org/job/Nbin_ufv8_uFv8__rtabmap_ros__ubuntu_focal_arm64__binary/"><img src="http://build.ros.org/buildStatus/icon?job=Nbin_ufv8_uFv8__rtabmap_ros__ubuntu_focal_arm64__binary" alt="Build Status"/></td> </tr> <tr> <td rowspan="4">ROS 2</td> <td>Humble</td> <td><a href="http://build.ros2.org/job/Hbin_uJ64__rtabmap_ros__ubuntu_jammy_amd64__binary/"><img src="http://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__rtabmap_ros__ubuntu_jammy_amd64__binary" alt="Build Status"/></td> </tr> <tr> <td>Iron</td> <td><a href="http://build.ros2.org/job/Ibin_uJ64__rtabmap_ros__ubuntu_jammy_amd64__binary/"><img src="http://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__rtabmap_ros__ubuntu_jammy_amd64__binary" alt="Build Status"/></td> </tr> <tr> <td>Jazzy</td> <td><a href="http://build.ros2.org/job/Jbin_uN64__rtabmap_ros__ubuntu_noble_amd64__binary/"><img src="http://build.ros2.org/buildStatus/icon?job=Jbin_uN64__rtabmap_ros__ubuntu_noble_amd64__binary" alt="Build Status"/></td> </tr> <tr> <td>Rolling</td> <td><a href="http://build.ros2.org/job/Rbin_uJ64__rtabmap_ros__ubuntu_jammy_amd64__binary/"><img src="http://build.ros2.org/buildStatus/icon?job=Rbin_uJ64__rtabmap_ros__ubuntu_jammy_amd64__binary" alt="Build Status"/></td> </tr> <tr> <td>Docker</td> <td> <a href="https://hub.docker.com/r/introlab3it/rtabmap_ros">rtabmap_ros</a> </td> <td><img src="https://img.shields.io/docker/pulls/introlab3it/rtabmap_ros.svg?label=pulls" alt="Docker Pulls"/></td> </tr> </tbody> </table>Installation
ROS2 distribution
See ros2 branch.
ROS1 distribution
RTAB-Map is released as binaries in the ROS distribution.
sudo apt install ros-$ROS_DISTRO-rtabmap-ros
When launching rtabmap_ros
's nodes, if you have the error error while loading shared libraries...
, try ldconfig
or add the next line at the end of your ~/.bashrc
to fix it:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/noetic/lib/x86_64-linux-gnu
Docker
- Go to docker directory for an example.
Build from source
This section shows how to install RTAB-Map ros-pkg on ROS Noetic (Catkin build).
-
The next instructions assume that you have set up your ROS workspace using this tutorial. The workspace path is
~/catkin_ws
and your~/.bashrc
contains:$ source /opt/ros/$ROS_DISTRO/setup.bash $ source ~/catkin_ws/devel/setup.bash
-
Required dependencies
- The easiest way to get all them (Qt, PCL, VTK, OpenCV, g2o, gtsam ...) is to install/uninstall rtabmap binaries:
sudo apt install ros-$ROS_DISTRO-rtabmap* sudo apt remove ros-$ROS_DISTRO-rtabmap*
- The easiest way to get all them (Qt, PCL, VTK, OpenCV, g2o, gtsam ...) is to install/uninstall rtabmap binaries:
-
Optional dependencies
-
If you want SURF/SIFT on Noetic, you have to build OpenCV from source to have access to xfeatures2d and nonfree modules. Install it in
/usr/local
(default) and rtabmap library should link with it instead of the one installed in ROS.- On Noetic, build from source with xfeatures2d module (and nonfree module if needed) the same OpenCV version already installed on the system. You will then avoid breaking
cv_bridge
withrtabmap_ros
. If you want to install a more recent OpenCV version, I recommend to uninstalllibopencv*
libraries (with all ros packages depending on it) and rebuild all those ros packages in your catkin workspace (to make surecv_bridge
is linked on the OpenCV version you just compiled).
- On Noetic, build from source with xfeatures2d module (and nonfree module if needed) the same OpenCV version already installed on the system. You will then avoid breaking
-
g2o: Should be already installed by
ros-$ROS_DISTRO-libg2o
. -
GTSAM: Should be already installed by
ros-$ROS_DISTRO-gtsam
. -
libpointmatcher: Recommended if you are going to use lidars. Should be alread installed by
ros-$ROS_DISTRO-libpointmatcher
(Official install instructions).
-
-
Install RTAB-Map standalone libraries. Do not clone in your Catkin workspace.
cd ~ git clone https://github.com/introlab/rtabmap.git rtabmap cd rtabmap/build cmake .. [<---double dots included] make -j6 sudo make install
-
Install RTAB-Map ros-pkg in your src folder of your Catkin workspace.
cd ~/catkin_ws git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros catkin_make -j4
- Use
catkin_make -j1
if compilation requires more RAM than you have (e.g., some files require up to ~2 GB to build depending on gcc version). - Options:
- Add
-DRTABMAP_SYNC_MULTI_RGBD=ON
tocatkin_make
if you plan to use multiple cameras. - Add
-DRTABMAP_SYNC_USER_DATA=ON
tocatkin_make
if you plan to use user data synchronized topics.
- Add
- Use
Build from source for Nvidia Jetson
- For latest jetpack, see this post to use docker (you will save a lot of time using the already built docker images).
- For Jetpack 4 (Ubuntu 18.04 with ROS Melodic), see this post.
- For Jetpack 3 (Ubuntu 16.04 with ROS Kinetic), see this post.
Update to new version
###########
# rtabmap
###########
cd rtabmap
git pull origin master
cd build
make
make install
# Do "sudo make install" if you installed rtabmap in "/usr/local"
###########
# rtabmap_ros
###########
roscd rtabmap_ros
git pull origin master
roscd
cd ..
catkin_make -j1 --pkg rtabmap_ros