{"id":29585747,"url":"https://github.com/limhyungtae/patchwork","last_synced_at":"2025-07-20T02:16:48.723Z","repository":{"id":36981064,"uuid":"377702573","full_name":"LimHyungTae/patchwork","owner":"LimHyungTae","description":"SOTA fast and robust ground segmentation using 3D point cloud (accepted in RA-L'21 w/ IROS'21)","archived":false,"fork":false,"pushed_at":"2025-05-05T01:50:51.000Z","size":80172,"stargazers_count":521,"open_issues_count":0,"forks_count":77,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-05-05T02:35:56.241Z","etag":null,"topics":["3dpointcloud","autonomous-driving","autonomous-vehicles","ground-estimation","ground-estimator","ground-segmentation","lidar","ros"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LimHyungTae.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-06-17T04:16:52.000Z","updated_at":"2025-05-05T01:50:55.000Z","dependencies_parsed_at":"2022-07-11T12:30:20.289Z","dependency_job_id":"a6551f68-0a79-4c8e-b8ed-2ff343828849","html_url":"https://github.com/LimHyungTae/patchwork","commit_stats":{"total_commits":103,"total_committers":5,"mean_commits":20.6,"dds":0.5145631067961165,"last_synced_commit":"67b512a0afe8a01a53d123914a9f3640aeea07f4"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LimHyungTae/patchwork","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimHyungTae%2Fpatchwork","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimHyungTae%2Fpatchwork/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimHyungTae%2Fpatchwork/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimHyungTae%2Fpatchwork/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LimHyungTae","download_url":"https://codeload.github.com/LimHyungTae/patchwork/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimHyungTae%2Fpatchwork/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266057350,"owners_count":23870131,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3dpointcloud","autonomous-driving","autonomous-vehicles","ground-estimation","ground-estimator","ground-segmentation","lidar","ros"],"created_at":"2025-07-20T02:16:47.750Z","updated_at":"2025-07-20T02:16:48.708Z","avatar_url":"https://github.com/LimHyungTae.png","language":"C++","readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003ePatchwork\u003c/h1\u003e\n    \u003ca href=\"https://github.com/LimHyungTae/patchwork\"\u003e\u003cimg src=\"https://img.shields.io/badge/-C++-blue?logo=cplusplus\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/LimHyungTae/patchwork/releases/tag/v0.2\"\u003e\u003cimg src=\"https://img.shields.io/badge/ROS-Noetic (Click here)-blue\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/LimHyungTae/patchwork\"\u003e\u003cimg src=\"https://img.shields.io/badge/ROS2-Jazy-orange\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/LimHyungTae/patchwork\"\u003e\u003cimg src=\"https://img.shields.io/badge/Linux-FCC624?logo=linux\u0026logoColor=black\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://ieeexplore.ieee.org/document/9466396\"\u003e\u003cimg src=\"https://img.shields.io/badge/DOI-10.1109/LRA.2021.3093009-004088.svg\"/\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=https://youtu.be/rclqeDi4gow\u003eVideo\u003c/a\u003e\n    \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n    \u003ca href=\"https://github.com/LimHyungTae/patchwork?tab=readme-ov-file#requirements\"\u003eInstall by ROS\u003c/a\u003e\n    \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n    \u003ca href=https://arxiv.org/abs/2108.05560\u003ePaper\u003c/a\u003e\n    \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n    \u003ca href=https://github.com/LimHyungTae/patchwork/wiki\u003eProject Wiki (for beginners)\u003c/a\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cdiv style=\"display: flex; justify-content: space-between; width: 100%;\"\u003e\n      \u003cimg src=\"img/demo_kitti00_v2.gif\" alt=\"animated\" style=\"width: 90%;\" /\u003e\n      \u003cimg src=\"img/demo_terrain_v3.gif\" alt=\"animated\" style=\"width: 90%;\" /\u003e\n  \u003c/div\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n---\n\n**IMPORTANT**: (Aug. 18th, 2024) I employ TBB, so its FPS is increased from **50 Hz** to **100 Hz**!\nIf you want to use the paper version of Patchwork for SOTA comparison purpose, Please use this [ground seg. benchmark code](https://github.com/url-kaist/Ground-Segmentation-Benchmark).\n\n\nPatchwork                  |  Concept of our method (CZM \u0026 GLE)\n:-------------------------:|:-------------------------:\n![](img/patchwork_concept_resized.jpg) |  ![](img/patchwork.gif)\n\nIt's an overall updated version of **R-GPF of ERASOR** [**[Code](https://github.com/LimHyungTae/ERASOR)**] [**[Paper](https://arxiv.org/abs/2103.04316)**].\n\n---\n\n\n## :open_file_folder: Contents\n0. [Test Env.](#Test-Env.)\n0. [Requirements](#requirements)\n0. [How to Run Patchwork](#How-to-Run-Patchwork)\n0. [Citation](#citation)\n\n### Test Env.\n\nThe code is tested successfully at\n* Linux 24.04 LTS\n* ROS2 Jazzy\n\nROS Noetic version can be found [here](https://github.com/LimHyungTae/patchwork/releases/tag/v0.2)\n\n## :package: Prerequisite Installation\n\n```bash\nmkdir -p ~/colcon/src\ncd ~/colcon/src\ngit clone https://github.com/LimHyungTae/patchwork.git\ncd ..\ncolcon build --packages-up-to patchwork --cmake-args -DCMAKE_BUILD_TYPE=Release\n```\n\n## :gear: How to Run Patchwork\n\n#### :chart_with_upwards_trend: Offline KITTI dataset\n\n1. Download [SemanticKITTI](http://www.semantic-kitti.org/dataset.html#download) Odometry dataset (We also need labels since we also open the evaluation code! :)\n\n2. The `dataset_path` should consist of `velodyne` folder and `labels` folder as follows:\n\n```\ndata_path (e.g. 00, 01, ..., or 10)\n_____velodyne\n     |___000000.bin\n     |___000001.bin\n     |___000002.bin\n     |...\n_____labels\n     |___000000.label\n     |___000001.label\n     |___000002.label\n     |...\n_____...\n\n```\n\n3. Run launch file\n\n```\nros2 launch patchwork evaluate.launch.yaml evaluate_semantickitti:=true dataset_path:=\u003cYOUR_TARGET_SEQUENCE_DIR\u003e\"\ne.g.,\nros2 launch patchwork evaluate.launch.yaml evaluate_semantickitti:=true dataset_path:=\"/home/hyungtae_lim/semkitti/dataset/sequences/04\"\n```\n\n\n#### :runner: Online Ground Segmentation\n\n```\nros2 launch patchwork run_patchwork.launch.yaml scan_topic:=\u003cYOUR_TOPIC_NAME\u003e sensor_type:=\u003cYOUR_SENSOR_TYPE\u003e\ne.g.,\nros2 launch patchwork run_patchwork.launch.yaml scan_topic:=\"/acl_jackal2/lidar_points\" sensor_type:=\"velodyne16\"\n```\n\n\nFor better understanding of the parameters of Patchwork, please read [our wiki, 4. IMPORTANT: Setting Parameters of Patchwork in Your Own Env.](https://github.com/LimHyungTae/patchwork/wiki/4.-IMPORTANT:-Setting-Parameters-of-Patchwork-in-Your-Own-Env.).\n\n---------\n\n## Citation\n\nIf you use our code or method in your work, please consider citing the following:\n\n\t@article{lim2021patchwork,\n    title={Patchwork: Concentric Zone-based Region-wise Ground Segmentation with Ground Likelihood Estimation Using a 3D LiDAR Sensor},\n    author={Lim, Hyungtae and Minho, Oh and Myung, Hyun},\n    journal={IEEE Robotics and Automation Letters},\n    year={2021}\n    }\n\n\n---\n\n## Updates\n\n#### NEWS (22.12.24)\n- Merry christmas eve XD! `include/label_generator` is added to make the `.label` file, following the SemanticKITTI format.\n- The `.label` files can be directly used in [3DUIS benchmark](https://github.com/PRBonn/3DUIS)\n- Thank [Lucas Nunes](https://scholar.google.com/citations?user=PCxhsf4AAAAJ\u0026hl=en\u0026oi=ao) and [Xieyuanli Chen](https://scholar.google.com/citations?user=DvrngV4AAAAJ\u0026hl=en\u0026oi=sra) for providing code snippets to save a `.label` file.\n\n#### NEWS (22.07.25)\n- Pybinding + more advanced version is now available on [Patchwork++](https://github.com/url-kaist/patchwork-plusplus) as a preprocessing step for deep learning users (i.e., python users can also use our robust ground segmentation)!\n\n#### NEWS (22.07.13)\n- For increasing convenience of use, the examples and codes are extensively revised by reflecting [issue #12](https://github.com/LimHyungTae/patchwork/issues/12).\n\n#### NEWS (22.05.22)\n- The meaning of `elevation_thresholds` is changed to increase the usability. The meaning is explained in [wiki](https://github.com/LimHyungTae/patchwork/wiki/4.-IMPORTANT:-Setting-Parameters-of-Patchwork-in-Your-Own-Env.).\n- A novel height estimator, called *All-Terrain Automatic heighT estimator (ATAT)* is added within the patchwork code, which auto-calibrates the sensor height using the ground points in the vicinity of the vehicle/mobile robot.\n  - Please refer to the function `consensus_set_based_height_estimation()`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimhyungtae%2Fpatchwork","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimhyungtae%2Fpatchwork","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimhyungtae%2Fpatchwork/lists"}