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

Package Summary

A package that manages information about targets in a swarm of cyber physical systems (CPSs).

  • Maintainer status: developed
  • Maintainer: Micha Sende <sende AT lakeside-labs DOT com>
  • Author: Micha Sende <sende AT lakeside-labs DOT com>
  • License: Apache License 2.0
  • Source: git https://github.com/cpswarm/swarm_functions.git (branch: kinetic-devel)


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:

  • task_allocation

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

  • *_pos_provider

Further required packages are:


Run the launch file

roslaunch target_monitor target_monitor.launch

to launch the target_monitor 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 are two parameter files target_monitor.yaml and targets.yaml that allows to configure the behavior of the target_monitor node. The targets.yaml contains the coordinates of the simulated targets. It is only used when the parameter simulation is set to true. They are given as two list parameters where the list index is the ID of the target.



The target_monitor node keeps track of targets and their positions that are being detected by CPSs in the swarm. They are typically detected by a camera. Each target has a unique numeric ID assigned to it which should be a positive integer. Targets that are detected locally by this CPS are reported through the target_tracking topic. It contains the offset between the current position and the target position in form of a transform. This information can either originate from another node or, if simulation is set to true, from this node. In the latter case, the target detection is triggered according to the current position of the CPS and the coordinates given in the targets.yaml parameter file. Targets that are being managed have a certain state associated to them. This is depicted by the following diagram where the transitions are labled with incoming event / outgoing event: target_fsm.png The state of the target changes depending on local and remote events that are exchanged between CPSs through the CPSwarm Communication Library.

Action Goal

cmd/target_done/goal (cpswarm_msgs/TargetGoal)
  • Sets the state of a target to done. This invokes the target_done event to be published.

Subscribed Topics

pos_provider/pose (geometry_msgs/PoseStamped)
  • The current position of this CPS.
target_tracking (cpswarm_msgs/TargetTracking)
  • The offset of the target as reported by the camera.
cps_selected (cpswarm_msgs/TaskAllocatedEvent)
  • The event of a target being assigned by this CPS.
target_done (cpswarm_msgs/TargetPositionEvent)
  • The event of a target being completed by this CPS.
bridge/events/target_found (cpswarm_msgs/TargetPositionEvent) bridge/events/target_update (cpswarm_msgs/TargetPositionEvent) bridge/events/cps_selected (cpswarm_msgs/TaskAllocatedEvent) bridge/events/target_lost (cpswarm_msgs/TargetPositionEvent) bridge/events/target_done (cpswarm_msgs/TargetPositionEvent) bridge/uuid (cpswarm_msgs/TargetPositionEvent)
  • The UUID of this CPS.

Published Topics

target_tracking (cpswarm_msgs/TargetTracking)
  • The offset of the target that is simulated by this node. Messages are published if simulation is set to true and the distance between the CPS and a simulated target is less than or equal to fov.
target_found (cpswarm_msgs/TargetPositionEvent) target_update (cpswarm_msgs/TargetPositionEvent) target_lost (cpswarm_msgs/TargetPositionEvent) target_done (cpswarm_msgs/TargetPositionEvent)


~loop_rate (real, default: 1.5)
  • The frequency in Hz at which to run the control loops.
~queue_size (integer, default: 10)
  • The size of the message queue used for publishing and subscribing to topics.
~tracking_timeout (real, default: 5.0)
  • The time in seconds after which a target transitions into the state lost when no target information is received.
~target_tolerance (real, default: 0.1)
  • The path of the smach state machine whose state shall be exchanged.
~fov (real, default: 0.5)
  • Range of the target tracking camera in meter. It is used to simulate target detection. Targets within this distance are detected by the CPS.
~simulation (boolean, default: false)
  • Whether the targets are detected virtually by position or actually by the camera tracking topic.
~targets_x (real list, default: [])
  • The x-coordinates of the simulated targets.
~targets_y (real list, default: [])
  • The y-coordinates of the simulated targets.


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

Wiki: target_monitor (last edited 2019-11-05 21:40:10 by MichaSende)