{"id":14990740,"url":"https://github.com/ethz-asl/polygon_coverage_planning","last_synced_at":"2025-10-09T09:32:24.279Z","repository":{"id":43040208,"uuid":"180611980","full_name":"ethz-asl/polygon_coverage_planning","owner":"ethz-asl","description":"Coverage planning in general polygons with holes.","archived":false,"fork":false,"pushed_at":"2023-11-13T10:00:43.000Z","size":1172,"stargazers_count":585,"open_issues_count":14,"forks_count":163,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-05-24T10:06:16.308Z","etag":null,"topics":["boustrophedon","cleaning","coverage","drone","mapping","mav","navigation","obstacles","path","photogrammetry","planning","polygon","robotics","ros","uav","zag","zig"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethz-asl.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,"publiccode":null,"codemeta":null}},"created_at":"2019-04-10T15:35:33.000Z","updated_at":"2025-05-23T07:48:26.000Z","dependencies_parsed_at":"2023-11-07T14:26:39.736Z","dependency_job_id":"d164a5e9-4508-4ad7-bdc4-ec9ac4191fcd","html_url":"https://github.com/ethz-asl/polygon_coverage_planning","commit_stats":{"total_commits":467,"total_committers":6,"mean_commits":77.83333333333333,"dds":0.4860813704496788,"last_synced_commit":"e4e977e5a52de72665f6f5f82e5770cf092068e1"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ethz-asl/polygon_coverage_planning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fpolygon_coverage_planning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fpolygon_coverage_planning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fpolygon_coverage_planning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fpolygon_coverage_planning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethz-asl","download_url":"https://codeload.github.com/ethz-asl/polygon_coverage_planning/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fpolygon_coverage_planning/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001135,"owners_count":26083022,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["boustrophedon","cleaning","coverage","drone","mapping","mav","navigation","obstacles","path","photogrammetry","planning","polygon","robotics","ros","uav","zag","zig"],"created_at":"2024-09-24T14:20:42.431Z","updated_at":"2025-10-09T09:32:24.261Z","avatar_url":"https://github.com/ethz-asl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# polygon_coverage_planning\nThis package contains implementations to compute coverage patterns and shortest paths in general polygon with holes.\nPlease cite our [accompanying publication](https://arxiv.org/pdf/1907.09224) when using it.\n```\nBähnemann, Rik, et al.\n\"Revisiting boustrophedon coverage path planning as a generalized traveling salesman problem.\"\nField and Service Robotics. Springer, Singapore, 2021.\n```\n\n![Coverage Planning in RVIZ](https://user-images.githubusercontent.com/11293852/61134221-70d18980-a4bf-11e9-87a7-d599b60c8dd2.gif)\n\n[Watch the application video](https://youtu.be/u1UOqdJoK9s):\n\n[![Watch the video](https://img.youtube.com/vi/u1UOqdJoK9s/sddefault.jpg)](https://youtu.be/u1UOqdJoK9s)\n\n## Installation on Ubuntu 20.04 and ROS noetic\nInstall [ROS noetic](http://wiki.ros.org/noetic/Installation/Ubuntu).\nInstall [mono](https://www.mono-project.com/download/stable/#download-lin-ubuntu).\n\nCreate a workspace and download the package.\n```\ncd ~\nmkdir -p catkin_ws/src\ncd catkin_ws\ncatkin init\ncatkin config --cmake-args -DCMAKE_BUILD_TYPE=Release\ncatkin config --extend /opt/ros/noetic\ncd src\ngit clone git@github.com:ethz-asl/polygon_coverage_planning.git\n```\n\nInstall all [remaining dependencies](install/prepare-jenkins-slave.sh):\n```\ncd polygon_coverage_planning/install\n./prepare-jenkins-slave.sh\n```\n\nFinally, build the workspace.\n```\ncatkin build\n```\n\n## Getting Started\nThe package has a ROS interface for shortest path planning and coverage planning.\nFirst source your workspace to execute any of the nodes.\n```\nsource ~/catkin_ws/devel/setup.bash\n```\n\n### Coverage Planning\n```\nroslaunch polygon_coverage_ros coverage_planner.launch\n```\n\nThe polygon can be set via\n- ROS [service](polygon_coverage_msgs/srv/PolygonService.srv) call `rosservice call /coverage_planner/set_polygon`\n- ROS [parameter](polygon_coverage_ros/launch/coverage_planner.launch) `/coverage_planner/polygon` or\n- RVIZ Polygon Tool as in the video above.\n\nThe plan is generated via\n- ROS [service](polygon_coverage_msgs/srv/PlannerService.srv) call `rosservice call /coverage_planner/plan_path` or\n- clicking start and goal points using the RVIZ clicked_point tool as in the video above.\n\nThe resulting waypointlist is published as [geometry_msgs/PoseArray](http://docs.ros.org/en/lunar/api/geometry_msgs/html/msg/PoseArray.html) on topic `/waypoint_list`.\n\nTo publish the waypoint list\n- call `rosservice call /coverage_planner/publish_path_points` or\n- set `publish_plan_on_planning_complete: true` in [coverage.yaml](polygon_coverage_ros/cfg/coverage_planner.yaml#L17)\n\n### Euclidean Shortest Path Planning\n```\nroslaunch polygon_coverage_ros shortest_path_planner.launch\n```\n\nSetting the polygon and planning the path is the same as for Coverage Planning.\n\n## Licensing\nThis repository is subject to GNU General Public License version 3 or later due to its dependencies.\n\n### CGAL dependencies\nThe underlying (exact) geometric operations rely on [CGAL 5.0.3](https://www.cgal.org/license.html) which is restricted by GNU General Public License version 3 or later.\nIn particular the dependencies are:\n- Algebraic Foundations (LGPL)\n- 2D and 3D Linear Geometry Kernel (LPGL)\n- 2D Polygon (LPGL)\n- Geometric Object Generators (LPGL)\n- STL Extensions (LGPL)\n- 2D Triangulation (GPL)\n- 2D Regularized Boolean Set-Operations (GPL)\n- 2D Straight Skeleton and Polygon Offsetting (GPL)\n- 2D Arrangement (GPL), see also\n\n```Fogel, Efi, Dan Halperin, and Ron Wein. CGAL arrangements and their applications: A step-by-step guide. Vol. 7. Springer Science \u0026 Business Media, 2012.```\n```Bungiu, Francisc, et al. \"Efficient computation of visibility polygons.\" arXiv preprint arXiv:1403.3905 (2014).```\n\n### GTSP solver\nThe underlying optimization uses the [memetic solver](http://www.cs.nott.ac.uk/~pszdk/?page=publications\u0026key=Gutin2009a) presented in\n```\nGutin, Gregory, and Daniel Karapetyan.\n\"A memetic algorithm for the generalized traveling salesman problem.\"\nNatural Computing 9.1 (2010): 47-60.\n```\nIt is free of charge for non-commercial purposes only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-asl%2Fpolygon_coverage_planning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethz-asl%2Fpolygon_coverage_planning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-asl%2Fpolygon_coverage_planning/lists"}