diff --git a/pyrobolearn/models/README.md b/pyrobolearn/models/README.md index 817b6ff..7af34ea 100644 --- a/pyrobolearn/models/README.md +++ b/pyrobolearn/models/README.md @@ -3,7 +3,7 @@ In this folder, we provide the various learning models. These can be categorized into two categories: movement primitives and general function approximators. These include: -- Central pattern generators (CPG; the version provided by ) +- Central pattern generators (CPG; the dynamical formulation described in Ijspeert's papers) - Dynamic movement primitives (DMP) - Probabilistic movement primitives (ProMP) - Kernelized movement primitives (KMP) @@ -12,14 +12,15 @@ These include: - Polynomial models - Gaussian mixture models (GMM) with its regression counterpart (GMR) - Gaussian processes (GP; it uses/wraps the [GPyTorch](https://github.com/cornellius-gp/gpytorch) library) -- Neural networks (currently, only MLP are provided) +- Neural networks (NN) TODO: - [ ] finish to implement the models - [ ] provide multiple tests/examples for each model -- [ ] implement other models such as HMMs +- [ ] implement other models such as Hidden Markov Models (HMMs), Riemaniann Motion Policies (RMPs), etc #### what to check/look next? Check the `approximators`, `policies`, `values`, and `dynamics` folders. + diff --git a/pyrobolearn/models/dmp/dmp.py b/pyrobolearn/models/dmp/dmp.py index 040d96c..0533483 100644 --- a/pyrobolearn/models/dmp/dmp.py +++ b/pyrobolearn/models/dmp/dmp.py @@ -106,6 +106,8 @@ class DMP(object): - [8] "A Framework for Learning Biped Locomotion with Dynamical Movement Primitives", Nakanishi et al., 2004 - [9] "Policy Search for Motor Primitives in Robotics", Kober et al., 2010 - [10] "A Generalized Path Integral Control Approach to Reinforcement Learning", Theodorou et al., 2010 + - [11] "A correct formulation for the Orientation Dynamic Movement Primitives for robot control in the + Cartesian space", Koutras et al., 2019 """ def __init__(self, canonical_system, forcing_term, y0=0, goal=1, stiffness=None, damping=None): diff --git a/pyrobolearn/models/dmp/orientation_dmp.py b/pyrobolearn/models/dmp/orientation_dmp.py new file mode 100644 index 0000000..d768042 --- /dev/null +++ b/pyrobolearn/models/dmp/orientation_dmp.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +#!/usr/bin/env python +r"""Define DMPs for orientations + +For orientations expressed as rotation matrices or quaternions, DMPs have to be reformulated to account for the manifold on which these mathematical objects live. This is different from the standard DMP equations which assumes that the space is Euclidean. + +References: + - [1] "Orientation in Cartesian Space Dynamic Movement Primitives", Ude et al., 2014 + - [2] "A correct formulation for the Orientation Dynamic Movement Primitives for robot control in the Cartesian space", Koutras et al., 2019 +""" + +# TODO: implement the DMPs for orientations. +# TODO: generalize based on the given manifold (see also `pymanopt`). +