Newer
Older
set (CMAKE_CXX_STANDARD 11)
# Project properties
set(PROJECT_NAMESPACE gepetto)
set(PROJECT_NAME quadruped-reactive-walking)
set(PROJECT_DESCRIPTION "Reactive walking control architecture for quadrupeds")
set(PROJECT_URL https://gitlab.laas.fr/${PROJECT_NAMESPACE}/${PROJECT_NAME})
option(BUILD_PYTHON_INTERFACE "Build the python binding" ON)
option(INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python bindings" ON)
option(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
if(NOT INSTALL_PYTHON_INTERFACE_ONLY)
set(PROJECT_USE_CMAKE_EXPORT TRUE)
endif()
# JRL-cmakemodule setup
include(cmake/base.cmake)
# Disable -Werror on Unix.
SET(CXX_DISABLE_WERROR True)
# Project definition
COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
project(${PROJECT_NAME} ${PROJECT_ARGS})
# Project dependencies
set(BOOST_COMPONENTS unit_test_framework)
ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED)
set(BUILD_PYTHON_INTERFACE TRUE)
if(BUILD_PYTHON_INTERFACE)
FINDPYTHON()
ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED)
string(REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME})
set(${PY_NAME}_INSTALL_DIR ${PYTHON_SITELIB}/${PY_NAME})
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} python)
endif()
include/qrw/gepadd.hpp
include/qrw/MPC.hpp
include/qrw/Gait.hpp
include/qrw/FootTrajectoryGenerator.hpp
include/qrw/FootstepPlanner.hpp

Pierre-Alexandre Leziart
committed
include/qrw/StatePlanner.hpp
include/qrw/Types.h
include/qrw/InvKin.hpp
include/qrw/QPWBC.hpp
include/qrw/Params.hpp
include/qrw/Estimator.hpp
include/qrw/Joystick.hpp
include/qrw/Filter.hpp

Pierre-Alexandre Leziart
committed
include/qrw/Controller.hpp

Pierre-Alexandre Leziart
committed
include/qrw/MpcWrapper.hpp
include/qrw/FakeRobot.hpp
include/other/st_to_cc.hpp
src/Gait.cpp
src/FootTrajectoryGenerator.cpp
src/FootstepPlanner.cpp

Pierre-Alexandre Leziart
committed
src/StatePlanner.cpp
src/InvKin.cpp

Pierre-Alexandre Leziart
committed
src/QPWBC.cpp
src/Params.cpp
src/Filter.cpp

Pierre-Alexandre Leziart
committed
src/Controller.cpp

Pierre-Alexandre Leziart
committed
src/MpcWrapper.cpp
)
add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS})
target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include/qrw>)
set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "\$ORIGIN")
# Include Eigen3 directories
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} SYSTEM PRIVATE ${EIGEN3_INCLUDE_DIR})
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} SYSTEM INTERFACE ${EIGEN3_INCLUDE_DIR})
# Find pinocchio library
add_project_dependency(pinocchio REQUIRED)
# Link pinocchio library
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC pinocchio::pinocchio)

Pierre-Alexandre Leziart
committed
# Link odri_control_interface library
find_package(odri_control_interface REQUIRED)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC odri_control_interface::odri_control_interface)
# Link master board library
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC master_board_sdk::master_board_sdk)

Pierre-Alexandre Leziart
committed
# Find eiquadprog library and headers
add_project_dependency(eiquadprog REQUIRED)
# Link eiquadprog library
target_link_libraries(${PROJECT_NAME} PUBLIC eiquadprog::eiquadprog)
# Find OSQP library and headers
find_package(osqp REQUIRED)
# Link the OSQP shared library

Pierre-Alexandre Leziart
committed
target_link_libraries(${PROJECT_NAME} PUBLIC osqp::osqp)
#find_package(yaml-cpp REQUIRED)
#target_link_libraries(${PROJECT_NAME} PRIVATE yaml-cpp::yaml-cpp)
add_project_dependency(yaml-cpp CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC ${YAML_CPP_LIBRARIES})
if(SUFFIX_SO_VERSION)
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
endif()
# target_compile_options(${PROJECT_NAME} PUBLIC PRINTING)
# target_compile_definitions(${PROJECT_NAME} PUBLIC PRINTING)
target_compile_options(${PROJECT_NAME} PUBLIC -DNDEBUG -O3)
target_compile_definitions(${PROJECT_NAME} PUBLIC CONFIG_SOLO12_YAML="${PROJECT_SOURCE_DIR}/scripts/config_solo12.yaml")
target_compile_definitions(${PROJECT_NAME} PUBLIC WALK_PARAMETERS_YAML="${PROJECT_SOURCE_DIR}/src/walk_parameters.yaml")

Pierre-Alexandre Leziart
committed
# add_executable(${PROJECT_NAMESPACE}-${PROJECT_NAME} src/main.cpp)
# add_executable(${PROJECT_NAMESPACE}-${PROJECT_NAME} src/control_solo12.cpp)
# Python Bindings
if(BUILD_PYTHON_INTERFACE)
add_subdirectory(python)
endif()
# Unit tests
add_subdirectory(tests)
#if(NOT INSTALL_PYTHON_INTERFACE_ONLY)
# install(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
# install(TARGETS ${PROJECT_NAMESPACE}-${PROJECT_NAME} RUNTIME DESTINATION bin)
#endif()