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.
Installation
ROS distribution
RTAB-Map is released as binaries in the ROS distribution.
- Melodic
$ sudo apt-get install ros-melodic-rtabmap-ros
- Lunar
$ sudo apt-get install ros-lunar-rtabmap-ros
- Kinetic
$ sudo apt-get install ros-kinetic-rtabmap-ros
- Jade
$ sudo apt-get install ros-jade-rtabmap-ros
- Indigo
$ sudo apt-get install ros-indigo-rtabmap-ros
- For armhf architecture,
ros-indigo-rtabmap-ros
is not available. Installros-indigo-rtabmap
and build from sourcertabmap_ros
using theindigo-devel
branch.$ cd catkin_ws $ git clone -b indigo-devel https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros $ catkin_make -j1
- For armhf architecture,
- Hydro:
$ sudo apt-get install ros-hydro-rtabmap-ros
- Note that rtabmap_ros Hydro binaries are stuck at version 0.8.12. To use the latest version, see Build from source below.
When launching rtabmap_ros
's nodes, if you have the error error while loading shared libraries...
, add the next line at the end of your ~/.bashrc
to fix it:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/melodic/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 Hydro/Indigo/Jade/Kinetic/Lunar/Melodic (Catkin build). RTAB-Map works only with the PCL >=1.7, which is the default version installed with ROS Hydro/Indigo/Jade/Kinetic/Lunar/Melodic (Fuerte and Groovy are not supported).
-
The next instructions assume that you have set up your ROS workspace using this tutorial. I will use melodic prefix for convenience, but it should work with Hydro, Indigo, Jade, Kinetic and Lunar. The workspace path is
~/catkin_ws
and your~/.bashrc
contains:$ source /opt/ros/melodic/setup.bash $ source ~/catkin_ws/devel/setup.bash
-
Required dependencies
- The easiest way to get all them (Qt, PCL, VTK, OpenCV, ...) is to install/uninstall rtabmap binaries:
$ sudo apt-get install ros-melodic-rtabmap ros-melodic-rtabmap-ros $ sudo apt-get remove ros-melodic-rtabmap ros-melodic-rtabmap-ros
- The easiest way to get all them (Qt, PCL, VTK, OpenCV, ...) is to install/uninstall rtabmap binaries:
-
Optional dependencies
-
If you want SURF/SIFT on Indigo/Jade (Hydro has already SIFT/SURF), you have to build OpenCV from source to have access to nonfree module. Install it in
/usr/local
(default) and the rtabmap library should link with it instead of the one installed in ROS.- On Indigo/Jade, I recommend to use latest 2.4 version (2.4.11) and build it from source following these instructions. RTAB-Map can build with OpenCV3+xfeatures2d module, but rtabmap_ros package will have libraries conflict as cv-bridge is depending on OpenCV2. If you want OpenCV3, you should build ros vision-opencv package yourself (and all ros packages depending on it) so it can link on OpenCV3.
- On Kinetic/Lunar/Melodic, I recommend to use OpenCV3+xfeatures2d module already installed by ROS. You can also install OpenCV2, but rtabmap_ros package will have libraries conflict as cv-bridge is depending on OpenCV3. Thus if you want OpenCV2 on Kinetic/Lunar/Melodic, you should build ros vision-opencv package yourself (and all ros packages depending on it) so it can link on OpenCV2.
-
g2o: Use directly the binaries
ros-melodic-libg2o
. However, this g2o version (c++03 branch) built from source may be faster than the binaries (installlibsuitesparse-dev
before buildingg2o
) and would be required to avoid some crashes. To build RTAB-Map against latest official g2o version built from source, g2o should be built with-DBUILD_WITH_MARCH_NATIVE=OFF
to avoid some segmentation faults caused by Eigen. -
GTSAM: Follow installation instructions from here. RTAB-Map needs latest version from source, it will not build with 3.2.1. Set cmake variable
GTSAM_USE_SYSTEM_EIGEN=ON
to make sure the same Eigen version is used across all dependencies to avoid crashes.git clone https://bitbucket.org/gtborg/gtsam.git
-
-
Install RTAB-Map standalone libraries. Add
-DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel
tocmake
command below if you want to install in your Catkin's devel folder withoutsudo
. 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 $ 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 -j1
- Use
catkin_make -j1
if compilation requires more RAM than you have (e.g., some files require up to ~1.8 GB to build).
- Use
Build from source for Nvidia Jetson with OpenCV 4 Tegra
To use rtabmap_ros
on Jetson, you can follow the instructions above if you don't care if OpenCV is built for Tegra. However, if you want rtabmap
to use OpenCV 4 Tegra, we must re-build vision_opencv stack from source too to avoid conflicts with vision_opencv stack binaries from ros (which are linked on a not optimized version of OpenCV). Here are the steps:
-
Install JetPack with OpenCV on the Jetson.
-
Do steps 1.2 and 1.3 from http://wiki.ros.org/kinetic/Installation/Ubuntu
-
Install non-opencv dependent ros packages:
sudo apt-get install ros-kinetic-ros-base ros-kinetic-image-transport ros-kinetic-tf ros-kinetic-tf-conversions ros-kinetic-eigen-conversions ros-kinetic-laser-geometry ros-kinetic-pcl-conversions ros-kinetic-pcl-ros ros-kinetic-move-base-msgs ros-kinetic-rviz ros-kinetic-octomap-ros ros-kinetic-move-base libhdf5-openmpi-dev libsuitesparse-dev
-
Do step 1.6 from http://wiki.ros.org/kinetic/Installation/Ubuntu
-
Optional: Install g2o and/or GTSAM dependencies as above (increase visual odometry and graph optimization accuracy).
-
To avoid libGL undefined errors:
$ cd /usr/lib/aarch64-linux-gnu/ $ sudo ln -sf tegra/libGL.so libGL.so
-
To avoid libvtkproj4 errors:
$ sudo ln -s /usr/lib/aarch64-linux-gnu/libvtkCommonCore-6.2.so /usr/lib/libvtkproj4.so $ sudo ln -s /usr/lib/aarch64-linux-gnu/libvtkCommonCore-6.2.so /usr/lib/aarch64-linux-gnu/libvtkproj4-6.2.so.6.2.0
-
Install RTAB-Map standalone libraries. Add
-DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel
tocmake
command below if you want to install in your Catkin's devel folder withoutsudo
. 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 $ sudo make install
-
Clone vision_opencv, image_transport_plugins and
rtabmap_ros
packages in your catkin_ws:
$ cd ~/catkin_ws
$ git clone https://github.com/ros-perception/vision_opencv src/vision_opencv
$ git clone https://github.com/ros-perception/image_transport_plugins.git src/image_transport_plugins
$ git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros
$ catkin_make -j2
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