Skip to content

PRBonn/MapClosures

Repository files navigation

MapClosures



  •   Install   •   Paper   •   Contact Us

Effectively Detecting Loop Closures using Point Cloud Density Maps.

image


Use MapClosures in your C++ project

  1. Include the following snippet in your project's CMakeLists.txt:
set(USE_SYSTEM_EIGEN3 ON CACHE BOOL "use system eigen3")
set(USE_SYSTEM_TBB ON CACHE BOOL "use system tbb")
set(USE_SYSTEM_OPENCV ON CACHE BOOL "use system opencv")

include(FetchContent)
FetchContent_Declare(
    map_closures
        GIT_REPOSITORY https://github.com/PRBonn/MapClosures.git
        GIT_TAG main
        SOURCE_SUBDIR cpp
)
FetchContent_MakeAvailable(map_closures)

You can trigger the automatic installation of the dependencies by playing around with the options in the first three lines of the snippet.

  1. Link MapClosures against your library or executable:
target_link_libraries(my_target PUBLIC map_closures)
  1. The following include directive in your source code file will provide access to the core API of MapClosures:
#include <map_closures/MapClosures.hpp>

Install the Python API and CLI

  1. First, install the necessary system dependencies
    sudo apt-get install --no-install-recommends -y build-essential cmake pybind11-dev libeigen3-dev libopencv-dev libtbb-dev
  2. To get an odometry estimate in our Python CLI we rely on KISS-ICP, you can install it using
    pip install kiss-icp
  3. Then run:
    make

Usage

The following command will provide details about how to use our pipeline:
map_closure_pipeline --help

CLI_usage

Providing the -v flag will initialize the visualizer:
map_closure_pipeline -v

Visualizer

Citation

If you use this library for any academic work, please cite our original paper.

@inproceedings{gupta2024icra,
    author     = {S. Gupta and T. Guadagnino and B. Mersch and I. Vizzo and C. Stachniss},
    title      = {{Effectively Detecting Loop Closures using Point Cloud Density Maps}},
    booktitle  = {IEEE International Conference on Robotics and Automation (ICRA)},
    year       = {2024},
    codeurl    = {https://github.com/PRBonn/MapClosures},
}

Paper Results

As we decided to continue the development of MapClosures beyond the scope of the ICRA paper, we created a git tag so that researchers can consistently reproduce the results of the publication. To checkout at this tag, you can run the following:

git checkout ICRA2024

Our development aims to push the performances of MapClosures above the original results of the paper.

Note: You can download the ground-truth loop closure candidates for the datasets used in the paper from here. When run with -e flag, our pipeline will search for groundtruth data under the folder at path <data>/loop_closure/. If not found, it will first generate the groundtruth closures which might consume some time. You can also generate the groundtruth closures following the approach mentioned in our paper using the following command:

gt_closure_pipeline <dataloader> <path-to-data>

Acknowledgement

This repository is heavily inspired by, and also depends on KISS-ICP

Contributors