-
Valenza Florian authored
[C++][Python][Major] Replaced the way collisions and visuals are stored in GeometryModel. Now it is two lists of GeometryObject (one for collisions, one for visuals) aggregating information instead of multiple vectors. Now handle multiple collisions/visuals for one link when parsing urdf file and keep track of the mesh absolute path. Changed binding accordingly.
Valenza Florian authored[C++][Python][Major] Replaced the way collisions and visuals are stored in GeometryModel. Now it is two lists of GeometryObject (one for collisions, one for visuals) aggregating information instead of multiple vectors. Now handle multiple collisions/visuals for one link when parsing urdf file and keep track of the mesh absolute path. Changed binding accordingly.
CMakeLists.txt 8.16 KiB
#
# Copyright (c) 2015-2016 CNRS
# Copyright (c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
#
# This file is part of Pinocchio
# pinocchio is free software: you can redistribute it
# and/or modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation, either version
# 3 of the License, or (at your option) any later version.
# pinocchio is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Lesser Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with
# pinocchio If not, see
# <http://www.gnu.org/licenses/>.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
INCLUDE(cmake/base.cmake)
INCLUDE(cmake/boost.cmake)
INCLUDE(cmake/cpack.cmake)
INCLUDE(cmake/eigen.cmake)
INCLUDE(cmake/python.cmake)
SET(PROJECT_NAME pinocchio)
SET(PROJECT_DESCRIPTION "Rigid multi body dynamics algorithms")
SET(PROJECT_URL "http://github.com/stac-of-tasks/pinocchio")
SET(DOXYGEN_USE_MATHJAX YES)
IF(APPLE)
SET(CMAKE_MACOSX_RPATH 1)
ENDIF(APPLE)
# Disable -Werror on Unix for now.
SET(CXX_DISABLE_WERROR True)
SET(CMAKE_VERBOSE_MAKEFILE True)
SETUP_PROJECT()
IF(WIN32)
SET(LINK copy_if_different)
ELSE(WIN32)
SET(LINK create_symlink)
ENDIF(WIN32)
# --- OPTIONS ----------------------------------------
OPTION (BUILD_BENCHMARK "Build the benchmarks" OFF)
OPTION (BUILD_UNIT_TESTS "Build the unitary tests" ON)
OPTION (BUILD_UTILS "Build the utils" OFF)
OPTION (INITIALIZE_WITH_NAN "Initialize Eigen entries with NaN" OFF)
OPTION (BUILD_TESTS_WITH_HPP "Build geom tests and benchmarks with hpp to do comparisons" OFF)
IF (INITIALIZE_WITH_NAN)
MESSAGE (STATUS "Initialize with NaN all the Eigen entries")
ADD_DEFINITIONS(-DEIGEN_INITIALIZE_MATRICES_BY_NAN)
ENDIF (INITIALIZE_WITH_NAN)
# ----------------------------------------------------
# --- DEPENDANCIES -----------------------------------
# ----------------------------------------------------
ADD_REQUIRED_DEPENDENCY("eigen3 >= 3.0.5")
ADD_OPTIONAL_DEPENDENCY("eigenpy >= 1.3.0")
ADD_OPTIONAL_DEPENDENCY("metapod >= 1.0.7")
ADD_OPTIONAL_DEPENDENCY("urdfdom >= 0.2.10")
ADD_OPTIONAL_DEPENDENCY("lua5.1")
ADD_OPTIONAL_DEPENDENCY("hpp-fcl")
IF(HPP_FCL_FOUND AND URDFDOM_FOUND)
ADD_REQUIRED_DEPENDENCY("assimp >= 3.0")
ENDIF(HPP_FCL_FOUND AND URDFDOM_FOUND)
SET(BOOST_COMPONENTS filesystem unit_test_framework system)
SEARCH_FOR_BOOST()
# Path to boost headers
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
# ----------------------------------------------------
# --- INCLUDE ----------------------------------------
# ----------------------------------------------------
SET(${PROJECT_NAME}_MATH_HEADERS
math/fwd.hpp
math/sincos.hpp
math/quaternion.hpp
)
SET(${PROJECT_NAME}_TOOLS_HEADERS
tools/timer.hpp
tools/string-generator.hpp
tools/file-explorer.hpp
)
SET(${PROJECT_NAME}_SPATIAL_HEADERS
spatial/symmetric3.hpp
spatial/se3.hpp
spatial/motion.hpp
spatial/force.hpp
spatial/inertia.hpp
spatial/fwd.hpp
spatial/skew.hpp
spatial/act-on-set.hpp
spatial/explog.hpp
spatial/frame.hpp
)
SET(${PROJECT_NAME}_MULTIBODY_JOINT_HEADERS
multibody/joint/joint-base.hpp
multibody/joint/joint-dense.hpp
multibody/joint/joint-revolute.hpp
multibody/joint/joint-revolute-unaligned.hpp
multibody/joint/joint-spherical.hpp
multibody/joint/joint-spherical-ZYX.hpp
multibody/joint/joint-prismatic.hpp
multibody/joint/joint-prismatic-unaligned.hpp
multibody/joint/joint-planar.hpp
multibody/joint/joint-translation.hpp
multibody/joint/joint-free-flyer.hpp
multibody/joint/joint-variant.hpp
multibody/joint/joint-generic.hpp
)
SET(${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/sample-models.hpp
multibody/parser/utils.hpp
)
SET(${PROJECT_NAME}_MULTIBODY_HEADERS
multibody/fwd.hpp
multibody/constraint.hpp
multibody/force-set.hpp
multibody/joint.hpp
multibody/model.hpp
multibody/model.hxx
multibody/visitor.hpp
multibody/parser/srdf.hpp
)
SET(${PROJECT_NAME}_ALGORITHM_HEADERS
algorithm/aba.hpp
algorithm/aba.hxx
algorithm/rnea.hpp
algorithm/rnea.hxx
algorithm/crba.hpp
algorithm/crba.hxx
algorithm/jacobian.hpp
algorithm/jacobian.hxx
algorithm/cholesky.hpp
algorithm/cholesky.hxx
algorithm/kinematics.hpp
algorithm/kinematics.hxx
algorithm/dynamics.hpp
algorithm/center-of-mass.hpp
algorithm/center-of-mass.hxx
algorithm/joint-configuration.hpp
algorithm/energy.hpp
algorithm/operational-frames.hpp
algorithm/compute-all-terms.hpp
)
SET(${PROJECT_NAME}_PYTHON_HEADERS
python/eigen_container.hpp
python/handler.hpp
python/python.hpp
python/se3.hpp
python/force.hpp
python/motion.hpp
python/inertia.hpp
python/joint-dense.hpp
python/joints-models.hpp
python/joints-variant.hpp
python/frame.hpp
python/model.hpp
python/data.hpp
python/algorithms.hpp
python/parsers.hpp
python/explog.hpp
)
IF(HPP_FCL_FOUND)
LIST(APPEND ${PROJECT_NAME}_PYTHON_HEADERS
python/geometry-object.hpp
python/geometry-model.hpp
python/geometry-data.hpp
)
ENDIF(HPP_FCL_FOUND)
IF(URDFDOM_FOUND)
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/urdf.hpp
multibody/parser/urdf.hxx
)
IF(HPP_FCL_FOUND )
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/from-collada-to-fcl.hpp
multibody/parser/urdf-with-geometry.hpp
multibody/parser/urdf-with-geometry.hxx
)
ENDIF(HPP_FCL_FOUND)
ADD_DEFINITIONS(-DWITH_URDFDOM)
ENDIF(URDFDOM_FOUND)
IF(HPP_FCL_FOUND)
LIST(APPEND ${PROJECT_NAME}_SPATIAL_HEADERS
spatial/fcl-pinocchio-conversions.hpp
)
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_HEADERS
multibody/geometry.hpp
multibody/geometry.hxx
)
LIST(APPEND ${PROJECT_NAME}_ALGORITHM_HEADERS
algorithm/collisions.hpp
)
ENDIF(HPP_FCL_FOUND)
IF(LUA5_1_FOUND)
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/lua.hpp
multibody/parser/lua/lua_tables.hpp
)
ADD_DEFINITIONS(-DWITH_LUA)
ENDIF(LUA5_1_FOUND)
SET(HEADERS
${${PROJECT_NAME}_MATH_HEADERS}
${${PROJECT_NAME}_TOOLS_HEADERS}
${${PROJECT_NAME}_SPATIAL_HEADERS}
${${PROJECT_NAME}_MULTIBODY_JOINT_HEADERS}
${${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS}
${${PROJECT_NAME}_MULTIBODY_HEADERS}
${${PROJECT_NAME}_ALGORITHM_HEADERS}
${${PROJECT_NAME}_PYTHON_HEADERS}
exception.hpp
assert.hpp
)
LIST(REMOVE_DUPLICATES HEADERS)
PKG_CONFIG_APPEND_LIBS (${PROJECT_NAME})
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/math")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/spatial")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody/joint")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody/parser")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody/parser/lua")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/tools")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/algorithm")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/python")
FOREACH(header ${HEADERS})
GET_FILENAME_COMPONENT(headerName ${header} NAME)
GET_FILENAME_COMPONENT(headerPath ${header} PATH)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK}
${${PROJECT_NAME}_SOURCE_DIR}/src/${header}
${${PROJECT_NAME}_BINARY_DIR}/include/${PROJECT_NAME}/${header})
INSTALL(FILES ${${PROJECT_NAME}_SOURCE_DIR}/src/${header}
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}/${headerPath}
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)
ENDFOREACH(header)
ADD_SUBDIRECTORY(src)
# --- EXECUTABLES --------------------------------------------------------------
# --- EXECUTABLES --------------------------------------------------------------
# --- EXECUTABLES --------------------------------------------------------------
ADD_SUBDIRECTORY(unittest)
ADD_SUBDIRECTORY (benchmark)
IF (BUILD_UTILS)
ADD_SUBDIRECTORY (utils)
ENDIF (BUILD_UTILS)
SETUP_PROJECT_FINALIZE()