|
Package Summary
Tags | No category tags. |
Version | 1.1.0 |
License | Apache License 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cpswarm/swarm_functions.git |
VCS Type | git |
VCS Version | noetic-devel |
Last Updated | 2023-06-01 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Micha Sende
Authors
- Micha Sende
coverage_path
This package generates an optimal path to cover a given area with a cyber physical system (CPS).
Dependencies
This package depends on the following message definitions: * geometry_msgs * nav_msgs * cpswarm_msgs
The communication between CPSs is based on the CPSwarm Communication Library.
The following packages of the swarm functions library are required:
* area_division (only if divide_area=true
)
* state_exchanger (only if divide_area=true
)
The following packages of the sensing and actuation library are required: * area_provider
Further required packages are: * roscpp * tf2
Execution
Run the launch file
roslaunch coverage_path coverage_path.launch
to launch the coverage_path
node.
The launch file can be configured with following parameters:
* id
(integer, default: 1
)
The identifier (ID) of the CPS used for name spacing in simulation.
* output
(string, default: screen
)
Whether to show the program output (screen
) or to write it to a log file (log
).
In the param
subdirectory there is the parameter file coverage_path.yaml
that allows to configure the behavior of the coverage_path
node.
Nodes
coverage_path
The coverage_path
node generates a path that allows a CPS to cover a given area. The area can be provided in three different ways, prioritized in the following order:
1. If the coordinates of a region of interest (ROI) are passed in with the action goal, its area is used. The corresponding grid map is retrieved from the area_provider
package.
2. If divide_area=true
, the map is retrieved from the area_division
package. It divides the area to be covered among multiple CPSs and provides the grid map of the area assigned to this CPS. When the swarm composition changes, the map is retrieved again and the path is regenerated.
3. Otherwise, the whole area is covered by this CPS. The grid map is retrieved from the area_provider
package.
The generated coverage path is based on a minimum spanning tree to optimally sweep the area. The path can be retrieved either as a whole (action) or waypoint after waypoint (service). In the latter case, the current waypoint is returned, based on the current position of the CPS.
Subscribed Topics
-
swarm_state
(cpswarm_msgs/ArrayOfStates) The behavior states of the other swarm members. Only subscribed ifdivide_area=true
. Once the composition of the swarm changes (members joining or leaving), the assigned area is retrieved again from thearea_division
package and the path is regenerated.
Published Topics
-
coverage_path/path
(nav_msgs/Path) The generated path for visualization purposes. Only published ifvisualize=true
. -
coverage_path/waypoint
(geometry_msgs/PointStamped) The current waypoint of the generated path for visualization purposes. Only published ifvisualize=true
. -
coverage_path/mst
(geometry_msgs/PoseArray) The minimum spanning tree of the area for visualization purposes. Only published ifvisualize=true
.
Services
-
coverage_path/waypoint
(cpswarm_msgs/GetWaypoint) Provides the current waypoint of the generated path. If the current waypoint is within the tolerance to the position provided in the request, the next waypoint is selected and returned. A new path is generated if it has not been generated by the action or the swarm composition changed anddivide_area=true
.
Services Called
-
rois/get_map
(cpswarm_msgs/GetMap) Get the grid map of the ROI to be covered including any required rotation and translation. Only called if the ROI coordinates are passed in with the action goal. -
area/get_divided_map
(cpswarm_msgs/GetMap) Get the grid map of the area assigned to this CPS including any required rotation and translation. Only called ifdivide_area=true
. -
area/get_map
(cpswarm_msgs/GetMap) Get the grid map of the area to be covered including any required rotation and translation.
Action Servers
-
coverage_path/generate
(cpswarm_msgs/PathGenerationAction) The action server implements a simple action client. The goal contains the starting point of the coverage path. If area coordinates are also passed (optional), the path is generated for the ROI matching these coordinates. If no matching ROI is found, the generation fails. If no coordinates are given, either the complete mission area or a subset (in case ofdivide_area=true
) is covered. If the path generation is successful, the result contains the complete path.
Parameters
-
~queue_size
(integer, default:1
) The size of the message queue used for publishing and subscribing to topics. -
~resolution
(real, default:1.0
) The spacing between two adjacent coverage path legs in meter. -
~visualize
(boolean, default:false
) Whether to publish the coverage path on a topic for visualization. -
~divide_area
(boolean, default:false
) Whether to divide the area among the CPSs in the swarm before generating the path. Joining or leaving swarm members will trigger regeneration of the path. -
~vertical
(boolean, default:false
) Whether the sweeping pattern is vertical or horizontal. -
~turning_points
(boolean, default:true
) Whether there are only waypoints at turning points of the path or also waypoints regularly spaced on straight line segments of the path. -
swarm_timeout
(real, default:5.0
) The time in seconds after which it is assumed that a swarm member has left the swarm if no messages have been received. Only in combination withdivide_area=true
. -
states
(string list, default[]
) Only CPSs in these states are considered part of the swarm. Only in combination withdivide_area=true
.
Code API
Changelog for package coverage_path
1.1.0 (2019-10-31)
- Initial release of coverage_path
- Contributors: Micha Sende
Wiki Tutorials
Source Tutorials
Package Dependencies
Deps | Name | |
---|---|---|
1 | catkin | |
0 | area_provider | |
1 | area_division | |
1 | state_exchanger | |
2 | roscpp | |
3 | tf2 | |
1 | actionlib | |
2 | geometry_msgs | |
2 | nav_msgs | |
1 | cpswarm_msgs |
System Dependencies
Dependant Packages
Name | Repo | Deps |
---|---|---|
swarm_functions | github-cpswarm-swarm_functions |
Launch files
- launch/coverage_path.launch
-
- id [default: 1]
- output [default: log]
Messages
Services
Plugins
Recent questions tagged coverage_path at answers.ros.org
![]() |
coverage_path package from swarm_functions repoarea_division coverage_path kinematics_exchanger state_exchanger swarm_functions target_monitor task_allocation |
|
Package Summary
Tags | No category tags. |
Version | 1.1.0 |
License | Apache License 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cpswarm/swarm_functions.git |
VCS Type | git |
VCS Version | kinetic-devel |
Last Updated | 2021-01-19 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Micha Sende
Authors
- Micha Sende
coverage_path
This package generates an optimal path to cover a given area with a cyber physical system (CPS).
Dependencies
This package depends on the following message definitions: * geometry_msgs * nav_msgs * cpswarm_msgs
The communication between CPSs is based on the CPSwarm Communication Library.
The following packages of the swarm functions library are required:
* area_division (only if divide_area=true
)
* state_exchanger
The following packages of the sensing and actuation library are required:
* area_provider (only if divide_area=false
)
Further required packages are: * roscpp * tf2
Execution
Run the launch file
roslaunch coverage_path coverage_path.launch
to launch the coverage_path
node.
The launch file can be configured with following parameters:
* id
(integer, default: 1
)
The identifier (ID) of the CPS used for name spacing in simulation.
* output
(string, default: screen
)
Whether to show the program output (screen
) or to write it to a log file (log
).
In the param
subdirectory there is the parameter file coverage_path.yaml
that allows to configure the behavior of the coverage_path
node.
Nodes
coverage_path
The coverage_path
node generates a path that allows a CPS to cover a given area. It uses the area assigned by the area_division package. The generated coverage path is based on a minimum spanning tree to optimally sweep the area. The path is regenerated when area to be covered changes. The path can be retrieved either as a whole or waypoint after waypoint. In the latter case, the current waypoint is returned, based on the current position of the CPS.
Subscribed Topics
-
area/assigned
(nav_msgs/OccupancyGrid) The area to be covered by this CPS. Only called ifdivide_area=true
. -
area/map
(nav_msgs/OccupancyGrid) The area to be covered. Only called ifdivide_area=false
.
Published Topics
-
coverage_path/path
(nav_msgs/Path) The generated path for visualization purposes. Only published if the parametervisualize
is set to true. -
coverage_path/waypoint
(geometry_msgs/PointStamped) The current waypoint of the generated path for visualization purposes. Only published if the parametervisualize
is set to true. -
coverage_path/mst
(geometry_msgs/PoseArray) The minimum spanning tree of the area for visualization purposes. Only published if the parametervisualize
is set to true.
Services
-
coverage_path/path
(nav_msgs/GetPlan) Provides the complete generated path. -
coverage_path/waypoint
(cpswarm_msgs/GetWaypoint) Provides the current waypoint of the generated path.
Services Called
-
area/get_area
(cpswarm_msgs/GetPoints) Get the points defining the polygon of the area to be covered.
Parameters
-
~loop_rate
(real, default:1.5
) The frequency in Hz at which to run the control loops. -
~queue_size
(integer, default:1
) The size of the message queue used for publishing and subscribing to topics. -
~resolution
(real, default:1.0
) The grid map underlying the path planning will be downsampled to this resolution in meter / cell. -
~visualize
(boolean, default:false
) Whether to publish the coverage path on a topic for visualization. -
~divide_area
(boolean, default:false
) Whether to divide the area among the CPSs before generating the path or to generate the path on the complete map. Iftrue
, downsampling is not available. -
~vertical
(boolean, default:false
) Whether the sweeping pattern is vertical or horizontal. -
~turning_points
(boolean, default:false
) Whether there are only waypoints at turning points of the path or also waypoints regularly spaced on straight line segments of the path.
Code API
Changelog for package coverage_path
1.1.0 (2019-10-31)
- Initial release of coverage_path
- Contributors: Micha Sende
Wiki Tutorials
Source Tutorials
Dependant Packages
Name | Repo | Deps |
---|---|---|
swarm_functions | github-cpswarm-swarm_functions |
Launch files
- launch/coverage_path.launch
-
- id [default: 1]
- output [default: log]