PbDlib

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 for the following languages:

PbDlib can for example 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 that can be used independently in Matlab, C++ or Python, using 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:

https://gitlab.idiap.ch/rli/pbdlib-matlab/

Quick test:

  > export GIT_SSL_NO_VERIFY=1   (optional)
  > 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 repository:

https://gitlab.idiap.ch/rli/pbdlib/

Quick test:

  > export GIT_SSL_NO_VERIFY=1   (optional)
  > git clone https://gitlab.idiap.ch:rli/pbdlib.git
  > sudo apt-get install cmake liblapack3 liblapack-dev libarmadillo4 libarmadillo-dev
  > cd pbdlib
  > mkdir build
  > cd build
  > cmake ..
  > make
  > sudo make install   (optional, required for GUI)
  > cd examples
  > ./test_gmm   (GMM example)

The C++ version is built in the form of a library with minimal dependency to external libraries (to facilitate its inclusion in other softwares).


GUI frontend to C++ version (optional)


Git repository:

https://gitlab.idiap.ch/rli/pbdlib_gui/

Quick test:

  > export GIT_SSL_NO_VERIFY=1   (optional)
  > git clone https://gitlab.idiap.ch:rli/pbdlib_gui.git
  > sudo apt-get install cmake libglfw3-dev
  > cd pbdlib_gui
  > mkdir build
  > cd build
  > cmake ..
  > make
  > ./pbdlib_gui

This C++ program is an independent and optional graphical user interface to pbdlib that can be used for visualization purposes.


Python version


Git repository:

https://gitlab.martijnzeestraten.nl/martijn/riepybdlib/

Tutorial:

http://ww.martijnzeestraten.nl/media/html/riepybdlib_tutorial.html

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)