Home

Awesome

<div align="center"> <h1>Patchwork++</h1> <a href="https://github.com/url-kaist/patchwork-plusplus/tree/master/patchworkpp"><img src="https://img.shields.io/badge/-C++-blue?logo=cplusplus" /></a> <a href="https://github.com/url-kaist/patchwork-plusplus/tree/master"><img src="https://img.shields.io/badge/Python-3670A0?logo=python&logoColor=ffdd54" /></a> <a href="https://github.com/url-kaist/patchwork-plusplus/tree/master/ros"><img src="https://img.shields.io/badge/ROS2-Humble-blue" /></a> <a href="https://github.com/url-kaist/patchwork-plusplus/tree/master"><img src="https://img.shields.io/badge/Linux-FCC624?logo=linux&logoColor=black" /></a> <a href="https://ieeexplore.ieee.org/document/9981561"><img src="https://img.shields.io/badge/DOI-10.1109/IROS47612.2022.9981561-004088.svg"/> <br /> <br /> <a href=https://www.youtube.com/watch?v=fogCM159GRk>Video</a> <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span> <a href="https://github.com/url-kaist/patchwork-plusplus/tree/master/README.md###Python">Install</a> <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span> <a href="https://github.com/url-kaist/patchwork-plusplus/tree/master/ros">ROS2</a> <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span> <a href=https://www.youtube.com/watch?v=fogCM159GRk>Paper</a> <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span> <a href=https://github.com/url-kaist/patchwork-plusplus/issues>Contact Us</a> <br /> <br /> <p align="center"><img src=pictures/patchwork++.gif alt="animated" /></p>

Patchwork++, an extension of Patchwork, is a fast, robust, and self-adaptive ground segmentation algorithm on 3D point cloud.

</div>

:open_file_folder: What's in this repo

If you are familiar with ROS1, you can also visit here and try executing ROS1-based Patchwork++!

:package: Prerequisite packages

What we need are just minimal dependencies.

sudo apt-get install g++ build-essential libeigen3-dev python3-pip python3-dev cmake -y
</details>

:gear: How to build & Run

Python

Pure installation

make pyinstall

Then, you can use Patchwork++ by import pypatchworkpp, which is super simple!

Installation to run demo

Only Open3D (> 0.17.0) is additionally installed for visualization purposes.

make pyinstall_with_demo

How to run Python demos is explained here.

C++

Pure installation

make cppinstall

Installation with demo

Only Open3D (> 0.17.0) is additionally installed for visualization purposes.

make cppinstall_with_demo

How to run the C++ demos is explained here.

ROS2

You should not need any extra dependency, just clone and build:

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/url-kaist/patchwork-plusplus.git
cd ~/ros2_ws
colcon build --packages-select patchworkpp
source ./install/setup.bash 

How to launch ROS2 nodes is explained here.

:pencil: 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}
}

:triangular_flag_on_post: Tested Environment

:mailbox: Contact Information

If you have any questions, please do not hesitate to contact us


Todo List