You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Affiliation: Nobleo Projects BV, Eindhoven, the Netherlands**
27
36
28
-
The Full Coverage Path Planner package has been tested under [ROS]Melodic and Ubuntu 18.04.
37
+
The Modified package has been tested under [ROS]Noetic and Ubuntu 20.04.
29
38
30
39
## Installation
31
40
@@ -57,8 +66,8 @@ All tests can be run using:
57
66
#### test_common
58
67
Unit test that checks the basic functions used by the repository
59
68
60
-
#### test_spiral_stc
61
-
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.
69
+
#### test_boustrophedon_stc
70
+
Unit test that checks the basis boustrophedon 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.
62
71
63
72
#### test_full_coverage_path_planner.test
64
73
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.
@@ -131,8 +140,8 @@ The CoverageProgressNode keeps track of coverage progress. It does this by perio
131
140
132
141
133
142
## Plugins
134
-
### full_coverage_path_planner/SpiralSTC
135
-
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.
143
+
### full_coverage_path_planner/BoustrophedonSTC
144
+
For use in move_base(\_flex) as "base_global_planner"="full_coverage_path_planner/BoustrophedonSTC". It uses global_cost_map and global_costmap/robot_radius.
136
145
137
146
#### Parameters
138
147
@@ -142,18 +151,10 @@ For use in move_base(\_flex) as "base_global_planner"="full_coverage_path_planne
142
151
143
152
## References
144
153
145
-
[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.
146
-
147
-
## Bugs & Feature Requests
148
-
149
-
Please report bugs and request features using the [Issue Tracker](https://github.com/nobleo/full_coverage_path_planner/issues).
150
-
151
-
152
-
[ROS]: http://www.ros.org
153
-
[rviz]: http://wiki.ros.org/rviz
154
-
[MBF]: http://wiki.ros.org/move_base_flex
154
+
[1] Choset, Howie, and Philippe Pignon. "Coverage path planning: The boustrophedon cellular decomposition." Field and service robotics. Springer, London, 1998.
155
+
[2] Zelinsky, Alexander, et al. "Planning paths of complete coverage of an unstructured environment by a mobile robot." Proceedings of international conference on advanced robotics. Vol. 13. 1993.
Plans a path that covers all accessible points in a costmap by using Spiral-STC.
5
-
Spiral-STC works by following the walls and spiraling inwards until it cannot go further.
6
-
Then it uses A* to go back outside of the current spiral and then spirals again.
4
+
Plans a path that covers all accessible points in a costmap by using Boustrophedon-STC (Spanning Tree Coverage).
5
+
In essence, the robot moves forward until an obstacle or visited node is met, then turns right or left (making a boustrophedon pattern)
6
+
When stuck while completing a boustrophedon pattern, use A* to get out again and start a new boustrophedon, until A* can't find a path to uncovered cells
int dx, dy, x2, y2, i, nRows = grid.size(), nCols = grid[0].size();
@@ -74,7 +74,7 @@ std::list<gridNode_t> SpiralSTC::spiral(std::vector<std::vector<bool> > const& g
74
74
dy = -1;
75
75
break;
76
76
default:
77
-
ROS_ERROR("Full Coverage Path Planner: NO INITIAL ROBOT DIRECTION CALCULATED. This is a logic error that must be fixed by editing spiral_stc.cpp. Will travel east for now.");
77
+
ROS_ERROR("Full Coverage Path Planner: NO INITIAL ROBOT DIRECTION CALCULATED. This is a logic error that must be fixed by editing boustrophedon_stc.cpp. Will travel east for now.");
78
78
robot_dir = east;
79
79
dx = +1;
80
80
dy = 0;
@@ -195,7 +195,7 @@ std::list<gridNode_t> SpiralSTC::spiral(std::vector<std::vector<bool> > const& g
0 commit comments