Home

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

Build from source

This section shows how to install RTAB-Map ros-pkg on ROS Noetic (Catkin build).

  1. 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*
      
  2. 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 with rtabmap_ros. If you want to install a more recent OpenCV version, I recommend to uninstall libopencv* libraries (with all ros packages depending on it) and rebuild all those ros packages in your catkin workspace (to make sure cv_bridge is linked on the OpenCV version you just compiled).
    • 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).

  3. 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
    
  4. 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 to catkin_make if you plan to use multiple cameras.
      • Add -DRTABMAP_SYNC_USER_DATA=ON to catkin_make if you plan to use user data synchronized topics.

Build from source for Nvidia Jetson

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