introlab3it/rtabmap_ros
RTAB-Map ROS package: https://github.com/introlab/rtabmap_ros/tree/master/docker
10K+
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.
Under construction: see ros2 branch.
RTAB-Map is released as binaries in the ROS distribution.
$ sudo apt install ros-noetic-rtabmap-ros
$ sudo apt install ros-melodic-rtabmap-ros
$ sudo apt-get install ros-kinetic-rtabmap-ros
$ sudo apt-get install ros-indigo-rtabmap-ros
ros-indigo-rtabmap-ros
is not available. Install ros-indigo-rtabmap
and build from source rtabmap_ros
using the indigo-devel
branch.
$ cd catkin_ws$ git clone -b indigo-devel https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros$ catkin_make -j1
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
This section shows how to install RTAB-Map ros-pkg on ROS Hydro/Indigo/Jade/Kinetic/Lunar/Melodic/Noetic (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/Noetic (Fuerte and Groovy are not supported).
The next instructions assume that you have set up your ROS workspace using this tutorial. I will use noetic
prefix for convenience, but it should work with Hydro, Indigo, Jade, Kinetic, Lunar and Melodic. The workspace path is ~/catkin_ws
and your ~/.bashrc
contains:
$ source /opt/ros/noetic/setup.bash
$ source ~/catkin_ws/devel/setup.bash
Required dependencies
$ sudo apt install ros-noetic-rtabmap ros-noetic-rtabmap-ros$ sudo apt remove ros-noetic-rtabmap ros-noetic-rtabmap-ros
Optional dependencies
If you want SURF/SIFT on Indigo/Jade/Melodic/Noetic (Hydro/Kinetic has already SIFT/SURF), you have to build OpenCV from source to have access to xfeatures2d and nonfree modules (note that SIFT is not in nonfree anymore since OpenCV 4.4.0). Install it in /usr/local
(default) and rtabmap library should link with it instead of the one installed in ROS.
rtabmap_ros
package will have libraries conflict as cv_bridge
is depending on OpenCV2. If you want OpenCV3+, you should build vision-opencv package yourself (and all ros packages depending on it) so it can link on OpenCV3+.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-noetic-libg2o
.
GTSAM: Install via PPA to avoid building from source. If you install from source, make sure to build with cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON
.
libpointmatcher: Recommended if you are going to use lidars. Follow their instructions to install.
Install RTAB-Map standalone libraries. Add -DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel
to cmake
command below if you want to install in your Catkin's devel folder without sudo
. 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
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).-DRTABMAP_SYNC_MULTI_RGBD=ON
to catkin_make
if you plan to use multiple cameras.-DRTABMAP_SYNC_USER_DATA=ON
to catkin_make
if you plan to use user data synchronized topics.These instructions are for Jetpack 3 (Ubuntu 16.04 with ROS Kinetic). For Jetpack 4 (Ubuntu 18.04 with ROS Melodic), see this post.
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/
# Jetpack 3:
$ sudo ln -sf tegra/libGL.so libGL.so
# Jetpack 4:
sudo ln -sf libGL.so.1.0.0 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
to cmake
command below if you want to install in your Catkin's devel folder without sudo
. 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
###########
# 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
docker pull introlab3it/rtabmap_ros