Skip to content
Snippets Groups Projects
user avatar
scalinon authored
65b56cf3
History
Name Last commit Last update
demos
images
COPYING
README.md

pbdlib-matlab

PbDlib is a collection of source codes for robot programming by demonstration (learning from demonstration). It includes various functionalities at the crossroad of statistical learning, dynamical systems, optimal control and Riemannian geometry.

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.

The codes are compatible with both Matlab and GNU Octave. Other versions of the library in Python and C++ are also available at http://www.idiap.ch/software/pbdlib/ (currently, the Matlab version has the most functionalities).

Usage

Examples starting with demo_ can be run as examples. The corresponding publications related to these examples are listed below.

List of examples

All the examples are located in the demos folder, and the functions are located in the m_fcts folder.

Filename Ref. Description
benchmark/benchmark_DS_GP_GMM01.m 1(#ref-1) Benchmark of task-parameterized model based on GPR, with trajectory model (GMM encoding)
benchmark/benchmark_DS_GP_raw01.m 1(#ref-1) Benchmark of task-parameterized model based on GPR, with raw trajectory
benchmark/benchmark_DS_PGMM01.m 1(#ref-1) Benchmark of task-parameterized model based on parametric Gaussian mixture model
benchmark/benchmark_DS_TP_GMM01.m 1(#ref-1) Benchmark of task-parameterized Gaussian mixture model (TP-GMM)
benchmark/benchmark_DS_TP_GP01.m 1(#ref-1) Benchmark of task-parameterized Gaussian process (nonparametric task-parameterized method)
benchmark/benchmark_DS_TP_LWR01.m 1(#ref-1) Benchmark of task-parameterized locally weighted regression (nonparametric task-parameterized method)
benchmark/benchmark_DS_TP_MFA01.m 1(#ref-1) Benchmark of task-parameterized mixture of factor analyzers (TP-MFA)
benchmark/benchmark_DS_TP_trajGMM01.m 1(#ref-1) Benchmark of task-parameterized Gaussian mixture model (TP-GMM)
demo_affineTransform01.m 1(#ref-1) Miscellaneous affine transformations of raw data as pre-processing step to train a task-parameterized model
demo_AR01.m 2(#ref-2) Multivariate autoregressive (AR) model parameters estimation with least-squares
demo_AR_HSMM01.m 2(#ref-2) Multivariate autoregressive (AR) model implemented as a hidden semi-Markov model with lognormal duration model
demo_Bezier01.m 5(#ref-5) Bezier curves as a superposition of Bernstein polynomials
demo_Bezier02.m 5(#ref-5) Bezier curves fitting
demo_Bezier_illustr01.m 5(#ref-5) Fitting Bezier curves of different degrees
demo_Bezier_illustr02.m 5(#ref-5) Illustration of linear, quadratic and cubic Bezier curves
demo_covariance01.m 10(#ref-10) Covariance computation in matrix form
demo_DMP01.m 2(#ref-2) Dynamic movement primitive (DMP) encoding with radial basis functions
demo_DMP02.m 2(#ref-2) Generalization of dynamic movement primitive (DMP) with polynomial fitting using radial basis functions
demo_DMP_batchLQR01.m 2(#ref-2) Emulation of DMP with a spring system controlled by batch LQR
demo_DMP_GMR01.m 2(#ref-2) Emulation of DMP by using a GMM with diagonal covariance matrix, and retrieval computed with GMR
demo_DMP_GMR02.m 2(#ref-2) Same as demo_DMP_GMR01.m with full covariance
demo_DMP_GMR03.m 2(#ref-2) Same as demo_DMP_GMR02.m with GMR used to regenerate the path of a spring-damper system, resulting in a nonlinear force profile
demo_DMP_GMR04.m 2(#ref-2) Same as demo_DMP_GMR03.m by using the task-parameterized model formalism
demo_DMP_GMR_illustr01.m 2(#ref-2) Illustration of DMP with GMR to regenerate the nonlinear force profile
demo_DMP_GMR_LQR01.m 2(#ref-2) Same example as demo_DMP_GMR04.m, but with LQR
demo_DPmeans_online01.m 7(#ref-7) Online clustering with DP-Means algorithm
demo_DPmeans_online02.m 7(#ref-7) Online clustering with DP-Means algorithm, with stochastic samples
demo_DTW01.m 10(#ref-10) Trajectory realignment through dynamic time warping (DTW)
demo_ergodicControl_1D01.m 5(#ref-5) 1D ergodic control with spectral multiscale coverage (SMC) algorithm
demo_ergodicControl_2D01.m 5(#ref-5) 2D ergodic control with spectral multiscale coverage (SMC) algorithm
demo_ergodicControl_3D01.m 5(#ref-5) 3D ergodic control with spectral multiscale coverage (SMC) algorithm
demo_ergodicControl_nD01.m 5(#ref-5) nD ergodic control with spectral multiscale coverage (SMC) algorithm
demo_Gaussian01.m 5(#ref-5) Use of Chi-square values to determine the percentage of data within the contour of a multivariate normal distribution
demo_Gaussian02.m 5(#ref-5) Conditional probability with a multivariate normal distribution
demo_Gaussian03.m 5(#ref-5) Gaussian conditioning with uncertain inputs
demo_Gaussian04.m 5(#ref-5) Gaussian estimate of a GMM with the law of total covariance
demo_Gaussian05.m 5(#ref-5) Stochastic sampling with multivariate Gaussian distribution
demo_Gaussian06.m 5(#ref-5) Gaussian reformulated as zero-centered Gaussian with augmented covariance
demo_Gaussian_illustr01.m 5(#ref-5) Illustration of Gaussian conditioning with uncertain inputs
demo_GaussProd4nullspace_2D01.m 10(#ref-10) 2D illustration of using a product of Gaussians to compute the hierarchy of two tasks
demo_GaussProd4nullspace_3D01.m 10(#ref-10) 3D illustration of using a product of Gaussians to compute the hierarchy of three tasks
demo_GaussProd_interp_illustr01.m 10(#ref-10) Smooth transition between hierarchy constraints by relying on SPD geodesics
demo_GMM01.m 5(#ref-5) Gaussian mixture model (GMM) parameters estimation
demo_GMM02.m 5(#ref-5) GMM with different covariance structures
demo_GMM_augmSigma01.m 5(#ref-5) Gaussian mixture model (GMM) parameters estimation with zero means and augmented covariances
demo_GMM_EM01.m 5(#ref-5) Problem of local optima in EM for GMM parameters estimation
demo_GMM_HDDC01.m 5(#ref-5) High Dimensional Data Clustering (HDDC, or HD-GMM) model from Bouveyron (2007)
demo_GMM_logGMM01.m 5(#ref-5) Multivariate lognormal mixture model parameters estimation with EM algorithm
demo_GMM_logNormal01.m 5(#ref-5) Conditional probability with multivariate lognormal distribution
demo_GMM_MFA01.m 5(#ref-5) Mixture of factor analyzers (MFA)
demo_GMM_MPPCA01.m 5(#ref-5) Mixture of probabilistic principal component analyzers (MPPCA)
demo_GMM_profileGMM01.m 5(#ref-5) Univariate velocity profile fitting with a GMM and a weighted EM algorithm
demo_GMM_profileGMM_multivariate01.m 5(#ref-5) Multivariate velocity profile fitting with a GMM and a weighted EM algorithm
demo_GMM_profileLogGMM01.m 5(#ref-5) Univariate velocity profile fitting with a lognormal mixture model (GMM) and a weighted EM algorithm
demo_GMM_profileLogGMM_multivariate01.m 5(#ref-5) Multivariate velocity profile fitting with a GMM and a weighted EM algorithm
demo_GMM_semiTied01.m 5(#ref-5) Semi-tied Gaussian Mixture Model by tying the covariance matrices of a GMM with a set of common basis vectors
demo_GMR01.m 5(#ref-5) Gaussian mixture model (GMM) and time-based Gaussian mixture regression (GMR) used for reproduction
demo_GMR02.m 5(#ref-5) GMR computed with precision matrices instead of covariances
demo_GMR03.m 5(#ref-5) Chain rule with Gaussian conditioning
demo_GMR_3Dviz01.m 5(#ref-5) 3D visualization of a Gaussian mixture model (GMM) with time-based Gaussian mixture regression (GMR) used for reproduction
demo_GMR_augmSigma01.m 5(#ref-5) GMR with Gaussians reparamterized to have zero means and augmented covariances
demo_GMR_DS01.m 2(#ref-2) Gaussian mixture model with GMR and dynamical systems used for reproduction, with decay variable used as input (as in DMP)
demo_GMR_polyFit01.m 5(#ref-5) Polynomial fitting with multivariate GMR
demo_GMR_probTraj01.m 5(#ref-5) Probabilistic trajectory generation with GMR obtained from normally distributed GMM centers
demo_GMR_SEDS01.m 2(#ref-2) Continuous autonomous dynamical system, with GMR using a constrained optimization similar to the SEDS approach
demo_GMR_SEDS_augmSigma01.m 2(#ref-2) Same as demo_GMR_SEDS01.m with an augmented state-space encoding
demo_GMR_SEDS_discrete01.m 2(#ref-2) Same as demo_GMR_SEDS01.m but with discrete autonomous dynamical system
demo_GMR_SEDS_discrete_augmSigma01.m 2(#ref-2) Same as demo_GMR_SEDS_augmSigma01.m but with discrete autonomous dynamical system
demo_GMR_wrapped01.m 5(#ref-5) Wrapped GMM and wrapped GMR in 2D (with only the first dimension being periodic)
demo_GPR01.m 2(#ref-2) Gaussian process regression (GPR)
demo_GPR02.m 2(#ref-2) GPR with stochastic samples from the prior and the posterior
demo_GPR03.m 2(#ref-2) GPR with periodic kernel function
demo_GPR04.m 2(#ref-2) GPR with Matern kernel function
demo_GPR05.m 2(#ref-2) GPR for motion generation with new targets
demo_GPR_anim01.m 2(#ref-2) Gaussian process regression (GPR) with prior distribution formed so that it can be smoothly animated for illustration purpose
demo_GPR_closedShape01.m 2(#ref-2) Closed shape modeling with Gaussian process regression (GPR)
demo_GPR_closedShape02.m 2(#ref-2) Gaussian process implicit surface (GPIS) representation with thin-plate covariance function in GPR
demo_GPR_GMR_illustr01.m 2(#ref-2) Illustration of the different notions of variance for GPR and GMR
demo_GPR_linTrend01.m 2(#ref-2) Gaussian process regression (GPR) with linear trend
demo_GPR_paramOptim01.m 2(#ref-2) GPR with optimization of the kernel parameters
demo_GPR_recursive01.m 2(#ref-2) Recursive computation of Gaussian process regression (GPR)
demo_GPR_TP01.m 1(#ref-1) Use of GPR as a task-parameterized model, with DS-GMR used to retrieve continuous movements
demo_grabData01.m 1(#ref-1) Collect movement data from mouse cursor
demo_gradientDescent01.m 10(#ref-10) Optimization with gradient descent for 1D input (Newton's method)
demo_gradientDescent02.m 10(#ref-10) Optimization with gradient descent for 2D input (Newton's method)
demo_gradientDescent03.m 10(#ref-10) Optimization with gradient descent for 1D input and 2D output (Gauss-Newton algorithm)
demo_gradientDescent04.m 10(#ref-10) Optimization with gradient descent for 2D input and 2D output depicting a planar robot IK problem (Gauss-Newton algorithm)
demo_HMM01.m 2(#ref-2) Hidden Markov model (HMM) with single Gaussian as emission distribution
demo_HMM02.m 2(#ref-2) Emulation of HSMM with a standard HMM
demo_HMM_Viterbi01.m 2(#ref-2) Viterbi decoding in HMM to estimate best state sequence from observations
demo_HSMM01.m 2(#ref-2) Variable duration model implemented as a hidden semi-Markov model (HSMM), by encoding the state duration after EM
demo_HSMM02.m 2(#ref-2) Same as demo_HSMM01.m but with a log-normal duration model
demo_HSMM_adaptiveDuration01.m 9(#ref-9) Hidden semi-Markov model with adaptive duration
demo_HSMM_adaptiveDuration_infHor01.m 9(#ref-9) Same as demo_HSMM_adaptiveDuration01.m with LQR
demo_HSMM_MPC01.m 2(#ref-2) Use of HSMM (with lognormal duration model) and batch LQR (with position only) for motion synthesis
demo_HSMM_online01.m 2(#ref-2) Online HSMM
demo_ID01.m 10(#ref-10) Inverse dynamics with dynamically consistent nullspace (requires the robotics toolbox)
demo_IK01.m 10(#ref-10) Inverse kinematics with nullspace control (requires the robotics toolbox)
demo_IK02.m 10(#ref-10) Inverse kinematics with two arms and nullspace control (requires the robotics toolbox)
demo_IK_nullspaceAsProduct01.m 1(#ref-1) 3-level nullspace control formulated as product of Gaussians
demo_IK_nullspace_TPGMM01.m 1(#ref-1) IK with nullspace treated with task-parameterized GMM (bimanual tracking task, version with 4 frames)
demo_IK_pointing_TPGMM01.m 1(#ref-1) Task-parameterized GMM to encode pointing direction by considering inverse kinematics
demo_IK_quat01.m 10(#ref-10) Inverse kinematics for orientation data with quaternion references (version with quaternion Jacobian)
demo_IK_quat02.m 10(#ref-10) Inverse kinematics for orientation data with quaternion references (version with standard Jacobian)
demo_IK_weighted01.m 10(#ref-10) Inverse kinematics with nullspace control, by considering weights in joint space and in task space
demo_ILC01.m 10(#ref-10) Iterative correction of errors for a recurring movement with ILC
demo_IPRA01.m 10(#ref-10) Gaussian mixture model (GMM) learned with iterative pairwise replacement algorithm (IPRA)
demo_Kalman01.m 10(#10) Kalman filter computed as a feedback term or as a product of Gaussians
demo_kernelPCA01.m 10(#ref-10) Kernel PCA, with comparison to PCA
demo_LS01.m 10(#ref-10) Multivariate ordinary least squares
demo_LS_IRLS01.m 10(#ref-10) Iteratively reweighted least squares
demo_LS_IRLS_logisticRegression01.m 10(#ref-10) Logistic regression computed with iteratively reweighted least squares (IRLS) algorithm
demo_LS_IRLS_logisticRegression02.m 10(#ref-10) Logistic regression with multivariate inputs computed with IRLS algorithm
demo_LS_polFit01.m 10(#ref-10) Polynomial fitting with least squares
demo_LS_recursive01.m 10(#ref-10) Recursive computation of least squares estimate (implementation with block data)
demo_LS_recursive02.m 10(#ref-10) Recursive computation of least squares estimate with one datapoint at a time
demo_LS_weighted01.m 10(#ref-10) Weighted least squares regression
demo_LWR01.m 5(#ref-5) Locally weighted regression (LWR) with radial basis functions and local polynomial fitting
demo_manipulabilityTracking_mainTask01.m 6(#ref-6) Tracking of a desired manipulability ellipsoid as the main task
demo_manipulabilityTracking_mainTask02.m 6(#ref-6) Same as demo_manipulabilityControl_mainTask01.m by using precision matrices as gain
demo_manipulabilityTracking_secondaryTask01.m 6(#ref-6) Tracking of a desired manipulability ellipsoid as the secondary task
demo_manipulabilityTransfer01.m 6(#ref-6) Use of robot redundancy to track desired manipulability ellipsoid
demo_manipulabilityTransfer02.m 6(#ref-6) Learning and reproduction of manipulability ellipsoid profiles
demo_manipulabilityTransfer03.m 6(#ref-6) Learning and reproduction of manipulability ellipsoid profiles (numerical version)
demo_MPC01.m 2(#ref-2) Batch LQR with viapoints and a double integrator system.
demo_MPC02.m 2(#ref-2) Same as demo_MPC01.m but with a GMM encoding of only position data
demo_MPC03.m 2(#ref-2) Control of a spring attached to a point with batch LQR
demo_MPC04.m 2(#ref-2) Control of a spring attached to a point with batch LQR (with augmented state space)
demo_MPC_augmSigma01.m 2(#ref-2) Batch LQR with augmented covariance to transform a tracking problem to a regulation problem
demo_MPC_constrained01.m 2(#ref-2) Constrained batch LQT by using quadratic programming solver, with an encoding of position and velocity data
demo_MPC_fullQ01.m 2(#ref-2) Batch LQR exploiting full Q matrix by constraining the motion to pass through a common point at different time steps
demo_MPC_fullQ02.m 2(#ref-2) Batch LQR exploiting full Q matrix by constraining the motion of two agents
demo_MPC_fullQ03.m 2(#ref-2) Batch LQR exploiting full Q matrix by constraining the motion of two agents in a ballistic task
demo_MPC_infHor01.m 2(#ref-2) Discrete infinite horizon linear quadratic regulation (with precision matrix only on position)
demo_MPC_infHor02.m 2(#ref-2) Discrete infinite horizon linear quadratic regulation (with precision matrix on position and velocity)
demo_MPC_infHor03.m 2(#ref-2) Continuous infinite horizon linear quadratic tracking, by relying on a GMM encoding of position and velocity data
demo_MPC_infHor04.m 2(#ref-2) Discrete infinite horizon linear quadratic tracking, by relying on a GMM encoding of position and velocity data
demo_MPC_infHor_bicopter01.m 2(#ref-2) Infinite horizon LQR applied on a planar UAV with an iterative linearization of the system plant
demo_MPC_infHor_incremental01.m 2(ref-2) Infinite horizon LQR with an iterative re-estimation of the system plant linear system (example with planar UAV)
demo_MPC_infHor_incremental02.m 2(ref-2) Same as demo_MPC_infHor_incremental01.m but with pendulum)
demo_MPC_iterativeLQR01.m 2(#ref-2) Iterative computation of linear quadratic tracking (with feedback and feedforward terms)
demo_MPC_iterativeLQR02.m 2(#ref-2) Same as demo_MPC_iterativeLQR01.m, by relying on a GMM encoding of position and velocity data
demo_MPC_iterativeLQR03.m 2(#ref-2) Same as demo_MPC_iterativeLQR01.m, by relying on a GMM encoding of only position data
demo_MPC_iterativeLQR04.m 2(#ref-2) Control of a spring attached to a point with iterative linear quadratic tracking (with feedback and feedforward terms)
demo_MPC_iterativeLQR_augmSigma01.m 2(#ref-2) Iterative LQR with augmented covariance to transform the tracking problem to a regulation problem
demo_MPC_iterativeLQR_augmSigma_online01.m 2(#ref-2) Same as demo_iterativeLQR_augmSigma01 but recomputed in an online manner
demo_MPC_Lagrangian01.m 2(#ref-2) Batch LQR with Lagrangian in matrix form to force first and last point to coincide in order to form periodic motion
demo_MPC_MP01.m 2(#ref-2) Batch LQR using sparse movement primitives with radial basis functions
demo_MPC_MP02.m 2(#ref-2) Batch LQR using sparse movement primitives with Fourier basis functions
demo_MPC_noInitialState01.m 2(#ref-2) Batch LQR solution finding the optimal initial state together with the optimal control commands
demo_MPC_nullspace01.m 2(#ref-2) Batch LQR with nullspace formulation
demo_MPC_nullspace_online01.m 2(#ref-2) Online batch LQR with nullspace formulation
demo_MPC_online01.m 2(#ref-2) MPC recomputed in an online manner with a time horizon
demo_MPC_online02.m 2(#ref-2) MPC recomputed in an online manner with a time horizon, by relying on a GMM encoding of position and velocity data (with animation)
demo_MPC_online03.m 2(#ref-2) Obstacle avoidance with MPC recomputed in an online manner
demo_MPC_robot01.m 2(#ref-2) Robot tracking task with online batch LQR, by linearization of the system plant at each time step
demo_MPC_skillsRepr01.m 2(#ref-2) Representation of skills combined in parallel and in series through a batch LQT formulation
demo_MPC_viapoints01.m 2(#ref-2) Keypoint-based motion through MPC, with a GMM encoding of position and velocity
demo_MPC_viapoints02.m 2(#ref-2) Same as demo_MPC_viapoints01 with only position encoding
demo_MPC_viapoints03.m 8(#ref-8) Equivalence between cubic Bezier curve and batch LQR with double integrator
demo_MPC_viapoints_withProd01.m 2(#ref-2) Batch LQT with viapoints computed as a product of trajectory distributions in control space
demo_PCA01.m 10(#ref-10) Principal component analysis (PCA)
demo_Procrustes01.m 10(#ref-10) SVD solution of orthogonal Procrustes problem
demo_proMP01.m 5(#ref-5) Conditioning on trajectory distributions with Probabilistic movement primitives to estimate trajectory distribution
demo_proMP_Fourier01.m 5(#ref-5) ProMP with Fourier basis functions (1D example)
demo_proMP_Fourier02.m 5(#ref-5) ProMP with Fourier basis functions (2D example)
demo_proMP_Fourier_sampling01.m 5(#ref-5) Stochastic sampling with Fourier movement primitives (1D example)
demo_proMP_Fourier_sampling02.m 5(#ref-5) Stochastic sampling with Fourier movement primitives (2D example)
demo_regularization01.m 10(#ref-10) Regularization of GMM parameters with minimum admissible eigenvalue
demo_regularization02.m 10(#ref-10) Regularization of GMM parameters with the addition of a small circular covariance
demo_Riemannian_Gdp_vecTransp01.m 3(#ref-3) Parallel transport on Grassmann manifold
demo_Riemannian_Hd_GMM01.m 3(#ref-3) GMM on d-hyperboloid manifold
demo_Riemannian_Hd_interp01.m 3(#ref-3) Interpolation on d-hyperboloid manifold
demo_Riemannian_pose_GMM01.m 3(#ref-3) GMM to encode 3D position and orientation as unit quaternion by relying on Riemannian manifold
demo_Riemannian_S1_interp01.m 3(#ref-3) Interpolation on 1-sphere manifold (formulation with imaginary numbers)
demo_Riemannian_S1_interp02.m 3(#ref-3) Interpolation on 1-sphere manifold (formulation with imaginary numbers, parameterization of x as angle)
demo_Riemannian_S2_batchLQR01.m 3(#ref-3) LQT on a sphere by relying on Riemannian manifold, based on GMM encoding of movement
demo_Riemannian_S2_batchLQR02.m 3(#ref-3) Same as demo_Riemannian_S2_batchLQR01.m with full reference
demo_Riemannian_S2_batchLQR03.m 3(#ref-3) Same as demo_Riemannian_S2_batchLQR02.m by using only position data (-> velocity commands)
demo_Riemannian_S2_batchLQR_Bezier01.m 8(#ref-8) Bezier interpolation on a sphere by relying on Riemannian manifold and batch LQR
demo_Riemannian_S2_GaussProd01.m 3(#ref-3) Product of Gaussians on a sphere by relying on Riemannian manifold
demo_Riemannian_S2_GMM01.m 3(#ref-3) GMM for data on a sphere by relying on Riemannian manifold
demo_Riemannian_S2_GMR01.m 3(#ref-3) GMR with input and output data on a sphere by relying on Riemannian manifold
demo_Riemannian_S2_GMR02.m 3(#ref-3) GMR with time as input and spherical data as output by relying on Riemannian manifold
demo_Riemannian_S2_GMR03.m 3(#ref-3) GMR with 3D Euclidean data as input and spherical data as output by relying on Riemannian manifold
demo_Riemannian_S2_GMR04.m 3(#ref-3) GMR with input data on a sphere and output data in Eudlidean space by relying on Riemannian manifold
demo_Riemannian_S2_infHorLQR01.m 3(#ref-3) Linear quadratic regulation on a sphere by relying on Riemannian manifold and infinite-horizon LQR
demo_Riemannian_S2_TPGMM01.m 3(#ref-3) TP-GMM for data on a sphere by relying on Riemannian manifold (with single frame)
demo_Riemannian_S2_TPGMM02.m 3(#ref-3) TP-GMM for data on a sphere by relying on Riemannian manifold (with two frames)
demo_Riemannian_S2_vecTransp01.m 3(#ref-3) Parallel transport on a sphere
demo_Riemannian_S3_GMM01.m 3(#ref-3) GMM for unit quaternion data by relying on Riemannian manifold
demo_Riemannian_S3_GMR01.m 3(#ref-3) GMR with unit quaternions as input and output data by relying on Riemannian manifold
demo_Riemannian_S3_GMR02.m 3(#ref-3) GMR with time as input and unit quaternion as output by relying on Riemannian manifold
demo_Riemannian_S3_infHorLQR01.m 3(#ref-3) Linear quadratic regulation of unit quaternions by relying on Riemannian manifold and infinite-horizon LQR
demo_Riemannian_S3_interp01.m 3(#ref-3) Interpolation of unit quaternions by relying on Riemannian manifold, providing the same result as SLERP interpolation
demo_Riemannian_S3_vecTransp01.m 3(#ref-3) Parallel transport for unit quaternions
demo_Riemannian_Sd_GaussProd01.m 3(#ref-3) Product of Gaussians on a d-sphere by relying on Riemannian manifold
demo_Riemannian_Sd_GMM01.m 3(#ref-3) GMM for data on a 1-sphere (circle) by relying on Riemannian manifold
demo_Riemannian_Sd_GMM02.m 3(#ref-3) GMM for data on a 2-sphere (ball) by relying on Riemannian manifold
demo_Riemannian_Sd_GMMR01.m 3(#ref-3) Retrieval of periodic motion with GMR, by considering input data on a 1-sphere and output data in Euclidean space
demo_Riemannian_Sd_GMMR02.m 3(#ref-3) GMR with input data on a 2-sphere (ball) and output data in Euclidean space by relying on Riemannian manifold
demo_Riemannian_Sd_interp01.m 3(#ref-3) Interpolation on a n-sphere (formulation with tangent space of same dimension as manifold)
demo_Riemannian_Sd_interp02.m 3(#ref-3) Interpolation on a 3-sphere and comparison with SLERP
demo_Riemannian_Sd_MPC01.m 3(#ref-3) LQT on Sn by relying on Riemannian manifold and batch LQR recomputed in an online manner, based on GMM encoding of movement
demo_Riemannian_Sd_MPC_infHor01.m 3(#ref-3) Linear quadratic regulation on S3 by relying on Riemannian manifold and infinite-horizon LQR
demo_Riemannian_Sd_vecTransp01.m 3(#ref-3) Parallel transport on a n-sphere
demo_Riemannian_Sd_vecTransp02.m 3(#ref-3) Vector transport on a n-sphere using Schild's ladder algorithm
demo_Riemannian_SE2_GMM01.m 3(#ref-3) GMM on SE(2) manifold
demo_Riemannian_SE2_interp01.m 3(#ref-3) Interpolation on SE(2) manifold
demo_Riemannian_SOd_interp01.m 3(#ref-3) Interpolation on SO(d) manifold
demo_Riemannian_SPD_GMM01.m 4(#ref-4) GMM for covariance data by relying on Riemannian manifold
demo_Riemannian_SPD_GMM_tensor01.m 4(#ref-4) GMM for covariance data by relying on Riemannian manifold
demo_Riemannian_SPD_GMR01.m 4(#ref-4) GMR with time as input and covariance data as output by relying on Riemannian manifold
demo_Riemannian_SPD_GMR02.m 4(#ref-4) GMR with time as input and position vector as output with comparison between computation in vector and matrix forms
demo_Riemannian_SPD_GMR03.m 4(#ref-4) GMR with vector as input and covariance data as output by relying on Riemannian manifold
demo_Riemannian_SPD_GMR_tensor01.m 4(#ref-4) GMR with time as input and covariance data as output by relying on Riemannian manifold
demo_Riemannian_SPD_interp01.m 4(#ref-4) Covariance interpolation on Riemannian manifold (comparison with linear interpolation, Euclidean interpolation on Cholesky decomposition, and Wasserstein interpolation)
demo_Riemannian_SPD_interp02.m 4(#ref-4) Covariance interpolation on Riemannian manifold from a GMM with augmented covariances
demo_Riemannian_SPD_interp03.m 4(#ref-4) Trajectory morphing through covariance interpolation on Riemannian manifold (with augmented Gaussian trajectory distribution)
demo_Riemannian_SPD_vecTransp01.m 4(#ref-4) Verification of angle conservation in parallel transport on the symmetric positive definite
demo_Riemannian_SPD_vecTransp02.m 4(#ref-4) Vector transport on the Symmetric Positive Definite matrices (SPD) manifold using Schild's ladder algorithm
demo_search01.m 2(#ref-2) EM-based stochastic optimization
demo_spring01.m 10(#ref-10) Influence of the damping ratio in mass-spring-damper systems
demo_stdPGMM01.m 1(#ref-1) Parametric Gaussian mixture model (PGMM) used as a task-parameterized model, with DS-GMR employed to retrieve continuous movements
demo_TPGMM01.m 1(#ref-1) Task-parameterized Gaussian mixture model (TP-GMM) encoding
demo_TPGMM_bimanualReaching01.m 1(#ref-1) Time-invariant task-parameterized GMM applied to a bimanual reaching task
demo_TPGMM_teleoperation01.m 1(#ref-1) Time-invariant task-parameterized GMM applied to a teleoperation task (position only)
demo_TPGMR01.m 1(#ref-1) Task-parameterized Gaussian mixture model (TP-GMM), with GMR used for reproduction (without dynamical system)
demo_TPGP01.m 1(#ref-1) Task-parameterized Gaussian process regression (TP-GPR)
demo_TPMPC01.m 1(#ref-1) Task-parameterized probabilistic model encoding position data, with MPC (batch version of LQR) used to track the associated stepwise reference path
demo_TPproMP01.m 1(#ref-1) Task-parameterized probabilistic movement primitives (TP-ProMP)
demo_TPtrajDistrib01.m 1(#ref-1) Task-parameterized model with trajectory distribution and eigendecomposition
demo_TPtrajGMM01.m 1(#ref-1) Task-parameterized model with trajectory-GMM encoding
demo_trajDistrib01.m 2(#ref-2) Stochastic sampling with Gaussian trajectory distribution
demo_trajDistrib_differencingMatrix01.m 2(#ref-2) Conditioning on trajectory distribution constructed by differencing matrix, with via-point passing example
demo_trajGMM01.m 2(#ref-2) Trajectory synthesis using a GMM with dynamic features (trajectory GMM)
demo_trajGMM02.m 2(#ref-2) Trajectory synthesis with a GMM with dynamic features (trajectory GMM), where the GMM is learned from trajectory examples
demo_trajHSMM01.m 2(#ref-2) Trajectory synthesis with an HSMM with dynamic features (trajectory-HSMM)
demo_trajHSMM_adaptiveDuration01.m 9(#ref-9) Hidden semi-Markov model with adaptive duration
demo_trajHSMM_adaptiveDuration_online01.m 9(#ref-9) Online trajectory retrieval method built on an HSMM with adaptive duration and a trajectory-GMM representation

References

If you find PbDlib useful for your research, please cite the related publications!

[1] Calinon, S. (2016). A Tutorial on Task-Parameterized Movement Learning and Retrieval. Intelligent Service Robotics (Springer), 9:1, 1-29.
pdf(http://calinon.ch/papers/Calinon-JIST2015.pdf) bib(http://calinon.ch/papers/Calinon-JIST2015.bib)
(Ref. for GMM, TP-GMM, MFA, MPPCA, GPR, trajGMM)

[2] Calinon, S. and Lee, D. (2019). Learning Control. Vadakkepat, P. and Goswami, A. (eds.). Humanoid Robotics: a Reference, pp. 1261-1312. Springer.
pdf(http://calinon.ch/papers/Calinon-Lee-learningControl.pdf) bib(http://calinon.ch/papers/Calinon-Lee-learningControl.bib)
(Ref. for MPC, LQR, HMM, HSMM)

[3] Calinon, S. (2020). Gaussians on Riemannian Manifolds for Robot Learning and Adaptive Control. IEEE Robotics and Automation Magazine (RAM).
pdf(http://calinon.ch/papers/Calinon-RAM2020.pdf) bib(http://calinon.ch/papers/Calinon-RAM2020.bib)
(Ref. for Riemannian manifolds)

[4] Jaquier, N. and Calinon, S. (2017). Gaussian Mixture Regression on Symmetric Positive Definite Matrices Manifolds: Application to Wrist Motion Estimation with sEMG. In Proc. of the IEEE/RSJ Intl Conf. on Intelligent Robots and Systems (IROS), pp. 59-64.
pdf(http://calinon.ch/papers/Jaquier-IROS2017.pdf) bib(http://calinon.ch/papers/Jaquier-IROS2017.bib)
(Ref. for S^+ Riemannian manifolds)

[5] Calinon, S. (2019). Mixture Models for the Analysis, Edition, and Synthesis of Continuous Time Series. Bouguila, N. and Fan, W. (eds). Mixture Models and Applications, pp. 39-57. Springer.
pdf(http://calinon.ch/papers/Calinon_MMchapter2019.pdf) bib(http://calinon.ch/papers/Calinon_MMchapter2019.bib)
(Ref. for ergodic control, Bezier curves, LWR, GMR, probabilistic movement primitives)

[6] Jaquier, N., Rozo, L., Caldwell, D.G. and Calinon, S. (2019). Geometry-aware Manipulability Transfer. arXiv:1811.11050.
pdf(http://calinon.ch/papers/Jaquier-arXiv2018.pdf) bib(http://calinon.ch/papers/Jaquier-arXiv2018.bib)
(Ref. for manipulability ellipsoids)

[7] Bruno, D., Calinon, S. and Caldwell, D.G. (2017). Learning Autonomous Behaviours for the Body of a Flexible Surgical Robot. Autonomous Robots, 41:2, 333-347.
pdf(http://calinon.ch/papers/Bruno-AURO2017.pdf) bib(http://calinon.ch/papers/Bruno-AURO2017.bib)
(Ref. for DP-means)

[8] Berio, D., Calinon, S. and Fol Leymarie, F. (2017). Generating Calligraphic Trajectories with Model Predictive Control. In Proc. of the 43rd Conf. on Graphics Interface, pp. 132-139.
pdf(http://calinon.ch/papers/Berio-GI2017.pdf) bib(http://calinon.ch/papers/Berio-GI2017.bib)
(Ref. for Bezier curves as MPC with viapoints)

[9] Rozo, L., Silvério, J., Calinon, S. and Caldwell, D.G. (2016). Learning Controllers for Reactive and Proactive Behaviors in Human-Robot Collaboration. Frontiers in Robotics and AI, 3:30, 1-11.
pdf(http://calinon.ch/papers/Rozo-Frontiers2016.pdf) bib(http://calinon.ch/papers/Rozo-Frontiers2016.bib)
(Ref. for HSMM with adaptive time duration)

[10] EPFL EE613 course "Machine Learning for Engineers"
url(http://calinon.ch/teaching.htm)
(Ref. for machine learning teaching material)

Gallery


demo_GMM_semiTied01.m

demo_GMR_3Dviz01.m

demo_GMR_polyFit01.m

demo_HMM01.m

demo_MPC_iterativeLQR01.m

demo_Riemannian_SPD_GMR01.m

demo_Riemannian_SPD_interp01.m

demo_Riemannian_SPD_interp02.m

demo_Riemannian_SPD_interp03.m

demo_Riemannian_S2_GMM01.m

demo_TPMPC01.m

demo_TPGMR01.m

demo_TPproMP01.m

demo_trajHSMM01.m

License

The Matlab/GNU Octave version of PbDlib is maintained by Sylvain Calinon, Idiap Research Institute.

Copyright (c) 2015-2019 Idiap Research Institute, http://idiap.ch/

PbDlib is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.

PbDlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with PbDlib. If not, see http://www.gnu.org/licenses/.