diff --git a/README.md b/README.md index fdbf570bd6bf8a853606c66b4ab624592a6d86bf..e090864dae7cda59c4322138774d5984224068ce 100644 --- a/README.md +++ b/README.md @@ -67,125 +67,125 @@ for instructions. ### References and list of examples -See [https://gitlab.idiap.ch/rli/pbdlib-cpp/blob/master/examples.md](https://gitlab.idiap.ch/rli/pbdlib-cpp/blob/master/examples.md) +See [examples.md](./examples.md) ### Gallery -demo\_GMR01 +[demo\_GMR01.cpp](./src/demo_GMR01.cpp)  *** -demo\_MPC\_batch01 +[demo\_MPC\_batch01.cpp](./src/demo_MPC_batch01.cpp)  *** -demo\_MPC\_iterative01 +[demo\_MPC\_iterative01.cpp](./src/demo_MPC_iterative01.cpp)  *** -demo\_MPC\_semitied01 +[demo\_MPC\_semitied01.cpp](./src/demo_MPC_semitied01.cpp)  *** -demo\_MPC\_velocity01 +[demo\_MPC\_velocity01.cpp](./src/demo_MPC_velocity01.cpp)  *** -demo\_online\_GMM01 +[demo\_online\_GMM01.cpp](./src/demo_online_GMM01.cpp)  *** -demo\_proMP01 +[demo\_proMP01.cpp](./src/demo_proMP01.cpp)  *** -demo\_Riemannian\_cov\_GMR01 +[demo\_Riemannian\_cov\_GMR01.cpp](./src/demo_Riemannian_cov_GMR01.cpp)  *** -demo\_Riemannian\_cov\_interp02 +[demo\_Riemannian\_cov\_interp02.cpp](./src/demo_Riemannian_cov_interp02.cpp)  *** -demo\_Riemannian\_pose\_batchLQR01 +[demo\_Riemannian\_pose\_batchLQR01.cpp](./src/demo_Riemannian_pose_batchLQR01.cpp)  *** -demo\_Riemannian\_pose\_infHorLQR01 +[demo\_Riemannian\_pose\_infHorLQR01.cpp](./src/demo_Riemannian_pose_infHorLQR01.cpp)  *** -demo\_Riemannian\_quat\_infHorLQR01 +[demo\_Riemannian\_quat\_infHorLQR01.cpp](./src/demo_Riemannian_quat_infHorLQR01.cpp)  *** -demo\_Riemannian\_quat\_TPGMM01 +[demo\_Riemannian\_quat\_TPGMM01.cpp](./src/demo_Riemannian_quat_TPGMM01.cpp)  *** -demo\_Riemannian\_sphere\_GMM01 +[demo\_Riemannian\_sphere\_GMM01.cpp](./src/demo_Riemannian_sphere_GMM01.cpp)  *** -demo\_Riemannian\_sphere\_infHorLQR01 +[demo\_Riemannian\_sphere\_infHorLQR01.cpp](./src/demo_Riemannian_sphere_infHorLQR01.cpp)  *** -demo\_Riemannian\_sphere\_product01 +[demo\_Riemannian\_sphere\_product01.cpp](./src/demo_Riemannian_sphere_product01.cpp)  *** -demo\_Riemannian\_sphere\_TPGMM01 +[demo\_Riemannian\_sphere\_TPGMM01.cpp](./src/demo_Riemannian_sphere_TPGMM01.cpp)  *** -demo\_TPbatchLQR01 +[demo\_TPbatchLQR01.cpp](./src/demo_TPbatchLQR01.cpp)  *** -demo\_TPGMMProduct01 +[demo\_TPGMMProduct01.cpp](./src/demo_TPGMMProduct01.cpp)  *** -demo\_TPGMR01 +[demo\_TPGMR01.cpp](./src/demo_TPGMR01.cpp)  diff --git a/examples.md b/examples.md index 98a565e870f8ea7968b8d7d533718549493b6a4c..83d8dcab1babc6c46cd0af982b5c7af6b7a49618 100644 --- a/examples.md +++ b/examples.md @@ -3,7 +3,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in any academic publications that used parts of these codes. <br><br> -[1] Tutorial (GMM, TP-GMM, MFA, MPPCA, GMR, LWR, GPR, MPC, LQR, trajGMM): +#### Ref. [1] +**Tutorial (GMM, TP-GMM, MFA, MPPCA, GMR, LWR, GPR, MPC, LQR, trajGMM)**<br> +[Link to publication](http://calinon.ch/papers/Calinon-JIST2015.pdf) ``` @article{Calinon16JIST, author="Calinon, S.", @@ -18,7 +20,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[2] HMM, HSMM: +#### Ref. [2] +**HMM, HSMM**<br> +[Link to publication](http://calinon.ch/papers/Rozo-Frontiers2016.pdf) ``` @article{Rozo16Frontiers, author="Rozo, L. and Silv\'erio, J. and Calinon, S. and Caldwell, D. G.", @@ -33,7 +37,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[3] Riemannian manifolds (S2,S3): +#### Ref. [3] +**Riemannian manifolds (S2,S3)**<br> +[Link to publication](http://calinon.ch/papers/Zeestraten-RAL2017.pdf) ``` @article{Zeestraten17RAL, author="Zeestraten, M. J. A. and Havoutis, I. and Silv\'erio, J. and Calinon, S. and Caldwell, D. G.", @@ -48,7 +54,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[4] Riemannian manifolds (S+): +#### Ref. [4] +**Riemannian manifolds (S+)**<br> +[Link to publication](http://calinon.ch/papers/Jaquier-IROS2017.pdf) ``` @inproceedings{Jaquier17IROS, author="Jaquier, N. and Calinon, S.", @@ -61,7 +69,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[5] Semi-tied GMM: +#### Ref. [5] +**Semi-tied GMM**<br> +[Link to publication](http://calinon.ch/papers/Tanwani-RAL2016.pdf) ``` @article{Tanwani16RAL, author="Tanwani, A. K. and Calinon, S.", @@ -76,7 +86,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[6] DP-means: +#### Ref. [6] +**DP-means**<br> +[Link to publication](http://calinon.ch/papers/Bruno-AURO2017.pdf) ``` @article{Bruno17AURO, author="Bruno, D. and Calinon, S. and Caldwell, D. G.", @@ -91,7 +103,8 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[7] Shared control, adaptive teleoperation: +#### Ref. [7] +**Shared control, adaptive teleoperation**<br> ``` @inproceedings{Havoutis17ICRA, author="Havoutis, I. and Calinon, S.", @@ -104,7 +117,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[8] Keypoint-based motion edition through MPC: +#### Ref. [8] +**Keypoint-based motion through MPC**<br> +[Link to publication](http://calinon.ch/papers/Berio-GI2017.pdf) ``` @inproceedings{Berio17GI, author="Berio, D. and Calinon, S. and Fol Leymarie, F.", @@ -118,7 +133,8 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[9] Adaptive assistance: +#### Ref. [9] +**Adaptive assistance**<br> ``` @article{Pignat17RAS, author="Pignat, E. and Calinon, S.", @@ -133,18 +149,6 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in } ``` -[10] Gaussian Mixture Regression: -``` -@article{Jaquier17IROS, - author="Jaquier, N. and Calinon, S.", - title="Gaussian Mixture Regression on Symmetric Positive Definite Matrices Manifolds: - Application to Wrist Motion Estimation with s{EMG}", - year="2017, submitted for publication", - booktitle = "{IEEE/RSJ} Intl. Conf. on Intelligent Robots and Systems ({IROS})", - address = "Vancouver, Canada" -} -``` - ### List of examples @@ -152,27 +156,26 @@ This project will build a number of executables, as listed in the table below. | Filename | ref. | Description | |----------|------|-------------| -| demo\_infHorLQR01\_glsl | [1] | Discrete infinite horizon linear quadratic regulation | -| demo\_GMR01 | [1] | Gaussian mixture model (GMM) and time-based Gaussian mixture regression (GMR) used for reproduction | -| demo\_MPC\_batch01 | [1,8] | Model predictive control (MPC) with batch linear quadratic tracking (LQT) formulation | -| demo\_MPC\_iterative01 | [1,8] | Model predictive control (MPC) with iterative linear quadratic tracking (LQT) formulation | -| demo\_MPC\_semitied01 | [5,8] | MPC with semi-tied covariances | -| demo\_MPC\_velocity01 | [1,8] | MPC with an objective including velocity tracking | -| demo\_online\_GMM01 | [6] | Online GMM learning and LQR-based trajectory generation | -| demo\_online\_HSMM01 | [2,7] | Online HSMM learning and sampling with LQR-based trajectory generation | -| demo\_proMP01 | [] | Conditioning on trajectory distributions with ProMP | -| demo\_Riemannian\_cov\_GMR01 | [10] | GMR with time as input and covariance data as output by relying on Riemannian manifold | -| demo\_Riemannian\_cov\_interp02 | [4] | Covariance interpolation on Riemannian manifold from a GMM with augmented covariances | -| demo\_Riemannian\_pose\_batchLQR01 | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and batch LQR (MPC without constraints) | -| demo\_Riemannian\_pose\_GMM01 | [] | GMM for 3D position and unit quaternion data by relying on Riemannian manifold | -| demo\_Riemannian\_pose\_infHorLQR01 | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and infinite-horizon LQR | -| demo\_Riemannian\_pose\_TPGMM01 | [] | TP-GMM of pose (R3 x S3) with two frames | -| demo\_Riemannian\_quat\_infHorLQR01 | [3] | Linear quadratic regulation on hypersphere (orientation as unit quaternions) by relying on Riemannian manifold and infinite-horizon LQR | -| demo\_Riemannian\_quat\_TPGMM01 | [] | TP-GMM on S3 (unit quaternion) with two frames | -| demo\_Riemannian\_sphere\_GMM01 | [3] | GMM for data on a sphere by relying on Riemannian manifold | -| demo\_Riemannian\_sphere\_infHorLQR01 | [3] | Linear quadratic regulation on a sphere by relying on Riemannian manifold and infinite-horizon LQR | -| demo\_Riemannian\_sphere\_product01 | [] | Gaussian product on sphere | -| demo\_Riemannian\_sphere\_TPGMM01 | [3] | TP-GMM for data on a sphere by relying on Riemannian manifold (with single frame) | -| demo\_TPbatchLQR01 | [1] | Linear quadratic control (unconstrained linear MPC) acting in multiple frames, which is equivalent to the fusion of Gaussian controllers | -| demo\_TPGMMProduct01 | [] | Product of Gaussians for a Task-Parametrized GMM | -| demo\_TPGMR01 | [] | Task-Parametrized GMM with GMR (time as input), the model is able to adapt to continuously changing task parameters. | +| [demo_GMR01.cpp](./src/demo_GMR01.cpp) | [[1]](#ref-1) | Gaussian mixture model (GMM) and time-based Gaussian mixture regression (GMR) used for reproduction | +| [demo_MPC_batch01.cpp](./src/demo_MPC_batch01.cpp) | [[1]](#ref-1), [[8]](#ref-8) | Model predictive control (MPC) with batch linear quadratic tracking (LQT) formulation | +| [demo_MPC_iterative01.cpp](./src/demo_MPC_iterative01.cpp) | [[1]](#ref-1), [[8]](#ref-8) | Model predictive control (MPC) with iterative linear quadratic tracking (LQT) formulation | +| [demo_MPC_semitied01.cpp](./src/demo_MPC_semitied01.cpp) | [[5]](#ref-5), [[8]](#ref-8) | MPC with semi-tied covariances | +| [demo_MPC_velocity01.cpp](./src/demo_MPC_velocity01.cpp) | [[1]](#ref-1), [[8]](#ref-8) | MPC with an objective including velocity tracking | +| [demo_online_GMM01.cpp](./src/demo_online_GMM01.cpp) | [[6]](#ref-6) | Online GMM learning and LQR-based trajectory generation | +| [demo_online_HSMM01.cpp](./src/demo_online_HSMM01.cpp) | [[2]](#ref-2), [[7]](#ref-7) | Online HSMM learning and sampling with LQR-based trajectory generation | +| [demo_proMP01.cpp](./src/demo_proMP01.cpp) | [] | Conditioning on trajectory distributions with ProMP | +| [demo_Riemannian_cov_GMR01.cpp](./src/demo_Riemannian_cov_GMR01.cpp) | [[4]](#ref-4) | GMR with time as input and covariance data as output by relying on Riemannian manifold | +| [demo_Riemannian_cov_interp02.cpp](./src/demo_Riemannian_cov_interp02.cpp) | [[4]](#ref-4) | Covariance interpolation on Riemannian manifold from a GMM with augmented covariances | +| [demo_Riemannian_pose_batchLQR01.cpp](./src/demo_Riemannian_pose_batchLQR01.cpp) | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and batch LQR (MPC without constraints) | +| [demo_Riemannian_pose_GMM01.cpp](./src/demo_Riemannian_pose_GMM01.cpp) | [] | GMM for 3D position and unit quaternion data by relying on Riemannian manifold | +| [demo_Riemannian_pose_infHorLQR01.cpp](./src/demo_Riemannian_pose_infHorLQR01.cpp) | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and infinite-horizon LQR | +| [demo_Riemannian_pose_TPGMM01.cpp](./src/demo_Riemannian_pose_TPGMM01.cpp) | [] | TP-GMM of pose (R3 x S3) with two frames | +| [demo_Riemannian_quat_infHorLQR01.cpp](./src/demo_Riemannian_quat_infHorLQR01.cpp) | [[3]](#ref-3) | Linear quadratic regulation on hypersphere (orientation as unit quaternions) by relying on Riemannian manifold and infinite-horizon LQR | +| [demo_Riemannian_quat_TPGMM01.cpp](./src/demo_Riemannian_quat_TPGMM01.cpp) | [] | TP-GMM on S3 (unit quaternion) with two frames | +| [demo_Riemannian_sphere_GMM01.cpp](./src/demo_Riemannian_sphere_GMM01.cpp) | [[3]](#ref-3) | GMM for data on a sphere by relying on Riemannian manifold | +| [demo_Riemannian_sphere_infHorLQR01.cpp](./src/demo_Riemannian_sphere_infHorLQR01.cpp) | [[3]](#ref-3) | Linear quadratic regulation on a sphere by relying on Riemannian manifold and infinite-horizon LQR | +| [demo_Riemannian_sphere_product01.cpp](./src/demo_Riemannian_sphere_product01.cpp) | [] | Gaussian product on sphere | +| [demo_Riemannian_sphere_TPGMM01.cpp](./src/demo_Riemannian_sphere_TPGMM01.cpp) | [[3]](#ref-3) | TP-GMM for data on a sphere by relying on Riemannian manifold (with single frame) | +| [demo_TPbatchLQR01.cpp](./src/demo_TPbatchLQR01.cpp) | [[1]](#ref-1) | Linear quadratic control (unconstrained linear MPC) acting in multiple frames, which is equivalent to the fusion of Gaussian controllers | +| [demo_TPGMMProduct01.cpp](./src/demo_TPGMMProduct01.cpp) | [] | Product of Gaussians for a Task-Parametrized GMM | +| [demo_TPGMR01.cpp](./src/demo_TPGMR01.cpp) | [] | Task-Parametrized GMM with GMR (time as input), the model is able to adapt to continuously changing task parameters. |