KOKIAOKI / 3d_bbs

MIT License
172 stars 28 forks source link

3D-BBS: Global Localization for 3D Point Cloud Scan Matching Using Branch-and-Bound Algorithm


This repository contains the public source code for the paper to be published at ICRA2024 in Yokohama.

If you like the 3D-BBS, we kindly ask for your support by giving our repository star ⭐!

📄 Paper | 🎞️ Video

@inproceedings{aoki20243dbbs,
  title={3D-BBS: Global Localization for 3D Point Cloud Scan Matching Using Branch-and-Bound Algorithm}, 
  author={Koki Aoki and Kenji Koide and Shuji Oishi and Masashi Yokozuka and Atsuhiko Banno and Junichi Meguro},
  booktitle={IEEE International Conference on Robotics and Automation},
  year={2024},
  organization={IEEE}
}

🔍 Quick understanding about 3D-BBS

overview

Task

Input

Output

Main Features

Other Features

Click here!
- Optional **Voxelmap pre-construction** and direct read function - Optional **timeout** function - **Minimal dependencies** in core source code so that user can **easily integrate** into the other projects - **Docker support** by @Taeyoung96 - **Test data** is available, allowing evaluation of localization error and processing time. - **ROS2 implementation example**

📣 News

The latest implementation demonstrates faster processing time than our paper. Performance on our test data:

The hardware configuration (Intel Core i7-10700K 3.8GHz, 32GB RAM, and NVIDIA GeForce RTX2060) is the same as in the paper.

✅ Dependencies

Support Docker 🐳

If nvidia driver is 525.60.11 or higher, try docker!
For more information, you can check docker_start.md

🌟 3D-BBS core source code

Build and Install

# Note: If you are using Eigen3 below 3.4.0, git clone with --recursive
git clone https://github.com/KOKIAOKI/3d_bbs.git
cd 3d_bbs
mkdir build && cd build

📋 Test code

See test_code.md

overview

🤖 ROS 2 test code

See ros2_test_code.md

overview

💻 Use 3D-BBS in your cmake project

Click here!
1. Copy `test/cmake` to your project directory 1. Copy description above `# Common include directories` in `test/CMakeLists.txt` to `your CMakeLists.txt` 1. Add either of the following depending on your implementation If you use the CPU version, replace `gpu` with `cpu`. ``` find_package(Eigen3 REQUIRED) target_include_directories(yours ${EIGEN3_INCLUDE_DIR} ${gpu_bbs3d_LIBRARY}) ```

🌈 Acknowledgement

I sincerely appreciate the authors for generously sharing their public code.
hdl_global_localization
cartographer
TEASER-plusplus