- 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.
- Link MapClosures against your library or executable:
target_link_libraries(my_target PUBLIC map_closures)
- The following include directive in your source code file will provide access to the core API of MapClosures:
#include <map_closures/MapClosures.hpp>
- 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
- To get an odometry estimate in our Python CLI we rely on KISS-ICP, you can install it using
pip install kiss-icp
- Then run:
make
The following command will provide details about how to use our pipeline:
map_closure_pipeline --help
map_closure_pipeline --help
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},
}
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>
This repository is heavily inspired by, and also depends on KISS-ICP