From e40987cb87c600e40b2d06cd72720bb8555e668a Mon Sep 17 00:00:00 2001 From: ManifoldFR Date: Wed, 18 Dec 2024 11:00:59 +0100 Subject: [PATCH 1/4] Update foot-trajectory.hpp --- include/simple-mpc/foot-trajectory.hpp | 23 ++++++++--------------- src/foot-trajectory.cpp | 1 + 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/include/simple-mpc/foot-trajectory.hpp b/include/simple-mpc/foot-trajectory.hpp index a4d64ac2..916b33b1 100644 --- a/include/simple-mpc/foot-trajectory.hpp +++ b/include/simple-mpc/foot-trajectory.hpp @@ -6,8 +6,7 @@ // All rights reserved. /////////////////////////////////////////////////////////////////////////////// -#ifndef SIMPLE_MPC_FOOTTRAJ_HPP_ -#define SIMPLE_MPC_FOOTTRAJ_HPP_ +#pragma once #include "simple-mpc/fwd.hpp" #include @@ -19,14 +18,11 @@ namespace simple_mpc * @brief Foot trajectory generation */ - typedef Eigen::Vector3d point3_t; - typedef ndcurves::bezier_curve curve_translation; - typedef ndcurves::piecewise_curve piecewise_curve; + using point3_t = Eigen::Vector3d; + using piecewise_curve = ndcurves::piecewise_curve; class FootTrajectory { - /** - */ protected: std::map initial_poses_; std::map final_poses_; @@ -38,18 +34,21 @@ namespace simple_mpc size_t T_; public: - FootTrajectory() {}; - virtual ~FootTrajectory() {}; + explicit FootTrajectory() {}; FootTrajectory( const std::map & initial_poses, double swing_apex, int T_fly, int T_contact, size_t T); + virtual ~FootTrajectory() {}; void updateApex(double swing_apex) { swing_apex_ = swing_apex; } + piecewise_curve defineTranslationBezier(const point3_t & trans_init, const point3_t & trans_final); + std::vector createTrajectory( int time_to_land, point3_t & initial_trans, point3_t & final_trans, piecewise_curve trajectory_swing); + void updateTrajectory( bool update, int landing_time, @@ -63,9 +62,3 @@ namespace simple_mpc }; } // namespace simple_mpc - -/* --- Details -------------------------------------------------------------- */ -/* --- Details -------------------------------------------------------------- */ -/* --- Details -------------------------------------------------------------- */ - -#endif // SIMPLE_MPC_HPP_ diff --git a/src/foot-trajectory.cpp b/src/foot-trajectory.cpp index b5b28b94..541e8f49 100644 --- a/src/foot-trajectory.cpp +++ b/src/foot-trajectory.cpp @@ -15,6 +15,7 @@ namespace simple_mpc { + using curve_translation = ndcurves::bezier_curve; FootTrajectory::FootTrajectory( const std::map & initial_poses, double swing_apex, int T_fly, int T_contact, size_t T) From 87681c59ac81775d73d5c53fde4e3c5e8a61c888 Mon Sep 17 00:00:00 2001 From: ManifoldFR Date: Wed, 18 Dec 2024 12:01:44 +0100 Subject: [PATCH 2/4] Allow ndcurves to be consumed thru FetchContent --- CMakeLists.txt | 16 ++++++++-------- dependencies.cmake | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 dependencies.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 00340b8c..4e6bc5c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,26 +92,26 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) ) endif() -find_package(example-robot-data 4.0.9 REQUIRED) -ADD_PROJECT_DEPENDENCY(OpenMP REQUIRED) -ADD_PROJECT_DEPENDENCY(proxsuite REQUIRED) -ADD_PROJECT_DEPENDENCY(pinocchio REQUIRED) -ADD_PROJECT_DEPENDENCY(aligator REQUIRED) -ADD_PROJECT_DEPENDENCY(ndcurves REQUIRED) +include(dependencies.cmake) # Main Library file(GLOB mpc_SOURCE CONFIGURE_DEPENDS src/*.cpp) file(GLOB mpc_HEADER CONFIGURE_DEPENDS include/${PROJECT_NAME}/*.hpp) add_library(${PROJECT_NAME} SHARED ${mpc_HEADER} ${mpc_SOURCE}) -target_include_directories(${PROJECT_NAME} PUBLIC $) +target_include_directories( + ${PROJECT_NAME} + PUBLIC + $ + $ +) target_link_libraries( ${PROJECT_NAME} PUBLIC pinocchio::pinocchio aligator::aligator example-robot-data::example-robot-data - ndcurves::ndcurves + ndcurves ) target_link_libraries(${PROJECT_NAME} PUBLIC OpenMP::OpenMP_CXX) set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${mpc_HEADER}") diff --git a/dependencies.cmake b/dependencies.cmake new file mode 100644 index 00000000..71a6a2e5 --- /dev/null +++ b/dependencies.cmake @@ -0,0 +1,26 @@ +find_package(example-robot-data 4.0.9 REQUIRED) +ADD_PROJECT_DEPENDENCY(OpenMP REQUIRED) +ADD_PROJECT_DEPENDENCY(proxsuite REQUIRED) +ADD_PROJECT_DEPENDENCY(pinocchio REQUIRED) +ADD_PROJECT_DEPENDENCY(aligator REQUIRED) + +function(get_ndcurves) + find_package(ndcurves QUIET) + if(NOT ndcurves_FOUND) + FetchContent_Declare( + ndcurves + GIT_REPOSITORY "https://github.com/loco-3d/ndcurves" + GIT_PROGRESS True + GIT_TAG devel + SYSTEM + EXCLUDE_FROM_ALL + ) + set(PROJECT_CUSTOM_HEADER_DIR) + set(PROJECT_CUSTOM_HEADER_EXTENSION) + set(BUILD_PYTHON_INTERFACE OFF) + FetchContent_MakeAvailable(ndcurves) + install(TARGETS ndcurves EXPORT ${TARGETS_EXPORT_NAME}) + endif() +endfunction() + +get_ndcurves() From 734e9204119154114f4327659318beacb726c732 Mon Sep 17 00:00:00 2001 From: ManifoldFR Date: Wed, 18 Dec 2024 17:08:07 +0100 Subject: [PATCH 3/4] Manually alias ndcurves::ndcurves --- CMakeLists.txt | 2 +- dependencies.cmake | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e6bc5c3..c9571c66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,7 +111,7 @@ target_link_libraries( pinocchio::pinocchio aligator::aligator example-robot-data::example-robot-data - ndcurves + ndcurves::ndcurves ) target_link_libraries(${PROJECT_NAME} PUBLIC OpenMP::OpenMP_CXX) set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${mpc_HEADER}") diff --git a/dependencies.cmake b/dependencies.cmake index 71a6a2e5..d0027dcd 100644 --- a/dependencies.cmake +++ b/dependencies.cmake @@ -19,6 +19,7 @@ function(get_ndcurves) set(PROJECT_CUSTOM_HEADER_EXTENSION) set(BUILD_PYTHON_INTERFACE OFF) FetchContent_MakeAvailable(ndcurves) + add_library(ndcurves::ndcurves ALIAS ndcurves) install(TARGETS ndcurves EXPORT ${TARGETS_EXPORT_NAME}) endif() endfunction() From c50a2491bb8eb551d6985af89163081f25e52a33 Mon Sep 17 00:00:00 2001 From: ManifoldFR Date: Wed, 18 Dec 2024 17:27:56 +0100 Subject: [PATCH 4/4] dependencies.cmake : disable testing for ndcurves --- dependencies.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/dependencies.cmake b/dependencies.cmake index d0027dcd..f2ee3cff 100644 --- a/dependencies.cmake +++ b/dependencies.cmake @@ -18,6 +18,7 @@ function(get_ndcurves) set(PROJECT_CUSTOM_HEADER_DIR) set(PROJECT_CUSTOM_HEADER_EXTENSION) set(BUILD_PYTHON_INTERFACE OFF) + set(BUILD_TESTING OFF) FetchContent_MakeAvailable(ndcurves) add_library(ndcurves::ndcurves ALIAS ndcurves) install(TARGETS ndcurves EXPORT ${TARGETS_EXPORT_NAME})