diff --git a/CMakeLists.txt b/CMakeLists.txt index 56a02951d207092021438fe025f3346a50b5432c..edf28deec4ee076a12c449cb1a3d7eb638154306 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -308,27 +308,27 @@ target_link_libraries(demo_proMP01 ${LIBRARIES} ) -add_executable(demo_Riemannian_cov_GMR_Mandel01 +add_executable(demo_Riemannian_SPD_GMR_Mandel01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_cov_GMR_Mandel01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_SPD_GMR_Mandel01.cpp ) -target_link_libraries(demo_Riemannian_cov_GMR_Mandel01 +target_link_libraries(demo_Riemannian_SPD_GMR_Mandel01 ${LIBRARIES} ) -add_executable(demo_Riemannian_cov_GMR01 +add_executable(demo_Riemannian_SPD_GMR01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_cov_GMR01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_SPD_GMR01.cpp ) -target_link_libraries(demo_Riemannian_cov_GMR01 +target_link_libraries(demo_Riemannian_SPD_GMR01 ${LIBRARIES} ) -add_executable(demo_Riemannian_cov_interp02 +add_executable(demo_Riemannian_SPD_interp02 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_cov_interp02.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_SPD_interp02.cpp ) -target_link_libraries(demo_Riemannian_cov_interp02 +target_link_libraries(demo_Riemannian_SPD_interp02 ${LIBRARIES} ) @@ -362,59 +362,59 @@ target_link_libraries(demo_Riemannian_pose_TPGMM01 ${ARMADILLO_LIBRARIES} ) -add_executable(demo_Riemannian_quat_infHorLQR01 +add_executable(demo_Riemannian_S3_infHorLQR01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_quat_infHorLQR01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_S3_infHorLQR01.cpp ) -target_link_libraries(demo_Riemannian_quat_infHorLQR01 +target_link_libraries(demo_Riemannian_S3_infHorLQR01 ${LIBRARIES} ) -add_executable(demo_Riemannian_quat_TPGMM01 +add_executable(demo_Riemannian_S3_TPGMM01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_quat_TPGMM01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_S3_TPGMM01.cpp ) -target_link_libraries(demo_Riemannian_quat_TPGMM01 +target_link_libraries(demo_Riemannian_S3_TPGMM01 ${LIBRARIES} ) -add_executable(demo_Riemannian_sphere_GMM01 +add_executable(demo_Riemannian_S2_GMM01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_sphere_GMM01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_S2_GMM01.cpp ) -target_link_libraries(demo_Riemannian_sphere_GMM01 +target_link_libraries(demo_Riemannian_S2_GMM01 ${LIBRARIES} ) -add_executable(demo_Riemannian_sphere_infHorLQR01 +add_executable(demo_Riemannian_S2_infHorLQR01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_sphere_infHorLQR01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_S2_infHorLQR01.cpp ) -target_link_libraries(demo_Riemannian_sphere_infHorLQR01 +target_link_libraries(demo_Riemannian_S2_infHorLQR01 ${LIBRARIES} ) -add_executable(demo_Riemannian_sphere_product01 +add_executable(demo_Riemannian_S2_product01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_sphere_product01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_S2_product01.cpp ) -target_link_libraries(demo_Riemannian_sphere_product01 +target_link_libraries(demo_Riemannian_S2_product01 ${LIBRARIES} ) -add_executable(demo_Riemannian_sphere_TPGMM01 +add_executable(demo_Riemannian_S2_TPGMM01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_sphere_TPGMM01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_Riemannian_S2_TPGMM01.cpp ) -target_link_libraries(demo_Riemannian_sphere_TPGMM01 +target_link_libraries(demo_Riemannian_S2_TPGMM01 ${LIBRARIES} ) -add_executable(demo_TPbatchLQR01 +add_executable(demo_TPMPC01 ${GFX2_SUPPORT_SOURCES} - ${PROJECT_SOURCE_DIR}/src/demo_TPbatchLQR01.cpp + ${PROJECT_SOURCE_DIR}/src/demo_TPMPC01.cpp ) -target_link_libraries(demo_TPbatchLQR01 +target_link_libraries(demo_TPMPC01 ${LIBRARIES} ) diff --git a/README.md b/README.md index 9b7b6981786f848ded1336620e3c7f32042c3e53..1bf9458da4340c5346d2299f2b310bcd40e78377 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ This project builds a number of executables in the `build` folder, with the corr | Filename | ref. | Description | |----------|------|-------------| | [demo_ergodicControl_2D01.cpp](./src/demo_ergodicControl_2D01.cpp) | [[5]](#ref-5) | 2D ergodic control with spectral multiscale coverage (SMC) algorithm | +| [demo_ergodicControl_nD01.cpp](./src/demo_ergodicControl_nD01.cpp) | [[5]](#ref-5) | nD ergodic control with spectral multiscale coverage (SMC) algorithm | | [demo_GMR01.cpp](./src/demo_GMR01.cpp) | [[5]](#ref-5) | Gaussian mixture model (GMM) and time-based Gaussian mixture regression (GMR) used for reproduction | | [demo_GPR01.cpp](./src/demo_GPR01.cpp) | [[2]](#ref-2) | Gaussian process regression (GPR) | | [demo_HSMM_batchLQR01.cpp](./src/demo_HSMM_batchLQR01.cpp) | [[2]](#ref-2) | Use of HSMM (with lognormal duration model) and batch LQR (with position only) for motion synthesis | @@ -28,21 +29,21 @@ This project builds a number of executables in the `build` folder, with the corr | [demo_online_GMM01.cpp](./src/demo_online_GMM01.cpp) | [[2]](#ref-2), [[6]](#ref-6) | Online GMM learning and LQR-based trajectory generation | | [demo_online_HSMM01.cpp](./src/demo_online_HSMM01.cpp) | [[2]](#ref-2), [[6]](#ref-6) | Online HSMM learning and sampling with LQR-based trajectory generation | | [demo_proMP01.cpp](./src/demo_proMP01.cpp) | [[5]](#ref-5) | 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) | [[3]](#ref-3) | 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) | [[3]](#ref-3) | GMM for 3D position and unit quaternion data by relying on Riemannian manifold | | [demo_Riemannian_pose_infHorLQR01.cpp](./src/demo_Riemannian_pose_infHorLQR01.cpp) | [[3]](#ref-3) | 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) | [[3]](#ref-3) | 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) | [[3]](#ref-3) | 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) | [[3]](#ref-3) | 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_Riemannian_S2_GMM01.cpp](./src/demo_Riemannian_S2_GMM01.cpp) | [[3]](#ref-3) | GMM for data on a sphere by relying on Riemannian manifold | +| [demo_Riemannian_S2_infHorLQR01.cpp](./src/demo_Riemannian_S2_infHorLQR01.cpp) | [[3]](#ref-3) | Linear quadratic regulation on a sphere by relying on Riemannian manifold and infinite-horizon LQR | +| [demo_Riemannian_S2_product01.cpp](./src/demo_Riemannian_S2_product01.cpp) | [[3]](#ref-3) | Gaussian product on sphere | +| [demo_Riemannian_S2_TPGMM01.cpp](./src/demo_Riemannian_S2_TPGMM01.cpp) | [[3]](#ref-3) | TP-GMM for data on a sphere by relying on Riemannian manifold (with single frame) | +| [demo_Riemannian_S3_infHorLQR01.cpp](./src/demo_Riemannian_S3_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_S3_TPGMM01.cpp](./src/demo_Riemannian_S3_TPGMM01.cpp) | [[3]](#ref-3) | TP-GMM on S3 (unit quaternion) with two frames | +| [demo_Riemannian_SPD_GMR01.cpp](./src/demo_Riemannian_SPD_GMR01.cpp) | [[4]](#ref-4) | GMR with time as input and covariance data as output by relying on Riemannian manifold | +| [demo_Riemannian_SPD_interp02.cpp](./src/demo_Riemannian_SPD_interp02.cpp) | [[4]](#ref-4) | Covariance interpolation on Riemannian manifold from a GMM with augmented covariances | | [demo_TPGMMProduct01.cpp](./src/demo_TPGMMProduct01.cpp) | [[1]](#ref-1) | Product of Gaussians for a Task-Parametrized GMM | | [demo_TPGMR01.cpp](./src/demo_TPGMR01.cpp) | [[1]](#ref-1) | Task-Parametrized GMM with GMR (time as input), the model is able to adapt to continuously changing task parameters. | +| [demo_TPMPC01.cpp](./src/demo_TPMPC01.cpp) | [[1]](#ref-1) | Linear quadratic control (unconstrained linear MPC) acting in multiple frames, which is equivalent to the fusion of Gaussian controllers | ### References @@ -216,11 +217,11 @@ and compile as usual. |  <br> [demo\_MPC\_batch01.cpp](./src/demo_MPC_batch01.cpp) |  <br> [demo\_MPC\_iterative01.cpp](./src/demo_MPC_iterative01.cpp) | |  <br> [demo\_MPC\_semitied01.cpp](./src/demo_MPC_semitied01.cpp) |  <br> [demo\_MPC\_velocity01.cpp](./src/demo_MPC_velocity01.cpp) | |  <br> [demo\_online\_GMM01.cpp](./src/demo_online_GMM01.cpp) |  <br> [demo\_proMP01.cpp](./src/demo_proMP01.cpp) | -|  <br> [demo\_Riemannian\_cov\_GMR01.cpp](./src/demo_Riemannian_cov_GMR01.cpp) |  <br> [demo\_Riemannian\_cov\_interp02.cpp](./src/demo_Riemannian_cov_interp02.cpp) | +|  <br> [demo\_Riemannian\_cov\_GMR01.cpp](./src/demo_Riemannian_SPD_GMR01.cpp) |  <br> [demo\_Riemannian\_cov\_interp02.cpp](./src/demo_Riemannian_SPD_interp02.cpp) | |  <br> [demo\_Riemannian\_pose\_batchLQR01.cpp](./src/demo_Riemannian_pose_batchLQR01.cpp) |  <br> [demo\_Riemannian\_pose\_infHorLQR01.cpp](./src/demo_Riemannian_pose_infHorLQR01.cpp) | -|  <br> [demo\_Riemannian\_quat\_infHorLQR01.cpp](./src/demo_Riemannian_quat_infHorLQR01.cpp) |  <br> [demo\_Riemannian\_quat\_TPGMM01.cpp](./src/demo_Riemannian_quat_TPGMM01.cpp) | -|  <br> [demo\_Riemannian\_sphere\_GMM01.cpp](./src/demo_Riemannian_sphere_GMM01.cpp) |  <br> [demo\_Riemannian\_sphere\_infHorLQR01.cpp](./src/demo_Riemannian_sphere_infHorLQR01.cpp) | -|  <br> [demo\_Riemannian\_sphere\_product01.cpp](./src/demo_Riemannian_sphere_product01.cpp) |  <br> [demo\_Riemannian\_sphere\_TPGMM01.cpp](./src/demo_Riemannian_sphere_TPGMM01.cpp) | -|  <br> [demo\_TPbatchLQR01.cpp](./src/demo_TPbatchLQR01.cpp) |  <br> [demo\_TPGMMProduct01.cpp](./src/demo_TPGMMProduct01.cpp) | +|  <br> [demo\_Riemannian\_quat\_infHorLQR01.cpp](./src/demo_Riemannian_S3_infHorLQR01.cpp) |  <br> [demo\_Riemannian\_quat\_TPGMM01.cpp](./src/demo_Riemannian_S3_TPGMM01.cpp) | +|  <br> [demo\_Riemannian\_sphere\_GMM01.cpp](./src/demo_Riemannian_S2_GMM01.cpp) |  <br> [demo\_Riemannian\_sphere\_infHorLQR01.cpp](./src/demo_Riemannian_S2_infHorLQR01.cpp) | +|  <br> [demo\_Riemannian\_sphere\_product01.cpp](./src/demo_Riemannian_S2_product01.cpp) |  <br> [demo\_Riemannian\_sphere\_TPGMM01.cpp](./src/demo_Riemannian_S2_TPGMM01.cpp) | +|  <br> [demo\_TPMPC01.cpp](./src/demo_TPMPC01.cpp) |  <br> [demo\_TPGMMProduct01.cpp](./src/demo_TPGMMProduct01.cpp) | |  <br> [demo\_TPGMR01.cpp](./src/demo_TPGMR01.cpp) | | diff --git a/images/demo_Riemannian_sphere_GMM01.gif b/images/demo_Riemannian_S2_GMM01.gif similarity index 100% rename from images/demo_Riemannian_sphere_GMM01.gif rename to images/demo_Riemannian_S2_GMM01.gif diff --git a/images/demo_Riemannian_sphere_TPGMM01.gif b/images/demo_Riemannian_S2_TPGMM01.gif similarity index 100% rename from images/demo_Riemannian_sphere_TPGMM01.gif rename to images/demo_Riemannian_S2_TPGMM01.gif diff --git a/images/demo_Riemannian_sphere_infHorLQR01.gif b/images/demo_Riemannian_S2_infHorLQR01.gif similarity index 100% rename from images/demo_Riemannian_sphere_infHorLQR01.gif rename to images/demo_Riemannian_S2_infHorLQR01.gif diff --git a/images/demo_Riemannian_sphere_product01.gif b/images/demo_Riemannian_S2_product01.gif similarity index 100% rename from images/demo_Riemannian_sphere_product01.gif rename to images/demo_Riemannian_S2_product01.gif diff --git a/images/demo_Riemannian_quat_TPGMM01.gif b/images/demo_Riemannian_S3_TPGMM01.gif similarity index 100% rename from images/demo_Riemannian_quat_TPGMM01.gif rename to images/demo_Riemannian_S3_TPGMM01.gif diff --git a/images/demo_Riemannian_quat_infHorLQR01.png b/images/demo_Riemannian_S3_infHorLQR01.png similarity index 100% rename from images/demo_Riemannian_quat_infHorLQR01.png rename to images/demo_Riemannian_S3_infHorLQR01.png diff --git a/images/demo_Riemannian_cov_GMR01.gif b/images/demo_Riemannian_SPD_GMR01.gif similarity index 100% rename from images/demo_Riemannian_cov_GMR01.gif rename to images/demo_Riemannian_SPD_GMR01.gif diff --git a/images/demo_Riemannian_cov_interp02.gif b/images/demo_Riemannian_SPD_interp02.gif similarity index 100% rename from images/demo_Riemannian_cov_interp02.gif rename to images/demo_Riemannian_SPD_interp02.gif diff --git a/images/demo_TPbatchLQR01.gif b/images/demo_TPMPC01.gif similarity index 100% rename from images/demo_TPbatchLQR01.gif rename to images/demo_TPMPC01.gif diff --git a/src/demo_Riemannian_sphere_GMM01.cpp b/src/demo_Riemannian_S2_GMM01.cpp similarity index 100% rename from src/demo_Riemannian_sphere_GMM01.cpp rename to src/demo_Riemannian_S2_GMM01.cpp diff --git a/src/demo_Riemannian_sphere_TPGMM01.cpp b/src/demo_Riemannian_S2_TPGMM01.cpp similarity index 100% rename from src/demo_Riemannian_sphere_TPGMM01.cpp rename to src/demo_Riemannian_S2_TPGMM01.cpp diff --git a/src/demo_Riemannian_sphere_infHorLQR01.cpp b/src/demo_Riemannian_S2_infHorLQR01.cpp similarity index 100% rename from src/demo_Riemannian_sphere_infHorLQR01.cpp rename to src/demo_Riemannian_S2_infHorLQR01.cpp diff --git a/src/demo_Riemannian_sphere_product01.cpp b/src/demo_Riemannian_S2_product01.cpp similarity index 100% rename from src/demo_Riemannian_sphere_product01.cpp rename to src/demo_Riemannian_S2_product01.cpp diff --git a/src/demo_Riemannian_quat_TPGMM01.cpp b/src/demo_Riemannian_S3_TPGMM01.cpp similarity index 100% rename from src/demo_Riemannian_quat_TPGMM01.cpp rename to src/demo_Riemannian_S3_TPGMM01.cpp diff --git a/src/demo_Riemannian_quat_infHorLQR01.cpp b/src/demo_Riemannian_S3_infHorLQR01.cpp similarity index 100% rename from src/demo_Riemannian_quat_infHorLQR01.cpp rename to src/demo_Riemannian_S3_infHorLQR01.cpp diff --git a/src/demo_Riemannian_cov_GMR01.cpp b/src/demo_Riemannian_SPD_GMR01.cpp similarity index 100% rename from src/demo_Riemannian_cov_GMR01.cpp rename to src/demo_Riemannian_SPD_GMR01.cpp diff --git a/src/demo_Riemannian_cov_GMR_Mandel01.cpp b/src/demo_Riemannian_SPD_GMR_Mandel01.cpp similarity index 100% rename from src/demo_Riemannian_cov_GMR_Mandel01.cpp rename to src/demo_Riemannian_SPD_GMR_Mandel01.cpp diff --git a/src/demo_Riemannian_cov_interp02.cpp b/src/demo_Riemannian_SPD_interp02.cpp similarity index 100% rename from src/demo_Riemannian_cov_interp02.cpp rename to src/demo_Riemannian_SPD_interp02.cpp diff --git a/src/demo_TPbatchLQR01.cpp b/src/demo_TPMPC01.cpp similarity index 100% rename from src/demo_TPbatchLQR01.cpp rename to src/demo_TPMPC01.cpp