{"id":13716281,"url":"https://github.com/nobleo/full_coverage_path_planner","last_synced_at":"2025-05-07T05:32:32.079Z","repository":{"id":40641807,"uuid":"269572838","full_name":"nobleo/full_coverage_path_planner","owner":"nobleo","description":"Full coverage path planning provides a move_base_flex plugin that can plan a path that will fully cover a given area","archived":false,"fork":false,"pushed_at":"2024-11-25T08:31:53.000Z","size":312,"stargazers_count":561,"open_issues_count":19,"forks_count":159,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-11-25T09:28:41.626Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nobleo.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":"2020-06-05T08:26:13.000Z","updated_at":"2024-11-25T08:31:57.000Z","dependencies_parsed_at":"2024-01-05T23:46:57.596Z","dependency_job_id":"97087e28-ea63-40f2-80d7-0f7e9b6a1e8f","html_url":"https://github.com/nobleo/full_coverage_path_planner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobleo%2Ffull_coverage_path_planner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobleo%2Ffull_coverage_path_planner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobleo%2Ffull_coverage_path_planner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobleo%2Ffull_coverage_path_planner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nobleo","download_url":"https://codeload.github.com/nobleo/full_coverage_path_planner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252823232,"owners_count":21809703,"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":[],"created_at":"2024-08-03T00:01:08.885Z","updated_at":"2025-05-07T05:32:32.069Z","avatar_url":"https://github.com/nobleo.png","language":"C++","readme":"# Full Coverage Path Planner (FCPP)\n\n\u003e :grey_exclamation: This package is not in use by our company anymore. Contributions to this package are still welcome!\n\nPaid support options are also available, please contact us at [nobleo-technology.nl](https://nobleo-technology.nl).\n\n## Overview\n\nThis package provides an implementation of a Full Coverage Path Planner (FCPP) using the Backtracking Spiral Algorithm (BSA), see [1].\n\nThis packages acts as a global planner plugin to the Move Base package (http://wiki.ros.org/move_base).\n\n![BSA](doc/fcpp_robot_0_5m_plus_tool_0_2m.png)\n\nThe user can configure robot radius and tool radius separately:\n\n![robot_plus_tool](doc/robot_plus_tool.png)\n\n\n**Keywords:** coverage path planning, move base\n\n### License\n\nApache 2.0\n\n**Author(s): Yury Brodskiy, Ferry Schoenmakers, Tim Clephas, Jerrel Unkel, Loy van Beek, Cesar lopez**\n\n**Maintainer:  Cesar Lopez, cesar.lopez@nobleo.nl**\n\n**Affiliation: Nobleo Projects BV, Eindhoven, the Netherlands**\n\nThe Full Coverage Path Planner package has been tested under [ROS] Melodic and Ubuntu 18.04.\n\n## Installation\n\n\n### Building from Source\n\n\n#### Dependencies\n\n- [Robot Operating System (ROS)](http://wiki.ros.org) (middleware for robotics),\n- [Move Base Flex (MBF)](http://wiki.ros.org/move_base_flex) (move base flex node) used for system testing\n\n\n#### Building\n\nTo build from source, clone the latest version from this repository into your workspace and compile the package using\n\n    cd catkin_workspace/src\n    git clone https://github.com/nobleo/full_coverage_path_planner.git\n    cd ../\n    catkin_make\n\n### Unit Tests\n\nAll tests can be run using:\n\n    catkin build full_coverage_path_planner --catkin-make-args run_tests\n\n#### test_common\nUnit test that checks the basic functions used by the repository\n\n#### test_spiral_stc\nUnit test that checks the basis spiral algorithm for full coverage. The test is performed for different situations to check that the algorithm coverage the accessible map cells. A test is also performed in randomly generated maps.\n\n#### test_full_coverage_path_planner.test\nROS system test that checks the full coverage path planner together with a tracking pid. A simulation is run such that a robot moves to fully cover the accessible cells in a given map.\n\n\n## Usage\n\nRun a full navigation example using:\n\n    roslaunch full_coverage_path_planner test_full_coverage_path_planner.launch\n\nGive a 2D-goal in rviz to start path planning algorithm\n\nDepends on:\n\n[mobile_robot_simulator](https://github.com/mrath/mobile_robot_simulator.git) that integrates /cmd_vel into a base_link TF-frame and an odometry publisher\n\n[tracking_pid](https://github.com/nobleo/tracking_pid/) Global path tracking controller\n\n\n## Launch files\n\n### test/full_coverage_path_planner/test_full_coverage_path_planner.launch\n\nRuns the full_coverage_path_planner global planner in combination with tracking PID local planner.\nMoreover a coverage progress tracking node is launched to monitor the coverage progress.\nMobile_robot_simulator is used to integrate cmd_vel output into TF and odometry.\n\nArguments:\n\n* **`map`**: path to a global costmap. Default: `$(find full_coverage_path_planner)/maps/basement.yaml)`\n* **`target_x_vel`**: target x velocity for use in interpolator. Default: `0.2`\n* **`target_yaw_vel`**: target yaw velocity for use in interpolator. Default: `0.2`\n* **`robot_radius`**: radius of the robot for use in the global planner. Default: `0.6`\n* **`tool_radius`**: radius of the tool for use in the global planner. Default: `0.2`\n\n\nStart planning and tracking by giving a 2D nav goal.\n\n\n## Nodes\n\n### coverage_progress\nThe CoverageProgressNode keeps track of coverage progress. It does this by periodically looking up the position of the coverage disk in an occupancy grid. Cells within a radius from this position are 'covered'\n\n#### Subscribed Topics\n\n* **`/tf`** ([tf2_msgs/TFMessage])\n    ros tf dynamic transformations\n* **`/tf_static`** ([tf2_msgs/TFMessage])\n    ros tf static transformations\n#### Published Topics\n\n* **`/coverage_grid`** ([nav_msgs/OccupancyGrid])\n    occupancy grid to visualize coverage progress\n* **`/coverage_progress`** ([std_msgs/Float32])\n    monitors coverage (from 0 none to 1 full) on the given area\n\n#### Services\n\n* **`/coverage_progress/reset`** ([std_srvs/SetBool])\n    resets coverage_progress node. For instance when robot position needs to be manually updated\n\n\n#### Parameters\n\n* **`target_area/x`**: size in x of the target area to monitor\n* **`target_area/y`**: size in y of the target area to monitor\n* **`coverage_radius`**: radius of the tool to compute coverage progress\n\n\n## Plugins\n### full_coverage_path_planner/SpiralSTC\nFor use in move_base(\\_flex) as \"base_global_planner\"=\"full_coverage_path_planner/SpiralSTC\". It uses global_cost_map and global_costmap/robot_radius.\n\n#### Parameters\n\n* **`robot_radius`**: robot radius, which is used by the CPP algorithm to check for collisions with static map\n* **`tool_radius`**: tool radius, which is used by the CPP algorithm to discretize the space and find a full coverage plan\n\n\n## References\n\n[1] GONZALEZ, Enrique, et al. BSA: A complete coverage algorithm. In: Proceedings of the 2005 IEEE International Conference on Robotics and Automation. IEEE, 2005. p. 2040-2044.\n\n## Bugs \u0026 Feature Requests\n\nPlease report bugs and request features using the [Issue Tracker](https://github.com/nobleo/full_coverage_path_planner/issues).\n\n\n[ROS]: http://www.ros.org\n[rviz]: http://wiki.ros.org/rviz\n[MBF]: http://wiki.ros.org/move_base_flex\n\n## Acknowledgments\n\n\u003c!--\n    ROSIN acknowledgement from the ROSIN press kit\n    @ https://github.com/rosin-project/press_kit\n--\u003e\n\n\u003ca href=\"http://rosin-project.eu\"\u003e\n  \u003cimg src=\"http://rosin-project.eu/wp-content/uploads/rosin_ack_logo_wide.png\"\n       alt=\"rosin_logo\" height=\"60\" \u003e\n\u003c/a\u003e\n\nSupported by ROSIN - ROS-Industrial Quality-Assured Robot Software Components.\nMore information: \u003ca href=\"http://rosin-project.eu\"\u003erosin-project.eu\u003c/a\u003e\n\n\u003cimg src=\"http://rosin-project.eu/wp-content/uploads/rosin_eu_flag.jpg\"\n     alt=\"eu_flag\" height=\"45\" align=\"left\" \u003e\n\nThis project has received funding from the European Union’s Horizon 2020\nresearch and innovation programme under grant agreement no. 732287.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnobleo%2Ffull_coverage_path_planner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnobleo%2Ffull_coverage_path_planner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnobleo%2Ffull_coverage_path_planner/lists"}