Skip to content
Martin Günther edited this page May 31, 2016 · 50 revisions

Pipol Tracker is a C++ multi-target and multi-detector people tracker for mobile robots. It is based on particle filtering, launching such a particle filter for each new target it tracks. As inputs, it requires an odometry source and at least a leg detector (usually come from laser scans), but it is currently ready to fuse detections from a monocular 2D body detector, a visual face detector and a depth image 3D body detector. The package is fully integrated with ROS-Hydro/Indigo and its catkin build system.


Required library dependencies:

How to get and build the code

Move to your ROS CATKIN Workspace. From there, execute:

$ source devel/setup.bash
$ cd src
$ git clone
$ cd ..
$ catkin_make --only-pkg-with-deps pipol_tracker
$ roscd pipol_tracker/launch
$ roslauch LAUNCH_FILE_NAME.launch

Downloading a specific tag

After cloning as listed above:

$ cd pipol_tracker
$ git tag -l  //that lists the tags
$ git checkout [tag name]

Output Messages

[MarkerArray.msg] (

A set of markers very useful for debugging purposes, such as particles, leg and body detections, and targets coloured according their status.

[personArray.msg] (

The set of targets/people being tracked. It is a message composed by a ROS standard [Header] ( and by an array of [person] ( type. Each person holds the following:

  • an ID, which should be the same for a given person (that is the main goal and difficulty!)
  • a status, which indicates a friendship degree between the target and the robot.
  • (x,y), a 2D position, expressed in robot-centered coordinates (base_link)
  • (vx,vy), a 2D velocity, expressed in robot-centered coordinates (base_link)
  • a 4x4 covariance matrix, expressing the uncertainty of the above 4 estimated values.

Learn More

Click [here] ( to learn more about how the tracker works.


You can report bugs or pose questions by mailing to devel [AT]

Clone this wiki locally
You can’t perform that action at this time.