PTracking

PTracking is a C++ library designed for performing real-time multi-object tracking in a distributed fashion. The novel method is based on Distributed Multi-Clustered Particle Filtering and the algorithm is divided into two phases, namely a local estimation phase and a global estimation phase. Each agent performs both the local and global computation, sharing the obtained results in order to achieve a better representation of the current belief-state.

Topics

  • Multi-Agent Systems
  • Distributed Systems
  • Distributed Multi-Object Tracking
  • Particle Filtering
  • Activity Forecasting

Scientific Documentation

A detailed description of the PTracking method can be found in one of the following papers:

PTracking: distributed multi-agent multi-object tracking through multi-clustered particle filtering [Preprint]
F. Previtali, L. Iocchi
IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems

Counterfactual reasoning about intent for interactive navigation in dynamic environments [Preprint]
A. Bordallo Micó, F. Previtali, N. Nardelli, S. Ramamoorthy
IEEE/RSJ International Conference on Intelligent Robots and Systems

Disambiguating localization symmetry through a multi-clustered particle filtering [Preprint]
F. Previtali, G. Gemignani, L. Iocchi, D. Nardi
IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems

Please, cite the first or the second paper if you use PTracking.

Getting PTracking

PTracking is provided without any warranty about its usability. It is for educational purposes and should be regarded as such.

PTracking is currently available in a private bitbucket repository (here). A request for getting access is required: previtali@dis.uniroma1.it.

Requirements

PTracking requires the following packages to build:

  • build-essential
  • g++
  • cmake
  • libxml2
  • boost
  • opencv

while this requirement is optional to build PTaLer and PViewer:

  • gnuplot

while this requirement is optional to build the Kinect section of PTaLer:

  • libfreenect (https://github.com/fabioprev/libfreenect.git – a request for getting access is required: previtali@dis.uniroma1.it)

while this requirement is optional to build the Xtion section of PTaLer:

  • OpenNI2

while these requirements are mandatory if and only if, you are running a 64-bit Linux distribution but the library have to be compiled for a 32-bit Linux distribution:

  • libc6-dev-i386
  • libgmp3-dev

On Xubuntu (Ubuntu) 14.04 LTS (kernel 3.13.0-37), these dependencies are resolved by installing the following packages:

  • build-essential
  • cmake
  • libxml2
  • libxml2-dev
  • libboost1.54-all-dev
  • libopencv-dev
  • libopenni2-dev (optional)
  • gnuplot (optional)
  • gnuplot-x11 (optional)
  • libc6-dev-i386 (32-bit Linux distribution)
  • libgmp3-dev (32-bit Linux distribution)

and building the following ones (if needed):

  • libfreenect
  • Imbs

Maybe to install the OpenNI2 library, you need to add these lines at the end of the /etc/apt/sources.list file:

## OpenNI2
deb http://ppa.launchpad.net/v-launchpad-jochen-sprickerhof-de/pcl/ubuntu trusty main
deb-src http://ppa.launchpad.net/v-launchpad-jochen-sprickerhof-de/pcl/ubuntu trusty main

and then typing in a terminal:

sudo apt-get update

How to build

The only development platform is Linux. We recommend a so-called out of source build which can be achieved by the following command sequence:

  • mkdir build
  • cd build
  • cmake ../src
  • make -j<number-of-cores+1>

Installation

Once the build phase has been successfully, the library have to be installed so that it can be linked in other projects. This is achieved by the following command sequence:

  • cd build
  • sudo make install

After the installation the header files have been copied to /usr/local/include/PTracking, while the libptracking.so shared object has been copied to /usr/local/lib/PTracking.

The executables:

  • PTaLer
  • PTracker
  • PViewer
  • PVisualizer

have been copied to /usr/local/bin.

The last step before correctly using the library is to logout because the file ~/.profile has been modified by the installation.

Usage

Before executing any program, you need to verify in the parameters.cfg file whether the filtering parameters are suitable for the chosen environment.

  • You can find an example on how to use PTaLer in the script directory. To execute PTaLer you need to have either a set of images or a live sensor (e.g., Kinect or Xtion) or an observation file and type in to a terminal one of the following command:

    • PTaLer <problem-file> <frame-rate> -img <first-image-file>
                  [ -loadbg <background-file> -calib <calibration-directory>
                  -agentId <agent-number> -pause ]

    • PTaLer <problem-file> <frame-rate> -s <sensor-type>
                  [ -loadbg <background-file> -calib <calibration-directory>
                  -agentId <agent-number> -pause ]

    • PTaLer <problem-file> <frame-rate> -obs <observation-file>
  • To execute PTracker you just need to have an observation file and type in to a terminal the following command:

    • PTracker <observation-file>
  • To visualize in Gnuplot the tracking data generated by PTaLer or PTracker type in to another terminal:

    • PViewer

Results

PTracking has been tested in multiple scenarios such as:

About

PTracking has been written by Fabio Previtali.

Comments are closed.