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 differential geometry. 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:


Quick test:

(or see full installation instructions in the git repository)
  > git clone https://gitlab.idiap.ch:rli/pbdlib-cpp.git
  > sudo apt-get install g++-4.9 cmake liblapack3 liblapack-dev libarmadillo6 libarmadillo-dev libglfw3-dev
  > cd pbdlib-cpp
  > 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).


Python version

Git repository:




Quick test:

  > 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

This Python version focuses on Riemannian manifold algorithms for robot learning from demonstration applications.
Contact: Martijn Zeestraten (https://www.martijnzeestraten.nl)