• Stars
    star
    839
  • Rank 54,338 (Top 2 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created about 5 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Interactive Map Correction for 3D Graph SLAM

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

Screenshot_20191016_182424 [video]

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.

Build

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. Screenshot_20191016_175924 png

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.

Screenshot_20191016_182955 png

Graph/Odometry file format

You can feed graph/odometry files generated by your program to interactive_slam. See more

FAQ

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]

More Repositories

1

hdl_graph_slam

3D LIDAR-based Graph SLAM
C++
1,973
star
2

fast_gicp

A collection of GICP-based fast point cloud registration algorithms
C++
1,230
star
3

hdl_localization

Real-time 3D localization using a (velodyne) 3D LIDAR
C++
795
star
4

ndt_omp

Multi-threaded and SSE friendly NDT algorithm
C++
728
star
5

direct_visual_lidar_calibration

A toolbox for target-less LiDAR-camera calibration [ROS1/ROS2]
C++
692
star
6

glim

GLIM: versatile and extensible range-based 3D localization and mapping framework
C++
431
star
7

small_gicp

Efficient and parallel algorithms for point cloud registration [C++, Python]
C++
365
star
8

iridescence

3D visualization library for rapid prototyping of 3D algorithms
C++
288
star
9

hdl_people_tracking

Real-time people tracking using a 3D LIDAR
C++
283
star
10

slam_docker_collection

A collection of docker environments for 3D SLAM packages
219
star
11

monocular_person_following

Monocular camera-based person tracking and identification ROS framework for person following robots
C++
183
star
12

hdl_global_localization

C++
171
star
13

gtsam_points

A collection of GTSAM factors and optimizers for point cloud SLAM
C++
145
star
14

gazebo_apriltag

Apriltag models for gazebo
Python
60
star
15

pointcloud_to_2dmap

C++
58
star
16

st_handeye_graph

General hand-eye calibration based on reprojection error minimization and pose graph optimization
C++
57
star
17

livox_to_pointcloud2

C++
52
star
18

rviz_factor_graph_plugins

C++
39
star
19

caratheodory2

C++
37
star
20

automatic_tuning

C++
29
star
21

sparse_dynamic_calibration

Sparse and dynamic camera network calibration with visual odometry
C++
29
star
22

glim_ros2

C++
25
star
23

glil_pubdoc

Public documentation for GLIL, A closed-source point-cloud-based real-time localization package
22
star
24

cpp_parallel_code

Cuda
22
star
25

monocular_people_tracking

C++
19
star
26

glim_ext

C++
18
star
27

open3d_graph_slam

Python
16
star
28

glim_mid360_tutorial

15
star
29

points_inspector

An inspection tool for sensor_msgs/PointCloud2 messages [ROS1/ROS2]
C++
14
star
30

glim_ros1

C++
11
star
31

ccf_person_identification

Convolutional Channel Features + Online boosting-based person identification for mobile robots
C++
10
star
32

caratheodory

C++ implementation of the algorithm in "Fast and Accurate Least-Mean-Squares Solvers", NIPS19
C++
10
star
33

pykalman_test

A simple UKF demo using pykalman
Python
9
star
34

odometry_saver

C++
9
star
35

gtsam_docker

Dockerfile
7
star
36

ros2d2

A ROS package to make R2D2-like sound
C
6
star
37

ccf_feature_extraction

Pretrained convolutional channel features for people identification
C++
5
star
38

vscode_ros

4
star
39

open_face_recognition

Python
3
star
40

date_logger

Shell
2
star
41

tf_pose_ros_msgs

CMake
2
star
42

dial_controller

Python
1
star
43

ppa

Shell
1
star
44

ros1_docker_scripts

Shell
1
star
45

velodyne_packets2points

1
star
46

koide3.github.io

HTML
1
star
47

lidar_slam_dataset

1
star