GithubHelp home page GithubHelp logo

deliangye / 3d_bbs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kokiaoki/3d_bbs

0.0 0.0 0.0 6.63 MB

License: MIT License

Shell 0.99% C++ 68.31% Python 2.35% Cuda 21.86% CMake 5.48% Dockerfile 1.02%

3d_bbs's Introduction

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

  • 3D global localization for such as robot's initial pose estimation

Input

  • A single 3D LiDAR scan aligned in the gravity direction by using such as IMU
    (Although 3D-BBS also performs 6DoF search without gravity aligning, the processing time is more than 10 times longer.)
  • 3D pre-built point cloud map

Output

  • $4\times4$ transformation matrix about coarse sensor pose in map coordinates.

Main Features

  • Full search algorithm based on branch-and-bound (BnB) scan matching
  • Fast processing (latest: about 20 ms ~) by proposed GPU-accelerated BnB and roto-translational branching
  • No initial pose (we assume that the roll and pitch angles are roughly estimated by IMU for faster processing)
  • Low voxelmap memory consumption due to sparse hash map

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:

  • Hierarchical voxelmap construction
    • Paper: 9,272 ms on average
    • Latest: 3,494 ms on average
    • Load saved voxelmaps directly: 130 ms on average (See step 5 on this page to save voxelmaps)
  • Global localization
    • Paper: 878 ms on average
    • Latest: 189 ms on average

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

โœ… Dependencies

  • bbs3d (Lower versions are not tested)
    • CMake
    • Eigen3 (3.4.0 or higher)
    • OpenMP
    • CUDA (12.0 or higher)
  • test
    • (All bbs3d dependencies)
    • PCL
  • ros2_test
    • (All bbs3d dependencies)
    • ros2 humble

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
  • CPU ver. & GPU ver. (Please ignore the large number of warnings)
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
sudo make install
  • CPU ver. only
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_CUDA=OFF
make -j
sudo make install

๐Ÿ“‹ 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
  2. Copy description above # Common include directories in test/CMakeLists.txt to your CMakeLists.txt
  3. 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

3d_bbs's People

Contributors

kokiaoki avatar qpc001 avatar taeyoung96 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.