PbDlib is a collection of source codes for robot programming by demonstration (learning from demonstration). It includes a varied set of functionalities at the crossroad of statistical learning, dynamical systems, optimal control and Riemannian manifold optimization. It is available in the following languages:

PbDlib can be used in applications requiring task adaptation, human-robot skill transfer, safe controllers based on minimal intervention principle, as well as for probabilistic motion analysis and synthesis in multiple coordinate systems.

Three distinct versions are maintained so that they can be used independently in Matlab, C++ or Python with independent git repositories. Currently, the Matlab version has the most functionalities. The C++ and Python versions are better suited for integration in robot applications. Each git page provides detailed instructions and list of examples.

PbDlib is currently maintained by the Idiap Research Institute, with contributions from the Italian Institute of Technology.

Contact: Sylvain Calinon (sylvain.calinon@idiap.ch)


Matlab version

Git repository:


Quick test:

  > git clone https://gitlab.idiap.ch:rli/pbdlib-matlab.git
  > sudo apt-get install octave   (optional)
  > octave   (or run matlab)
  > cd pbdlib-matlab
  > demo_GMM01   (GMM example)

Most examples of the Matlab version are compatible with the GNU Octave open source software.


C++ version

Git repositories:

https://gitlab.idiap.ch/rli/pbdlib/ (C++ library, with command line examples)
https://gitlab.idiap.ch/rli/pbdlib_gui/ (GUI frontend to C++ library, optional but contains additional examples)

Quick test:

(or see full installation instructions in the git repository)
  > git clone https://gitlab.idiap.ch:rli/pbdlib.git
  > sudo apt-get install g++-4.9 cmake liblapack3 liblapack-dev libarmadillo6 libarmadillo-dev
  > cd pbdlib
  > mkdir build
  > cd build
  > cmake ..
  > make
  > sudo make install   (optional, required for GUI)
  > cd examples
  > ./test_gmm   (GMM example)

Quick GUI test:

(or see full installation instructions in the git repository)
  > git clone https://gitlab.idiap.ch:rli/pbdlib_gui.git
  > sudo apt-get install g++-4.9 cmake libepoxy-dev libglfw3-dev
  > cd pbdlib_gui
  > mkdir build
  > cd build
  > cmake ..
  > make
  > ./demo_online_gmm   (GMM example)

PbDlib can be built with minimal dependency to external libraries (to facilitate its inclusion in other softwares).
PbDlib_GUI is an independent and optional graphical user interface to PbDlib containing additional interactive examples.


Python version

Git repository:




Quick test:

  > export GIT_SSL_NO_VERIFY=1   (optional)
  > git clone https://gitlab.martijnzeestraten.nl/martijn/riepybdlib/
  > sudo apt-get install python3-numpy python3-scipy python3-matplotlib ipython3
  > cd riepybdlib
  > sudo python3 setup.py install

The Python version is currently specialized in Riemannian manifold optimization for robot learning from demonstration applications. It is maintained by Martijn Zeestraten at the Italian Institute of Technology.

Contact: Martijn Zeestraten (martijn.zeestraten@iit.it)