Package Summary

Tags No category tags.
Version 1.3.0
License Apache License 2.0
Build type CATKIN

Repository Summary

Checkout URI
VCS Type git
VCS Version noetic-devel
Last Updated 2022-04-06
CI status No Continuous Integration
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

A package that tracks a target with an unmanned aerial vehicle (UAV) using different types of algorithms.

Additional Links


  • Micha Sende


  • Micha Sende


Build Status

This package tracks a target with an unmanned aerial vehicle (UAV) using different types of algorithms. It is part of the swarm behaviors library.


This package depends on the following message definitions: * geometry_msgs * cpswarm_msgs

The following library packages of the swarm behaviors library are required: * swarm_behaviors_flocking * swarm_behaviors_position * swarm_behaviors_velocity

The following packages of the swarm functions library are required: * target_monitor

Further required packages are: * roscpp * actionlib * random_numbers


Run the launch file

roslaunch uav_tracking uav_tracking.launch

to launch the uav_tracking 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). * behavior (string) The behavior to use for tracking. See below for more details.

In the param subdirectory there is the parameter file uav_tracking.yaml that allows to configure the behavior of the uav_tracking node.



The uav_tracking lets a swarm of UAVs track a target. The position of the target is updated by the target monitor from the swarm functions library. It provides an action server that has three outcomes: succeeded, preempted, or aborted. When the target is lost, i.e., the target is not in the camera field of view anymore, the tracking aborts. When the target is done, i.e., handled by another CPS, the tracking succeeds. If the parameters max_trackers and min_trackers are set according to

0 <= min_trackers <= max_trackers
0 < max_trackers

the tracking is preempted with a certain probability

p = min(1, 0.5 ⋅ log(trackers / min_trackers) / log(1.0 + (max_trackers - min_trackers) / (2 ⋅ min_trackers)))

where trackers is the number of UAVs currently tracking the same target. The tracking is performed either individually or cooperatively by employing one of the following algorithms: * Flocking: The UAVs create a formation while tracking the target. * Simple: A single UAV moves to the position straight over the target.

Action Goal

  • uav_tracking/goal (cpswarm_msgs/TrackingGoal) A goal that starts the tracking behavior. It contains the ID of the target to track and the altitude at which to operate.

Subscribed Topics


  • ~loop_rate (real, default: 5.0) 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.
  • ~max_trackers (integer, default: 0) The maximum number of UAVs that should be tracking the same target simultaneously. 0 disables check.
  • ~min_trackers (integer, default: 0) The number of UAVs tracking the same target above which a UAV stops tracking with a certain probability.
  • /rng_seed (integer, default: 0) The seed used for random number generation. In the default case, a random seed is generated.

Code API

uav_tracking package code API documentation


Changelog for package uav_tracking


  • update api docs
  • minor update to readmes
  • update uav_flocking documentation
  • convert into stack, update documentation
  • update flocking to use new cpswarm service files
  • return state aborted once coverage finishes
  • use coverage action with stamped pose
  • correctly handle state of behavior algorithms
  • uav flocking: stop when behavior exits
  • change behavior library objects to non-pointer
  • wait for service
  • removed obsolete parameters from launch files
  • refactor behavior library structure
  • replaced boustrophedon path by coverage path in swarm function library
  • removed unneeded libraries, remove dependencies between stacks
  • updated documentation
  • uav_flocking: fixed computation of repulsive force of area boundary
  • Initial commit
  • Contributors: Micha Sende

1.3.0 (2020-01-03)

1.2.0 (2019-12-29)

  • Fixed: Handling of target rescued event
  • Changed: Refactor library structure
  • Changed: Check if movement was successful
  • Changed: Targets handled by swarm functions library
  • Fixed: Correctly handle state of behavior algorithm
  • Fixed: Force C++11
  • Contributors: Micha Sende

1.1.0 (2018-11-12)

  • Contributors: Micha Sende

1.0.0 (2018-10-30)

  • Initial release of uav_simple_tracking
  • Contributors: Micha Sende

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files


No message files found.


No service files found


No plugins found.

Recent questions tagged uav_tracking at