ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

Complete coverage path planning ros

asked 2015-06-30 16:04:59 -0500

Naman gravatar image

updated 2015-07-01 09:29:27 -0500

Hi all,

I have a mobile robot with a Hokuyo Lidar, wheel encoders, IMU and couple of Sonar sensors. I have started working on the Complete coverage path planning and I am wondering if there is any package in ROS which can be used for this? I have searched and was not able to find anything. If there is no such package, what is the best way to proceed about it? I know this is a very general question but I am just looking for some pointers or references which might be helpful to start working on Complete coverage path planning?

Thanks in advance.
Naman Kumar

edit retag flag offensive close merge delete



With full coverage you mean you are giving a map and you want the robot to move along the whole map right? I do not know any package for this. However, I guess full coverage algorithms just set partial goal points, so using any path planner and the navigation stack should be enough.

Javier V. Gómez gravatar image Javier V. Gómez  ( 2015-07-01 01:51:40 -0500 )edit

Thanks for the reply! That should work if there are no obstacles but if there are obstacles, then the robot should go around that obstacle ("Bug Algorithm") so that it does not miss that area and setting partial goal points might not work in that case.

Naman gravatar image Naman  ( 2015-07-01 08:37:28 -0500 )edit

Similar to (and a few others listed there)

lucasw gravatar image lucasw  ( 2016-02-15 18:36:06 -0500 )edit

5 Answers

Sort by » oldest newest most voted

answered 2017-02-24 13:20:18 -0500

Stephen_Z gravatar image

updated 2017-02-27 11:04:38 -0500

For anyone interested in writing a robust global planner plug-in for full coverage, the algorithm presented in the introduction of this published paper works well:

( )

The global planner algorithm steps are: 1) Use costmap2d (costmap_->getCost(x,y) in c++) to divide the map into occupied and free cells 2) Identify the closest cells to the desired start and end pose 3) Use a wavefront algorithm to assign the distance transform value at each cell 4) Iterate through these cells in a path of slowest decent as described in the paper

Next, you can implement the teb_local_planner for path following, but be sure to shorten the prune path value to something like 0.1m (found in teb_local_planner_ros.h). Otherwise the optimizer gets stuck. Id add a picture but i dont have enough karma...

EDIT: Thank you for the karma! This image shows the full coverage path in yellow covering most of the willow garage map. I have included the z-axis to shed some light on the algorithm. the red points represent the distance transform cost of every free cell (higher=more cost), and the planner plans the slowest decent down this gradient funnel. Note the lowest area is the goal point.

image description

edit flag offensive delete link more


@Stephen_Z This setup sounds interesting. I've done something similar. Wanna upload the picture to a third party service and then post a link to it here? (Also, I just gave you some karma by upvoting the answer. See if you can upload the picture now.)

spmaniato gravatar image spmaniato  ( 2017-02-25 10:58:04 -0500 )edit

Hey @Stephen_Z, is it possible for you to run your CCP algorithm over the stage simulator maze and bosch world environment and post result images here??? I need some reference for my work, I will be really thankful for your help. Cheers!

dev_arya gravatar image dev_arya  ( 2017-05-04 04:54:28 -0500 )edit

Yes, I think I can do that. Could you attach some links that'll get me to the maps you are interested in?

Stephen_Z gravatar image Stephen_Z  ( 2017-05-04 08:18:42 -0500 )edit

@Stephen_Z Thanks a lot. Here is the link There are two maps: maze and robopark. I actually need the path trace for complete coverage. Thanks again.

dev_arya gravatar image dev_arya  ( 2017-05-04 09:47:48 -0500 )edit

@Stephen_Z : Could you generate the maps as I requested..

dev_arya gravatar image dev_arya  ( 2017-05-15 04:12:28 -0500 )edit

I am very sorry, but i have moved on from this project for now and it turned out to be harder then I expected to get my old code working in a reasonable amount of time. I tried, and I apologize for any inconvenience this has caused you.

Stephen_Z gravatar image Stephen_Z  ( 2017-05-15 06:47:47 -0500 )edit

@Stephen_Z : np Stephen.. I can understand but thanks for your time. Cheers!

dev_arya gravatar image dev_arya  ( 2017-05-16 04:04:14 -0500 )edit

@Stephen_Z: How can you create such images including the red z-axis and the yellow path? And is there any possibility to have a look at your source code? Would be interesting for me.

Aureus gravatar image Aureus  ( 2017-06-13 17:47:22 -0500 )edit

answered 2015-08-14 14:56:24 -0500

AsifA gravatar image

This may not be very relevant but if you are interested in sensor planning when you have a mobile remote sensor (gas sensor, camera, laser or any other for which you can define sensing range and field of view) and you want to cover the whole environment by taking measurements at minimum number of positions then here is a possible solution.

However, the code is not available on ROS. Hopefully I will be able to release it at some point in near future.

edit flag offensive delete link more

answered 2015-08-14 15:14:38 -0500

For autonomous exploration the following packages are available:

If you require visiting every part of a floor plan with your platform (like what an intelligent robot vacuum would need to do) I'm not sure there is software available for that.

edit flag offensive delete link more

answered 2016-02-15 11:01:39 -0500

spmaniato gravatar image

The heatmap package ( ) says it does coverage path planning as part of its functionality. The source code is here and looks maintained:

The heatmap package itself uses the coverage path planner from the Auburn Autonomous Lawnmower stack ( ), which looks out of date.

edit flag offensive delete link more


Unfortunately I think the heatmap package can only plan for coverage path for a polygon defined by rviz's publish_point and not coverage path for the given map.

jjbecomespheh gravatar image jjbecomespheh  ( 2020-08-12 04:53:13 -0500 )edit

answered 2015-07-01 19:52:01 -0500

David Lu gravatar image
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2015-06-30 16:04:59 -0500

Seen: 7,417 times

Last updated: Feb 27 '17