Only released in EOL distros:  

swarm_behaviors: swarm_behaviors_position | swarm_behaviors_velocity | uav_local_coverage | uav_optimal_coverage | uav_random_direction | uav_simple_tracking | ugv_random_walk

Package Summary

A package that performs random direction coverage with an unmanned aerial vehicle (UAV).

  • 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 (branch: kinetic-devel)


This package depends on the following message definitions:

The following library packages of the swarm behaviors library are required:

The following packages of the swarm functions library are required:

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

  • area_provider
  • obstacle_detection

Further required packages are:


Run the launch file

roslaunch uav_random_direction uav_random_direction.launch

to launch the uav_random_direction 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 uav_random_direction.yaml that allows to configure the behavior of the uav_random_direction node.



The uav_random_direction performs coverage using the random direction algorithm. The random direction is a mathematical movement model, where an agent moves straight forward until it reaches an obstacle or the environment boundary. There, it changes its direction randomly into a direction that is clear of obstacles. When the parameter single_target is set to true, the UAV succeeds once a target has been found and returns the target ID and position.

Action Goal

uav_coverage/goal (cpswarm_msgs/CoverageGoal)
  • A goal that starts the random direction coverage behavior. It contains the altitude at which to operate.

Action Result

uav_coverage/result (cpswarm_msgs/CoverageResult)
  • ID and position of the target that has been found.

Subscribed Topics

target_found (cpswarm_msgs/TargetPositionEvent)
  • Position and ID of a target detected by the target monitor. Only subscribed when single_target is set to true.

Services Called

area/get_area (cpswarm_msgs/GetPoints)
  • Get the area polygon.
obstacle_detection/get_clear_sector (cpswarm_msgs/GetSector)
  • Get the circular sector that is clear of obstacles.


~loop_rate (real, default: 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.
~single_target (boolean, default: true)
  • Whether the algorithm will succeed / terminate once a target has been found.
~margin (real, default: 0.5)
  • The distance in meter to keep to the environment boundary.
/rng_seed (integer, default: 0)
  • The seed used for random number generation. In the default case, a random seed is generated.


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

Wiki: uav_random_direction (last edited 2020-01-23 18:25:44 by MichaSende)