diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a693464dfc463d4a4a0798ebc7bee763763345d..28d8c69e4176d3e4f21b2c04139691af84373303 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,51 +1,94 @@ +# Copyright (C) 2008-2013 LAAS-CNRS, JRL AIST-CNRS. +# +# Author: Florent Lamiraux, Nirmal Giftsun +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Catkin part + cmake_minimum_required(VERSION 2.4.6) -include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) +project(dynamic_graph_bridge) + +find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation std_srvs geometry_msgs sensor_msgs tf realtime_tools) +find_package(Boost REQUIRED COMPONENTS program_options) + +add_message_files(FILES Matrix.msg Vector.msg) + +add_service_files(FILES RunCommand.srv) + +generate_messages( + DEPENDENCIES + dynamic_graph_bridge + std_msgs +) +catkin_package(CATKIN_DEPENDS message_runtime) + + +## LAAS cmake submodule part +set(PROJECT_DESCRIPTION "Dynamic graph bridge library") +set(PROJECT_NAME dynamic_graph_bridge) +set(PROJECT_URL "") + +set(CXX_DISABLE_WERROR False) +set(CUSTOM_HEADER_DIR dynamic_graph_bridge) +set(${PROJECT_NAME}_HEADERS + include/dynamic_graph_bridge/ros_init.hh + include/dynamic_graph_bridge/ros_interpreter.hh + ) include(cmake/base.cmake) include(cmake/GNUInstallDirs.cmake) +include(cmake/python.cmake) -set(ROS_BUILD_TYPE RelWithDebInfo) - -rosbuild_init() +SETUP_PROJECT() set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) set(CMAKE_INSTALL_RPATH "${LIBRARY_OUTPUT_PATH}") - -rosbuild_genmsg() -rosbuild_gensrv() - -rosbuild_add_boost_directories() - +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${LIBRARY_OUTPUT_PATH}") set(PKG_CONFIG_ADDITIONAL_VARIABLES ${PKG_CONFIG_ADDITIONAL_VARIABLES} plugindirname plugindir ) +add_required_dependency(roscpp) +add_required_dependency("realtime_tools >= 1.8") add_required_dependency(bullet) - add_required_dependency(jrl-mal) add_required_dependency(dynamic-graph) add_required_dependency(dynamic-graph-python) add_required_dependency(sot-core) add_required_dependency(sot-dynamic) -include_directories(include) - -rosbuild_add_library(ros_bridge +add_library(ros_bridge src/converter.hh include/dynamic_graph_bridge/ros_init.hh src/ros_init.cpp src/sot_to_ros.hh src/sot_to_ros.cpp ) + +pkg_config_use_dependency(ros_bridge jrl-mal) pkg_config_use_dependency(ros_bridge bullet) + # Make sure rpath are preserved during the install as ROS dependencies # are not installed. set_target_properties(ros_bridge PROPERTIES BUILD_WITH_INSTALL_RPATH True) macro(compile_plugin NAME) + message(lib path ${LIBRARY_OUTPUT_PATH}) file(MAKE_DIRECTORY "${LIBRARY_OUTPUT_PATH}/dynamic_graph/ros/${NAME}") - rosbuild_add_library(${NAME} src/${NAME}.cpp src/${NAME}.hh) + add_library(${NAME} src/${NAME}.cpp src/${NAME}.hh) pkg_config_use_dependency(${NAME} jrl-mal) pkg_config_use_dependency(${NAME} dynamic-graph) pkg_config_use_dependency(${NAME} sot-core) @@ -53,12 +96,14 @@ macro(compile_plugin NAME) target_link_libraries(${NAME} ros_bridge) set_target_properties(${NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH True) install(TARGETS ${NAME} DESTINATION lib) + dynamic_graph_python_module("ros/${NAME}" ${NAME} ros/${NAME}/wrap ) + PKG_CONFIG_USE_DEPENDENCY(ros/${NAME}/wrap realtime_tools) PKG_CONFIG_USE_DEPENDENCY(ros/${NAME}/wrap jrl-mal) PKG_CONFIG_USE_DEPENDENCY(ros/${NAME}/wrap dynamic_graph) PKG_CONFIG_USE_DEPENDENCY(ros/${NAME}/wrap sot-core) @@ -66,30 +111,30 @@ endmacro() include(cmake/python.cmake) -include_directories(${DYNAMIC_GRAPH_include_DIRS}) -link_directories(${DYNAMIC_GRAPH_LIBRARY_DIRS}) - compile_plugin(ros_publish) compile_plugin(ros_subscribe) compile_plugin(ros_time) - compile_plugin(ros_joint_state) + target_link_libraries(ros_joint_state "${DYNAMIC_GRAPH_PLUGINDIR}/dynamic.so") compile_plugin(robot_model) # ros_interperter library. -rosbuild_add_library(ros_interpreter src/ros_interpreter.cpp) +add_library(ros_interpreter src/ros_interpreter.cpp) pkg_config_use_dependency(ros_interpreter jrl-mal) pkg_config_use_dependency(ros_interpreter dynamic-graph) pkg_config_use_dependency(ros_interpreter sot-core) +pkg_config_use_dependency(ros_interpreter roscpp) + add_dependencies(ros_interpreter ros_bridge) target_link_libraries(ros_interpreter ros_bridge) set_target_properties(ros_interpreter PROPERTIES BUILD_WITH_INSTALL_RPATH True) +message(cmakeinstalllibdir ${CMAKE_INSTALL_LIBDIR} ) install(TARGETS ros_interpreter DESTINATION ${CMAKE_INSTALL_LIBDIR}) # Stand alone remote dynamic-graph Python interpreter. -rosbuild_add_executable(interpreter src/interpreter.cpp) +add_executable(interpreter src/interpreter.cpp) add_dependencies(interpreter ros_interpreter) target_link_libraries(interpreter ros_interpreter) pkg_config_use_dependency(interpreter jrl-mal) @@ -100,14 +145,11 @@ pkg_config_use_dependency(interpreter sot-dynamic) #install(TARGETS interpreter DESTINATION bin) # Stand alone embedded intepreter with a robot controller. -rosbuild_add_executable(geometric_simu src/geometric_simu.cpp src/sot_loader.cpp) -rosbuild_link_boost(geometric_simu program_options) +add_executable(geometric_simu src/geometric_simu.cpp src/sot_loader.cpp) +pkg_config_use_dependency(geometric_simu roscpp) +target_link_libraries(geometric_simu ${Boost_LIBRARIES}) add_subdirectory(src) -# Print warning. -MESSAGE(STATUS "=====================================================") -MESSAGE(STATUS "WARNING: this package has an 'install' target.") -MESSAGE(STATUS "Always run 'make install' in the package directory to") -MESSAGE(STATUS "properly install the Python modules and entities.") -MESSAGE(STATUS "=====================================================") +SETUP_PROJECT_FINALIZE() + diff --git a/package.xml b/package.xml new file mode 100644 index 0000000000000000000000000000000000000000..71f2338246ec837dd4b4ac0704ae0fa9b748a6e9 --- /dev/null +++ b/package.xml @@ -0,0 +1,49 @@ +<package> + <name>dynamic_graph_bridge</name> + <version>2.0.0</version> + <description> + + URDF parser for jrl-dynamics + + </description> + <maintainer email="hpp@laas.fr">hpp@laas.fr</maintainer> + <author email="hpp@laas.fr">hpp@laas.fr</author> + + <license>LGPL</license> + <url>http://ros.org/wiki/jrl_dynamics_urdf</url> + + <export> + <cpp + cflags="-I${prefix}/include" + lflags="-L${prefix}/lib -lros_bridge -lros_interpreter -Wl,-rpath,${prefix}/lib" + /> + <rosdoc config="rosdoc.yaml" /> + </export> + + <buildtool_depend>catkin</buildtool_depend> + + <build_depend>std_msgs</build_depend> + <build_depend>std_srvs</build_depend> + <build_depend>roscpp</build_depend> + <build_depend>geometry_msgs</build_depend> + <build_depend>sensor_msgs</build_depend> + <build_depend>tf</build_depend> + <build_depend>realtime_tools</build_depend> + <build_depend>jrl_dynamics_urdf</build_depend> +<build_depend>message_generation</build_depend> + + + <run_depend>std_msgs</run_depend> + <run_depend>std_srvs</run_depend> + <run_depend>roscpp</run_depend> + <run_depend>geometry_msgs</run_depend> + <run_depend>sensor_msgs</run_depend> + <run_depend>tf</run_depend> + <run_depend>realtime_tools</run_depend> + <run_depend>jrl_dynamics_urdf</run_depend> + <run_depend>message_runtime</run_depend> + + + + +</package>