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 performs random walk coverage with an unmanned ground vehicle (UGV).

  • 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_behaviors.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 ugv_random_walk ugv_random_walk.launch

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



The ugv_random_walk performs coverage using the random walk algorithm. The random walk is a mathematical movement model, where an agent moves straight for a specific distance. Then, it changes its direction randomly into a direction that is clear of obstacles and moves straight again. If it arrives at the environment boundary, it reflects to continue its walk. When the parameter single_target is set to true, the UGV succeeds once a target has been found and returns the target ID and position.

Action Goal

ugv_coverage/goal (cpswarm_msgs/CoverageGoal)
  • A goal that starts the random direction coverage behavior.

Action Result

ugv_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

obstacle_detection/get_clear_sector (cpswarm_msgs/GetSector)
  • Get the circular sector that is clear of obstacles.
area/closest_bound (cpswarm_msgs/ClosestBound)
  • Get the coordinates of the closest boundary in order to reflect from it.


~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.
~step_size_max (real, default: 3.0)
  • The distance in meter that a UGV travels in one step.
/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: ugv_random_walk (last edited 2020-01-15 14:29:34 by MichaSende)