Code Monkey home page Code Monkey logo

full_coverage_path_planner's Introduction

Full Coverage Path Planner (FCPP)

Overview

This package provides an implementation of a Full Coverage Path Planner (FCPP) using the Backtracking Spiral Algorithm (BSA), see [1].

This packages acts as a global planner plugin to the Move Base Flex package (http://wiki.ros.org/move_base_flex).

BSA

The user can configure robot radius and tool radius separately:

robot_plus_tool

Keywords: coverage path planning, move base

License

Apache 2.0

Author(s): Yury Brodskiy, Ferry Schoenmakers, Tim Clephas, Jerrel Unkel, Loy van Beek, Cesar lopez

Maintainer: Cesar Lopez, [email protected]

Affiliation: Nobleo Projects BV, Eindhoven, the Netherlands

The Full Coverage Path Planner package has been tested under ROS Melodic and Ubuntu 18.04.

Installation

Building from Source

Dependencies

Building

To build from source, clone the latest version from this repository into your workspace and compile the package using

cd catkin_workspace/src
git clone https://github.com/nobleo/full_coverage_path_planner.git
cd ../
catkin_make

Unit Tests

All tests can be run using:

catkin build full_coverage_path_planner --catkin-make-args run_tests

test_common

Unit test that checks the basic functions used by the repository

test_spiral_stc

Unit 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.

test_full_coverage_path_planner.test

ROS 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.

Usage

Run a full navigation example using:

roslaunch full_coverage_path_planner test_full_coverage_path_planner.launch

Give a 2D-goal in rviz to start path planning algorithm

Depends on:

mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher

tracking_pid Global path tracking controller

Launch files

test/full_coverage_path_planner/test_full_coverage_path_planner.launch

Runs the full_coverage_path_planner global planner in combination with tracking PID local planner. Moreover a coverage progress tracking node is launched to monitor the coverage progress. Mobile_robot_simulator is used to integrate cmd_vel output into TF and odometry.

Arguments:

  • map: path to a global costmap. Default: $(find full_coverage_path_planner)/maps/basement.yaml)
  • target_x_vel: target x velocity for use in interpolator. Default: 0.2
  • target_yaw_vel: target yaw velocity for use in interpolator. Default: 0.2
  • robot_radius: radius of the robot for use in the global planner. Default: 0.6
  • tool_radius: radius of the tool for use in the global planner. Default: 0.2

Start planning and tracking by giving a 2D nav goal.

Nodes

coverage_progress

The 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'

Subscribed Topics

  • /tf ([tf2_msgs/TFMessage]) ros tf dynamic transformations
  • /tf_static ([tf2_msgs/TFMessage]) ros tf static transformations

Published Topics

  • /coverage_grid ([nav_msgs/OccupancyGrid]) occupancy grid to visualize coverage progress
  • /coverage_progress ([std_msgs/Float32]) monitors coverage (from 0 none to 1 full) on the given area

Services

  • /coverage_progress/reset ([std_srvs/SetBool]) resets coverage_progress node. For instance when robot position needs to be manually updated

Parameters

  • target_area/x: size in x of the target area to monitor
  • target_area/y: size in y of the target area to monitor
  • coverage_radius: radius of the tool to compute coverage progress

Plugins

full_coverage_path_planner/SpiralSTC

For use in move_base(_flex) as "base_global_planner"="full_coverage_path_planner/SpiralSTC". It uses global_cost_map and global_costmap/robot_radius.

Parameters

  • robot_radius: robot radius, which is used by the CPP algorithm to check for collisions with static map
  • tool_radius: tool radius, which is used by the CPP algorithm to discretize the space and find a full coverage plan

References

[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.

Bugs & Feature Requests

Please report bugs and request features using the Issue Tracker.

Acknowledgments

rosin_logo

Supported by ROSIN - ROS-Industrial Quality-Assured Robot Software Components. More information: rosin-project.eu

eu_flag

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement no. 732287.

full_coverage_path_planner's People

Contributors

timple avatar cesar-lopez-mar avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.