ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
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:
(https://scholar.google.com/scholar?q=planning+paths+of+complete+coverage+of+a+unstructured+enviroment+by+a+mobile&btnG=&hl=en&as_sdt=0%2C43)
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...
2 | No.2 Revision |
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:
(https://scholar.google.com/scholar?q=planning+paths+of+complete+coverage+of+a+unstructured+enviroment+by+a+mobile&btnG=&hl=en&as_sdt=0%2C43)
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
cell
EDIT: This image shows the full coverage path in yellow covering most of the willow garage map. I have include 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. 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...
3 | No.3 Revision |
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:
(https://scholar.google.com/scholar?q=planning+paths+of+complete+coverage+of+a+unstructured+enviroment+by+a+mobile&btnG=&hl=en&as_sdt=0%2C43)
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
EDIT: This image shows the full coverage path in yellow covering most of the willow garage map. I have include 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.
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...
4 | No.4 Revision |
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:
(https://scholar.google.com/scholar?q=planning+paths+of+complete+coverage+of+a+unstructured+enviroment+by+a+mobile&btnG=&hl=en&as_sdt=0%2C43)
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.
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...
5 | No.5 Revision |
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:
(https://scholar.google.com/scholar?q=planning+paths+of+complete+coverage+of+a+unstructured+enviroment+by+a+mobile&btnG=&hl=en&as_sdt=0%2C43)
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
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.