Skip to content

ChemicalNRG/rtabmap_ros

This branch is 321 commits behind introlab/rtabmap_ros:master.

Folders and files

NameName
Last commit message
Last commit date
Jun 29, 2015
Jun 11, 2020
Mar 3, 2014
Dec 13, 2020
Jan 12, 2021
Nov 28, 2020
Jul 30, 2020
Jul 28, 2020
Jan 10, 2021
Sep 28, 2020
Aug 1, 2019
Aug 1, 2019
Jun 10, 2020
Nov 28, 2020
Jul 18, 2016
Mar 3, 2014
Jul 30, 2020
Jan 16, 2020
Mar 3, 2014
Nov 28, 2014
Nov 3, 2020
Dec 13, 2020
Nov 13, 2019
Jul 28, 2020

Repository files navigation

rtabmap_ros Build Status

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

ROS2 distribution

Under construction: see ros2 branch.

ROS distribution

RTAB-Map is released as binaries in the ROS distribution.

  • Noetic
    $ sudo apt install ros-noetic-rtabmap-ros
    
  • Melodic
    $ sudo apt install ros-melodic-rtabmap-ros
    
  • Kinetic
    $ sudo apt-get install ros-kinetic-rtabmap-ros
    
  • Indigo
    $ sudo apt-get install ros-indigo-rtabmap-ros
    
    • For armhf architecture, 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

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/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
  1. Required dependencies

    • The easiest way to get all them (Qt, PCL, VTK, OpenCV, ...) is to install/uninstall rtabmap binaries:
      $ sudo apt install ros-noetic-rtabmap ros-noetic-rtabmap-ros
      $ sudo apt remove ros-noetic-rtabmap ros-noetic-rtabmap-ros
  2. 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.

      • On Indigo, 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 vision-opencv package yourself (and all ros packages depending on it) so it can link on OpenCV3+.
      • On Kinetic/Melodic/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-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.

  3. 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
  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 -j1
    • 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

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:

  1. Install JetPack with OpenCV on the Jetson.

  2. Do steps 1.2 and 1.3 from http://wiki.ros.org/kinetic/Installation/Ubuntu

  3. Install non-opencv dependent ros packages:

    • Jetpack 3: 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
  4. Do step 1.6 from http://wiki.ros.org/kinetic/Installation/Ubuntu

  5. Create your catkin workspace

  6. Optional: Install g2o and/or GTSAM dependencies as above (increase visual odometry and graph optimization accuracy).

  7. 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
    
  8. 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
    
  9. 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
  10. 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

Packages

No packages published

Languages

  • C++ 93.5%
  • Python 4.4%
  • CMake 1.7%
  • Dockerfile 0.2%
  • Lua 0.1%
  • Shell 0.1%