interactive_slam
interactive_slam is an open source 3D LIDAR-based mapping framework. In contrast to existing automatic SLAM packages, we aim to develop a semi-automatic framework which allows the user to interactively and intuitively correct mapping failures (e.g., corrupted odometry, wrong loop detection, distorted map, etc) with minimal human effort. This framework provides several map correction features:
- [Manual & Automatic] Loop closing
- [Manual] Plane-based map correction
- [Manual] Multiple map merging
- [Automatic] Pose edge refinement
This package is built on top of the ROS ecosystem. You can start building a map with a pose graph constructed by hdl_graph_slam or a customized LeGO-LOAM, or odometry data generated by any ROS package.
This package has been tested on Ubuntu 18.04 & ROS melodic or later.
Installation
interactive_slam depends on the following libraries:
# for ROS noetic
sudo apt-get install libglm-dev libglfw3-dev
sudo apt-get install libsuitesparse-dev libeigen3-dev
sudo apt-get install ros-noetic-geodesy ros-noetic-pcl-ros ros-noetic-nmea-msgs
# Install g2o from original source code
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ../
make
sudo make install
# Install Ceres Library
git clone https://ceres-solver.googlesource.com/ceres-solver
# Install all dependencies
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-dev
cd ceres-solver
mkdir build
cd build
cmake ../
make
sudo make install
cd ~/catkin_ws/src
git clone https://github.com/koide3/ndt_omp
# on melodic
# git clone https://github.com/koide3/ndt_omp -b melodic
git clone https://github.com/koide3/hdl_graph_slam
git clone https://github.com/koide3/odometry_saver
git clone https://github.com/SMRT-AIST/fast_gicp --recursive
git clone https://github.com/SMRT-AIST/interactive_slam --recursive
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release
ROS Kinetic users
This package cannot be built using gcc and ld on Ubuntu 16. If you are on Ubuntu 16 and ROS kinetic, try the LLVM toolchain. Note: we recommend to use this package on melodic because we do only build-test but not run-test on kinetic.
sudo apt install clang-6.0 lld-6.0
sudo update-alternatives --install /usr/bin/ld ld /usr/bin/ld.lld-6.0 50
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 50
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 50
cd ~/catkin_ws && rm -rf build devel # be aware of that this command removes build and devel directories
CC=clang CXX=clang++ catkin_make -DCMAKE_BUILD_TYPE=Release
Examples
Example1 - Basic usage with hdl_graph_slam
In this example, we edit a map (pose graph) constructed by hdl_graph_slam. See more.
Example2 - Generating odometry with external ROS package
In this example, we create a map with odometry data generated from a rosbag file with LeGO-LOAM. See more.
Example3 - Plane-based map correction & Map merging
In this example, we correct a largely bent map with plane constraints and merge it with another map. See more.
Graph/Odometry file format
You can feed graph/odometry files generated by your program to interactive_slam. See more
FAQ
License
interactive_slam is released under GPLv3 license.
Related packages
Papers
Kenji Koide, Jun Miura, Masashi Yokozuka, Shuji Oishi, and Atsuhiko Banno, Interactive 3D Graph SLAM for Map Correction, IEEE Robotics and Automation Letters (RA-L), 2020 DOI
Contact
Kenji Koide, [email protected], https://staff.aist.go.jp/k.koide
Mobile Robotics Research Team
National Institute of Advanced Industrial Science and Technology (AIST), Japan [URL]