相关文章推荐
逃课的蚂蚁  ·  基于Nginx All In One ...·  1 年前    · 
逃课的蚂蚁  ·  基于Nginx All In One ...·  1 年前    · 
逃课的蚂蚁  ·  Customizing ...·  1 年前    · 
逃课的蚂蚁  ·  基于Nginx All In One ...·  1 年前    · 
逃课的蚂蚁  ·  ONES Wiki - ...·  1 年前    · 

Latest releases here!

This page shows how to install RTAB-Map on different systems. For previous releases, visit here .

  • ROS Version
  • Standalone
  • Ubuntu
  • Docker
  • RTAB-Map Desktop (Ubuntu 18.04, 20.04, 22.04 with Nvidia)
  • RTAB-Map Console tools
  • RTAB-Map ARCore
  • RTAB-Map Tango
  • Build images
  • Raspberry Pi
  • Mac OS X
  • Windows
  • vcpkg
  • Sensor Issues
  • Uninstall
  • Ubuntu (or built from source)
  • Mac OS X (standalone)
  • Windows (standalone)
  • If ROS is already installed

  • If ROS is installed, dependencies should already be satisfied. You can follow instructions on rtabmap_ros .
  • For the standalone, execute the application ( $ rtabmap ).
  • See Tutorials for a simple example of usage.
  • If ROS is not installed

    System dependencies

    Ubuntu 16.04

    $ sudo apt-get update
    $ sudo apt-get install libsqlite3-dev libpcl-dev libopencv-dev git cmake libproj-dev libqt5svg5-dev

    Ubuntu 14.04

    $ sudo apt-get install libsqlite3-dev libpcl-1.7-all libopencv-dev
  • To install libpcl-1.7-all , you may need to add ROS repositories by doing steps 1.2, 1.3 and 1.4 of this page (on step 1.3, use trusty instead of raring if you are on Ubuntu 14.04):
  • $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
    $ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
    $ sudo apt-get update
  • Alternatively ( without ROS Repository ). If pcl-1.7-all errors with not found simply add the PCL repository for access to the binaries:
  • $ sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
    $ sudo apt-get update

    Ubuntu 12.04

    $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
    $ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
    $ sudo apt-get update

    Other dependencies:

  • (Optional) OpenCV with SIFT/SURF: If you want SURF/SIFT features enabled in RTAB-Map, you will also have to build OpenCV from source to have access to nonfree module (build with opencv_contrib for OpenCV3 and OpenCV4):
    $ cd opencv
    $ mkdir build
    $ cd build
    $ cmake -DCMAKE_BUILD_TYPE=Release ..
    $ make -j4
    $ sudo make install
  • (Recommended) g2o :
    $ git clone https://github.com/RainerKuemmerle/g2o.git 
    $ cd g2o
    $ mkdir build
    $ cd build
    $ cmake -DBUILD_WITH_MARCH_NATIVE=OFF -DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF -DG2O_USE_OPENGL=OFF ..
    $ make -j4
    $ sudo make install
  • (Recommended) GTSAM :
  • Install via PPA to avoid building from source. If you install from source (version>=4), make sure to build with cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON .
  • (Optional) cvsba : Follow installation instructions from here . Their installation is not standard CMake, you need these extra steps so RTAB-Map can find it:
    $ mkdir /usr/local/lib/cmake/cvsba 
    $ mv /usr/local/lib/cmake/Findcvsba.cmake /usr/local/lib/cmake/cvsba/cvsbaConfig.cmake

    Download RTAB-Map source: get latest release or current source

    $ git clone https://github.com/introlab/rtabmap.git rtabmap
    $ cd rtabmap/build
    $ cmake ..
    $ make -j4
    $ sudo make install
    

    Execute the application (named "rtabmap").

  • If you receive error while loading shared libraries: librtabmap_core.so.0.10 remember to run ldconfig!
  • See Tutorials for a simple example of usage.

    Update code

    If you want the latest changes after the git clone is done, you can update the code like this:

    $ cd rtabmap
    $ git pull origin master
    $ cd build
    $ cmake ..
    $ make -j4
    $ sudo make install

    Docker Docker
  • Docker repository: intolab3it/rtabmap
  • Docker files: https://github.com/introlab/rtabmap/tree/master/docker
  • Images available from introlab3it/rtabmap: xenial, 16.04 (amd64)
  • bionic, 18.04 (amd64, arm64)

  • focal , 20.04 , latest (amd64, arm64) jammy , 22.04 (amd64, arm64) android24 , android26 , android30 (amd64) tango ( android23 ), tango-api19 (amd64) jfr2018 (amd64)
  • Image used to reproduce results of the following paper:
  • M. Labbé and F. Michaud, “RTAB-Map as an Open-Source Lidar and Visual SLAM Library for Large-Scale and Long-Term Online Operation,” in Journal of Field Robotics, vol. 36, no. 2, pp. 416–446, 2019. ( pdf ) ( Wiley )

    To be able to run rtabmap, we should install opengl support in the image. To do so, visit this tutorial for details if you have a nvidia GPU (if you don't have a nvidia GPU, see if the open source approach explained in 16.04 below is working for you or see intel/AMD instructions on this page ):

  • Install nvidia-docker2 :
    sudo apt install -y nvidia-docker2
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    Run image:

     # those following 3 lines would need to be done only one time
     export XAUTH=/tmp/.docker.xauth
     touch $XAUTH
     xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
     docker run -it --rm \
       --privileged \
       --env="DISPLAY=$DISPLAY" \
       --env="QT_X11_NO_MITSHM=1" \
       --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
       --env="XAUTHORITY=$XAUTH" \
       --volume="$XAUTH:$XAUTH" \
       -e NVIDIA_VISIBLE_DEVICES=all \
       -e NVIDIA_DRIVER_CAPABILITIES=all \
       --runtime=nvidia \
       --network host \
       -v ~/Documents/RTAB-Map:/root/Documents/RTAB-Map \
       introlab3it/rtabmap:focal \
       rtabmap
  • On nvidia jetpack, add -e LD_LIBRARY_PATH=/opt/ros/noetic/lib:/opt/ros/noetic/lib/aarch64-linux-gnu:/usr/lib/aarch64-linux-gnu/tegra to command line above if you are using 20.04 image. Change noetic to melodic or humble if you use 18.04 or 22.04 image respectively.
  • RTAB-Map console tools

  • For examples how to use RTAB-Map console tools with docker, see https://github.com/introlab/rtabmap/wiki/Multi-Session-Mapping-with-RTAB-Map-Tango#example-with-docker

    RTAB-Map ARCore (APK)

    $ docker pull introlab3it/rtabmap:android26

    To install the APK, we should uninstall the version of RTAB-Map ARCore from the phone (installed by Play Store), drag and drop app to uninstall, or do:

    adb uninstall com.introlab.rtabmap
    

    For API <= 26, 2 choices:

  • Copy file on host computer then install it with adb from there:
    docker run --name=rtabmap-android introlab3it/rtabmap:android26
    docker cp rtabmap-android:/root/rtabmap-tango/build/arm64-v8a/app/android/bin/RTABMap-debug.apk .
    docker rm rtabmap-android # cleanup container
    adb install -r RTABMap-debug.apk
  • Call adb from container:
    docker run --privileged --network=host -i -t --rm introlab3it/rtabmap:android26 adb install -r rtabmap-tango/build/arm64-v8a/app/android/bin/RTABMap-debug.apk

    For API >= 30, the apk should be signed with a debug key (the keystore password is android):

    docker run --privileged --network=host -i -t --rm introlab3it/rtabmap:android30
    # from inside the container:
    /opt/android-sdk/build-tools/30.0.3/apksigner sign --ks ~/.android/debug.keystore  rtabmap-tango/build/arm64-v8a/app/android/bin/RTABMap-debug.apk
    adb install -r rtabmap-tango/build/arm64-v8a/app/android/bin/RTABMap-debug.apk

    RTAB-Map Tango (APK)

    $ docker pull introlab3it/rtabmap:tango

    To install the APK, we should uninstall the version of RTAB-Map tango from the phone (installed by Play Store), drag and drop app to uninstall, or do:

    $ adb uninstall com.introlab.rtabmap
    
  • Install APK, 2 choices (Asus Zenfone AR, Lenovo Phab2Pro):
  • Copy file on host computer then install it with adb from there:
    $ docker run --name=rtabmap-tango introlab3it/rtabmap:tango
    $ docker cp rtabmap-tango:/root/rtabmap-tango/build/arm64-v8a/app/android/bin/RTABMap-debug.apk .
    $ docker rm rtabmap-tango # cleanup container
    $ adb install -r RTABMap-debug.apk
  • Call adb from container:
    $ docker run --privileged --network=host -i -t --rm introlab3it/rtabmap:tango adb install -r rtabmap-tango/build/arm64-v8a/app/android/bin/RTABMap-debug.apk

    For Google Project Tango tablet, use introlab3it/rtabmap:tango-api19 image and replace arm64-v8a by armeabi-v7a:

    $ docker run --name=rtabmap-tango introlab3it/rtabmap:tango-api19
    $ docker cp rtabmap-tango:/root/rtabmap-tango/build/armeabi-v7a/app/android/bin/RTABMap-debug.apk .
    $ docker rm rtabmap-tango # cleanup container
    $ adb install -r RTABMap-debug.apk

    Build images

    All docker files can be found under docker directory. You should launch docker build from the root of this repository. Example:

    cd rtabmap
    docker build -t rtabmap_focal -f docker/focal/Dockerfile .

    Raspberry Pi Raspberry Pi

    This walkthrough should be updated for Raspberry Pi 4. (the link to OpenCV source does not work and should be updated)

    The installation steps are similar to Ubuntu:

    System dependencies

    $ sudo apt-get install libpcl-dev libopencv-dev cmake libfreenect-dev libopenni2-dev libsqlite3-dev libvtk6-qt-dev

    Kinect for Xbox 360: Freenect binaries may not work out-of-the-box on RPI3B+ (see this issue), we should build it from source before building rtabmap:

    $ sudo apt-get remove libfreenect*
    $ git clone https://github.com/OpenKinect/libfreenect.git
    $ cd libfreenect
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make
    $ sudo make install

    If you want SURF/SIFT features enabled in RTAB-Map, you will also have to build OpenCV from source to have access to nonfree module:

    $ cd opencv
    $ mkdir build
    $ cd build
    $ cmake -DCMAKE_BUILD_TYPE=Release ..
    $ make 
    $ sudo make install

    Download RTAB-Map source: get latest release or current source

    $ git clone https://github.com/introlab/rtabmap.git rtabmap
    $ cd rtabmap/build
    $ cmake ..
    $ make 
    $ sudo make install
    $ sudo ldconfig
    $ rtabmap
  • Note that RPi default swap size (100 MB) may be too small for compilation. You can increase the size by setting CONF_SWAPFILE=1000 of this file /etc/dphys-swapfile.
  • See Tutorials for a simple example of usage.

    Do not expect high frame rate on Raspberry Pi, you may have to move slowly the camera. For example on RPi3, we can have around 5-6 Hz odometry frame rate by tuning some parameters. Without ROS, load the following settings rpi3.ini (see Preferences dialog) to get smoother mapping on RPI3. The Odometry panel can be closed if the GUI is lagging too much.

  • Install libusb: libusb-1.0.18.pkg or sudo port install libusb +universal
  • Install OpenNI: OpenNI-Bin-Dev-MacOSX-v1.5.7.10.zip sudo ./install.sh
  • Install Kinect Sensor: Sensor-Bin-MacOSX-v5.1.2.1.zip.sudo ./install.sh
  • XtionPRO Live:
  • Install OpenNI2 OpenNI-MacOSX-x64-2.2.0.33 or download this file 557-primesense-usb.rules and execute:
  • $ sudo copy 557-primesense-usb.rules /etc/udev/rules.d/557-primesense-usb.rules

    Updated March 2023

    Dependencies

    For packages built from source, normally they should build from their latest version, otherwise you can see the git version I used for each of them at the time I tested it.

    Homebrew:

    brew install pcl opencv cmake octomap g2o pdal
    # For issue cmake not finding Qt5 correctly (when PCL is not able to find VTK, for visualization module):
    export PATH=/opt/homebrew/opt/qt@5/bin:$PATH
     # or (depending how homebrew is configured)
    export PATH=/usr/local/Cellar/qt@5/5.15.8_2/bin:$PATH

    Optional but recommended: Build/install gtsam.

    git clone https://github.com/borglab/gtsam.git
    cd gtsam 
    git checkout ab92779b25b04b376fbbd1846bbbd21904c50e7a
    mkdir build
    cd build
    cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_WITH_TBB=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_UNSTABLE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON .. 
    make -j$(sysctl -n hw.logicalcpu)
    sudo make install

    Optional but recommended if you use ICP: Build/install libpointmatcher.

    git clone https://github.com/ethz-asl/libnabo.git
    cd libnabo 
    git checkout 3cab7eed92bd5d4aed997347b8c8a2692a83a532
    mkdir build
    cd build
    cmake .. 
    make -j$(sysctl -n hw.logicalcpu)
    sudo make install
    git clone https://github.com/ethz-asl/libpointmatcher.git
    cd libpointmatcher 
    git checkout 76f99fce0fe69e6384102a0343fdf8d262626e1f
    mkdir build
    cd build
    cmake .. 
    make -j$(sysctl -n hw.logicalcpu)
    sudo make install

    Install SDK of the camera you want to use.

    Build RTAB-Map

  • Download RTAB-Map source: get latest release or current source
    git clone https://github.com/introlab/rtabmap.git rtabmap
    cd rtabmap/build
    cmake ..
    make -j$(sysctl -n hw.logicalcpu)
    sudo make install
  • Execute the application (named "rtabmap" in rtabmap/build/bin directory).
  • See Tutorials for a simple example of usage.
  • Deployment

    Call package target:

    cmake -DBUILD_AS_BUNDLE=ON ..
    make package
    # Packaging will finished but the resulting App 
    # cannot be started because signature issue (killed on start).
    # Find a valid xcode certificate in "keychain Access" app,
    # then use full common name. Example:
    cd _CPack_Packages/Darwin/DragNDrop/RTABMap-0.21.0-Darwin/ALL_IN_ONE
    codesign --deep --force -s "Apple Development: FIRSTNAME LASTNAME (XXXXXXXXXX)" RTABMap.app
    # Create image manually:
    cd ..
    hdiutil create -volname RTABMap-0.21.0 -srcfolder ALL_IN_ONE -ov -format UDZO RTABMap-0.21.0-Darwin.dmg
    

    Packaging issues:

  • If the RTABMap.app is built with pdal, there was a crash because it could not find libpdal_util.15.dylib:
  • cd RTABMap.app/Contents/Frameworks
    otool -L libpdalcpp.15.2.0.dylib 
    libpdalcpp.15.2.0.dylib:
        @rpath/libpdal_util.15.dylib (compatibility version 15.0.0, current version 15.2.0, reexport)
    

    Change @rpath to @executable_path inside the package:

    install_name_tool -change @rpath/libpdal_util.15.dylib @executable_path/../Frameworks/libpdal_util.15.dylib libpdalcpp.15.2.0.dylib
    

    For iOS build, no need to build MacOS version above. Begin by building all dependencies for iOS (curl, cmake, git and XCode should be manually installed):

    $ git clone https://github.com/introlab/rtabmap.git rtabmap
    $ cd rtabmap/app/ios/RTABMapApp
    $ ./install_deps.sh
    

    Note that the installation script has been tested on Apple Silicon only. Then open XCode project located in rtabmap/app/ios. Connect your iPhone/iPad with LiDAR, select it in XCode then press "Play" button. It should build, install and launch the App on your device.

    Windows Windows

    Win64 Binaries

    Latest official releases here! (with most camera drivers and CUDA option)

    Latest buildfarm releases here! (version automatically built from latest commit on master, it doesn't have all camera drivers and CUDA version is not available)

    Driver for Kinect XBOX 360 / Kinect for Windows:

  • A (Recommended for binaries): Install Kinect for Windows SDK 1.6, then select "OpenNI2" driver in RTAB-Map.
  • B (Required if you compile from source): Install OpenNI-Win64-1.5.4-Dev.msi and Sensor-Win-OpenSource64-5.1.0.msi, then select "OpenNI-PCL" driver in RTAB-Map.
  • Driver for XtionPRO Live:

  • OpenNI-Windows-x64-2.2.0.33.zip
  • Driver RealSense R200

    Driver ZED

    Driver for the Kinect v2 / Kinect XBOX One:

  • Install UsbDK version listed in the release you downloaded. See libfreenect2 page for more info.
  • Kinect for Windows SDK 2.0 + Kinect for Windows Runtime 2.0

    Updated March 2023

    vcpkg

    You can download and install rtabmap using the vcpkg dependency manager (use this pull request: https://github.com/microsoft/vcpkg/pull/30254 till it is merged). Set environment variable VCPKG_DEFAULT_TRIPLET=x64-windows for convenience. Instructions below will assume you are using x64-windows triplet by default. From a "x64 visual studio command prompt" (Administrator mode):

    git clone https://github.com/Microsoft/vcpkg.git
    cd vcpkg
    bootstrap-vcpkg.bat
    vcpkg integrate install
    vcpkg install rtabmap --clean-after-build
    

    The rtabmap port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

    To build rtabmap with camera drivers or other dependencies not available in vcpkg, you may use vcpkg just for those dependencies:

    vcpkg install ceres g2o octomap zlib sqlite3 opencv[contrib,nonfree] pcl[qt,vtk] yaml-cpp --clean-after- build
    

    Then build rtabmap manually (with a Visual Studio solution):

    git clone https://github.com/introlab/rtabmap.git
    cd rtabmap/build
    cmake -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake ..
    cmake --build . --config Release
    

    Execute the application (named "RTABMap.exe").

    See Tutorials for a simple example of usage.

    Optional dependencies

    GTSAM: download 4.0.0-alpha2 version from https://github.com/borglab/gtsam/releases and this patch gtsam-4.0.0-alpha2-MSVC.patch.

     git clone --branch 4.0.0-alpha2 https://github.com/borglab/gtsam.git
     cd gtsam
     git apply gtsam-4.0.0-alpha2-MSVC.patch
     mkdir build
     cd build
     cmake -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_STATIC_LIBRARY=ON -DGTSAM_BUILD_UNSTABLE=OFF -DGTSAM_INSTALL_CPPUNILITE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON ..
     cmake --build . --config Release --target install
    

    libpointmatcher (download this patch pointmatcher_windows_dll.patch)

     vcpkg install boost-assign boost-program-options boost-timer --clean-after-build
     git clone https://github.com/ethz-asl/libnabo.git
     git clone https://github.com/ethz-asl/libpointmatcher.git
     cd libnabo
     git checkout c925c47
     mkdir build
     cmake ..
     cmake --build . --config Release --target install
     cd libpointmatcher
     git checkout 7dc58e5
     git apply pointmatcher_windows_dll.patch
     mkdir build
     cmake -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake ..
     cmake --build . --config Release --target install
     # Delete libpointmatcher config files in installed CMake directory, we will use only the ones in installed share\libpointmatcher\cmake folder.
    

    depthai: make sure to use -DBUILD_SHARED_LIBS=ON on the first cmake so that all hunter's dependencies are built as shared libraries.

    realsense2: you can use the binaries, but for this T265 issue, you can add this patch to vcpkg realsense2 port (vcpkg install realsense2[core,tm2]).

    CCCoreLib: make nanoflann interface PRIVATE instead of PUBLIC.

    Deployment

    cmake -DBUILD_AS_BUNDLE=ON ..
    cmake --build . --config Release --target package
    

    Issues

    Depth not registered to RGB

    If you see a misalignment between the depth and the RGB or the point cloud is mirrored when using source from OpenNI-PCL, see this page on PCL project.

    On my machine, the SamplesConfig.xml is located here /etc/openni/SamplesConfig.xml, it should look like this (note GlobalMirror=False, RegistrationType and Registration are set) after modifications:

    <OpenNI>
    <Licenses>
    </Licenses>
    <Log writeToConsole="false" writeToFile="false">
    	<LogLevel value="3"/>
    	<Masks>
    		<Mask name="ALL" on="true"/>
    	</Masks>
    	<Dumps>
    	</Dumps>
    <ProductionNodes>
    	<GlobalMirror on="false"/> <!-- Disable mirror -->
    	<Node type="Depth" name="MyDepth">
    		<Configuration>
    			<!-- Kinect works only with RegistrationType 2. Asus works only with RegistrationType 1. -->
                		<Property type="int" name="RegistrationType" value="2"/>
                		<Property type="int" name="Registration" value="1"/>
    		</Configuration>
    	</Node>
    	<Node type="Image" stopOnError="false" />
    </ProductionNodes>
    </OpenNI>
    

    Image is mirrored

  • From version 0.8.5, you can check option "Mirroring" under the Source panel in the Preferences dialog.
  • Low performance of ASUS Xtion with OpenNI2 on USB3

    If the Xtion is not detected on USB3: try updating the firmware of the Xtion.

    If the Xtion is connected on an USB3 and there is a very low acquisition performance, try this by editing the PS1080.ini file located in OpenNI2 installation folder (if RTAB-Map is installed with binaries, the file is in bin/OpenNI2/Drivers/PS1080.ini). Uncomment lines:

    USB interface=2 (line 28)
    Input format=1 (line 50)
    Input format=5 (line 117)
    

    On Windows, you can also just uncomment Input format=1.

    Uninstall

    Ubuntu (or built from source)

  • If built from source, from the build directory, you can do make uninstall.
  • Remove the RTAB-Map's source directory.
  • Remove RTAB-Map's working directory in "~/Documents/RTAB-Map".
  • Remove RTAB-Map's configuration file in "~/.rtabmap/rtabmap.ini".
  • Mac OS X (standalone)

  • If built from source, from the build directory, you can do make uninstall.
  • Drag-and-drop the application in the trash.
  • Remove RTAB-Map's working directory in "~/Documents/RTAB-Map".
  • Remove RTAB-Map's configuration file in "~/.rtabmap/rtabmap.ini".
  • Windows (standalone)

  • Use the uninstaller provided.
  • Remove RTAB-Map's working directory in "User's directory/Documents/RTAB-Map".
  • Remove RTAB-Map's configuration file in "User's directory/.rtabmap/rtabmap.ini".
  •