swarm_functions: area_division | coverage_path | kinematics_exchanger | state_exchanger | target_monitor | task_allocation

Package Summary

A package that generates an optimal path to cover a given area with a cyber physical system (CPS).


This package depends on the following message definitions:

The communication between CPSs is based on the CPSwarm Communication Library.

The following packages of the swarm functions library are required:

  • area_division
  • state_exchanger

The following packages of the sensing and actuation library are required:

  • *_pos_provider

Further required packages are:


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.



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 CPSs with the same behavior state join or leave the swarm. A regeneration of the path also triggers a new area division among the CPSs. 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

pos_provider/pose (geometry_msgs/PoseStamped)
  • The current position of this CPS.
state (cpswarm_msgs/StateEvent)
  • The current behavior states of other CPSs in the swarm.
swarm_state (cpswarm_msgs/ArrayOfStates)

Published Topics

coverage_path/path (nav_msgs/Path)
  • The generated path for visualization purposes. Only published if the parameter visualize is set to true.
coverage_path/waypoint (geometry_msgs/PointStamped)
  • The current waypoint of the generated path for visualization purposes. Only published if the parameter visualize is set to true.


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/assigned (nav_msgs/GetMap)
  • Get the map of the area assigned to this CPS.


~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.
~swarm_timeout (real, default: 5.0)
  • Time in seconds after which it is assumed that a swarm member has left the swarm if no position update has been received.
~visualize (boolean, default: false)
  • Whether to publish the coverage path on a topic for visualization.


This work is supported by the European Commission through the CPSwarm H2020 project under grant no. 731946.

Wiki: coverage_path (last edited 2019-11-05 15:45:10 by MichaSende)