Patchwork++
📑 About Patchwork++ (IROS'22)
- A fast and robust ground segmentation algorithm on 3D point cloud.
-
An extension of Patchwork (RA-L'21 with IROS'21).
-
Please refer our paper for detailed explanantions and experimental results!
- Validated on SemanticKITTI dataset. The benchmark code is available on here.
-
💡 Contents: YouTube, arXiv, IEEE Xplore
📂 What's in this repo
- C++ source code of Patchwork++ (patchworkpp)
- Python binding of Patchwork++ using pybind11 (python_wrapper)
- Examples codes, which visualizes a ground segmentation result by Patchwork++ (examples)
👍
If you are familiar with ROS, you can also visit here and try executing ROS-based Patchwork++!
📦 Prerequisite packages
You may need to install Eigen, numpy, and Open3D. Open3D is used for point cloud visualization.
# To install Eigen and numpy
$ sudo apt-get install libeigen3-dev
$ pip install numpy
# To install Open3D Python packages
$ pip install open3d
# To install Open3D C++ packages
$ git clone https://github.com/isl-org/Open3D
$ cd Open3D
$ util/install_deps_ubuntu.sh # Only needed for Ubuntu
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install
⚙️ How to build
Please follow below codes to build Patchwork++.
$ git clone https://github.com/url-kaist/patchwork-plusplus
$ cd patchwork-plusplus
$ mkdir build && cd build
$ cmake ..
$ make
🏃 To run the demo codes
There are some example codes for your convenience! Please try using Patchwork++ to segment ground points in a 3D point cloud
😃
Python
# Run patchwork++ and visualize ground points(green) and nonground points(red)
$ python examples/python/demo_visualize.py
# Run patchwork++ with sequential point cloud inputs
$ python examples/python/demo_sequential.py
C++
# Run patchwork++ and visualize ground points(green) and nonground points(red)
$ ./build/examples/cpp/demo_visualize
# Run patchwork++ with sequential point cloud inputs
$ ./build/examples/cpp/demo_sequential
# Run patchwork++ with your point cloud file, example here
$ ./build/examples/cpp/demo_visualize ./data/000000.bin # specify file path
Demo Result
If you execute Patchwork++ with given demo codes well, you can get the following result!
It is a ground segmentation result of data/000000.bin file using Open3D visualization. (Ground : Green, Nonground : Red)
📝 Citation
If you use our codes, please cite our paper (arXiv, IEEE Xplore)
@inproceedings{lee2022patchworkpp,
title={{Patchwork++: Fast and robust ground segmentation solving partial under-segmentation using 3D point cloud}},
author={Lee, Seungjae and Lim, Hyungtae and Myung, Hyun},
booktitle={Proc. IEEE/RSJ Int. Conf. Intell. Robots Syst.},
year={2022},
pages={13276-13283}
}
In addition, you can also check the paper of our baseline, Patchwork. (arXiv, IEEE Xplore)
@article{lim2021patchwork,
title={Patchwork: Concentric Zone-based Region-wise Ground Segmentation with Ground Likelihood Estimation Using a 3D LiDAR Sensor},
author={Lim, Hyungtae and Minho, Oh and Myung, Hyun},
journal={IEEE Robotics and Automation Letters},
year={2021}
}
🚩 Tested Environment
- Ubuntu 18.04 and 20.04
- CMake 3.25.1 (>=3.20, min. Required to install Open3D)
- Open3D 0.15.2
- pybind11 v2.2.3
- Eigen 3.3.7
📫 Contact Information
If you have any questions, please do not hesitate to contact us
- Seungjae Lee
✉️ sj98lee at kaist.ac.kr
- Hyungtae Lim
✉️ shapelim at kaist.ac.kr