diff --git a/CMakeLists.txt b/CMakeLists.txt index ba90c42..6bbab20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,19 +1,19 @@ -cmake_minimum_required(VERSION 2.4.6) -include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) +cmake_minimum_required(VERSION 2.8) +project(robot_model) -set(ROSPACK_MAKEDIST true) +find_package(catkin REQUIRED) -# Append to CPACK_SOURCE_IGNORE_FILES a semicolon-separated list of -# directories (or patterns, but directories should suffice) that should -# be excluded from the distro. This is not the place to put things that -# should be ignored everywhere, like "build" directories; that happens in -# rosbuild/rosbuild.cmake. Here should be listed packages that aren't -# ready for inclusion in a distro. -# -# This list is combined with the list in rosbuild/rosbuild.cmake. Note -# that CMake 2.6 may be required to ensure that the two lists are combined -# properly. CMake 2.4 seems to have unpredictable scoping rules for such -# variables. -#list(APPEND CPACK_SOURCE_IGNORE_FILES /core/experimental) +catkin_stack() -rosbuild_make_distribution(1.8.0) +add_subdirectory(resource_retriever) +add_subdirectory(srdf) +add_subdirectory(urdf_interface) +add_subdirectory(urdf_parser) +add_subdirectory(collada_parser) +add_subdirectory(urdf) +add_subdirectory(collada_urdf) +add_subdirectory(kdl_parser) + +#add_subdirectory(convex_decomposition) +#add_subdirectory(ivcon) +#add_subdirectory(simmechanics_to_urdf) diff --git a/collada_parser/CMakeLists.txt b/collada_parser/CMakeLists.txt index cb50e6c..d2bc13c 100644 --- a/collada_parser/CMakeLists.txt +++ b/collada_parser/CMakeLists.txt @@ -1,17 +1,13 @@ -cmake_minimum_required(VERSION 2.4.6) -include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) +project(collada_parser) -# Set the build type. Options are: -# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage -# Debug : w/ debug symbols, w/o optimization -# Release : w/o debug symbols, w/ optimization -# RelWithDebInfo : w/ debug symbols, w/ optimization -# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries -#set(ROS_BUILD_TYPE RelWithDebInfo) +catkin_project(${PROJECT_NAME} + LIBRARIES ${PROJECT_NAME} + INCLUDE_DIRS include) -rosbuild_init() +include_directories(include) -rosbuild_add_boost_directories() +find_package(Boost REQUIRED) +include_directories(${Boost_INCLUDE_DIR}) find_package(urdfdom_headers REQUIRED) include_directories(${urdfdom_headers_INCLUDE_DIRS}) @@ -21,31 +17,27 @@ find_package(PkgConfig) find_package(COLLADA_DOM 2.3 COMPONENTS 1.5) if( COLLADA_DOM_FOUND ) include_directories(${COLLADA_DOM_INCLUDE_DIRS}) - #link_directories(${COLLADA_DOM_LIBRARY_DIRS}) + link_directories(${COLLADA_DOM_LIBRARY_DIRS}) endif() -#set the default path for built executables to the "bin" directory -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) -#set the default path for built libraries to the "lib" directory -set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) - # necessary for collada reader to create the temporary dae files due to limitations in the URDF geometry +include (CheckFunctionExists) check_function_exists(mkstemps HAVE_MKSTEMPS) if( HAVE_MKSTEMPS ) add_definitions("-DHAVE_MKSTEMPS") endif() #common commands for building c++ executables and libraries -rosbuild_add_library(${PROJECT_NAME} src/collada_parser.cpp) - -rosbuild_add_compile_flags(${PROJECT_NAME} "${COLLADA_DOM_CFLAGS_OTHER}") -rosbuild_add_link_flags(${PROJECT_NAME} "${COLLADA_DOM_LDFLAGS_OTHER}") +add_library(${PROJECT_NAME} src/collada_parser.cpp) +target_link_libraries(${PROJECT_NAME} ${COLLADA_DOM_LIBRARIES}) +set_target_properties(${PROJECT_NAME} PROPERTIES COMPILER_FLAGS "${COLLADA_DOM_CFLAGS_OTHER}") if(APPLE) - rosbuild_add_link_flags(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") -endif(APPLE) - -#target_link_libraries(${PROJECT_NAME} another_library) - -#rosbuild_link_boost(${PROJECT_NAME} thread) + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "${COLLADA_DOM_LDFLAGS_OTHER} -undefined dynamic_lookup") +else() + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "${COLLADA_DOM_LDFLAGS_OTHER}") +endif() +# for compatibility with old build system +install(FILES manifest.xml + DESTINATION share/${PROJECT_NAME}) diff --git a/collada_urdf/CMakeLists.txt b/collada_urdf/CMakeLists.txt index 9969631..2a93f63 100644 --- a/collada_urdf/CMakeLists.txt +++ b/collada_urdf/CMakeLists.txt @@ -1,16 +1,19 @@ -cmake_minimum_required(VERSION 2.4.6) -include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) -set(ROS_BUILD_TYPE RelWithDebInfo) -rosbuild_init() -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) +project(collada_urdf) -link_libraries(tinyxml) +catkin_project(${PROJECT_NAME} + LIBRARIES ${PROJECT_NAME} + INCLUDE_DIRS include) -find_package(ASSIMP) -if( NOT ASSIMP_FOUND ) +include_directories(include) + +find_package(Boost REQUIRED COMPONENTS system) +include_directories(${Boost_INCLUDE_DIR}) + +find_package(assimp QUIET) +if( NOT assimp_FOUND ) + find_package(PkgConfig REQUIRED) pkg_check_modules(ASSIMP assimp) endif() - if( ASSIMP_FOUND ) if( ${ASSIMP_VERSION} STRGREATER "2.0.0" ) set(IS_ASSIMP3 1) @@ -29,14 +32,42 @@ else() set(IS_ASSIMP3 0) # most likely not endif() -rosbuild_add_library(collada_urdf src/collada_urdf.cpp) -rosbuild_link_boost(collada_urdf system) -target_link_libraries(collada_urdf ${ASSIMP_LIBRARIES}) -rosbuild_add_compile_flags(collada_urdf "${ASSIMP_CXX_FLAGS} ${ASSIMP_CFLAGS_OTHER}") -rosbuild_add_link_flags(collada_urdf "${ASSIMP_LINK_FLAGS}") +find_library(tinyxml_library tinyxml) -rosbuild_add_executable(urdf_to_collada src/urdf_to_collada.cpp) -target_link_libraries(urdf_to_collada collada_urdf) +find_package(COLLADA_DOM 2.3 COMPONENTS 1.5) +if( COLLADA_DOM_FOUND ) + include_directories(${COLLADA_DOM_INCLUDE_DIRS}) + link_directories(${COLLADA_DOM_LIBRARY_DIRS}) +endif() -rosbuild_add_gtest(test_collada_writer test/test_collada_urdf.cpp) -target_link_libraries(test_collada_writer collada_urdf) +find_package(urdf) +include_directories(${urdf_INCLUDE_DIRS}) + +find_package(urdfdom) +include_directories(${urdfdom_INCLUDE_DIRS}) + +find_package(collada_parser) +include_directories(${collada_parser_INCLUDE_DIRS}) + +find_package(resource_retriever) +include_directories(${resource_retriever_INCLUDE_DIRS}) + +find_package(geometry_angles_utils) +include_directories(${geometry_angles_utils_INCLUDE_DIRS}) + +add_library(collada_urdf src/collada_urdf.cpp) +target_link_libraries(${PROJECT_NAME} ${tinyxml_library} ${ASSIMP_LIBRARIES} ${collada_parser_LIBRARIES} ${COLLADA_DOM_LIBRARIES} ${urdf_LIBRARIES} ${urdfdom_LIBRARIES} + ${resource_retriever_LIBRARIES} ${geometry_angles_utils_LIBRARIES} ${Boost_LIBRARIES}) +set_target_properties(${PROJECT_NAME} PROPERTIES COMPILER_FLAGS "${ASSIMP_CXX_FLAGS} ${ASSIMP_CFLAGS_OTHER}") +set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "${ASSIMP_LINK_FLAGS}") + +add_executable(urdf_to_collada src/urdf_to_collada.cpp) +target_link_libraries(urdf_to_collada ${PROJECT_NAME}) + +add_gtest(test_collada_writer test/test_collada_urdf.cpp) +target_link_libraries(test_collada_writer ${PROJECT_NAME}) + + +# for compatibility with old build system +install(FILES manifest.xml + DESTINATION share/${PROJECT_NAME}) diff --git a/collada_urdf/src/collada_urdf.cpp b/collada_urdf/src/collada_urdf.cpp index d1c1aa0..29dc88e 100644 --- a/collada_urdf/src/collada_urdf.cpp +++ b/collada_urdf/src/collada_urdf.cpp @@ -52,7 +52,7 @@ #include #include #include -#include +#include #include #include diff --git a/kdl_parser/CMakeLists.txt b/kdl_parser/CMakeLists.txt index 9522229..cf1c9bd 100644 --- a/kdl_parser/CMakeLists.txt +++ b/kdl_parser/CMakeLists.txt @@ -1,37 +1,37 @@ -cmake_minimum_required(VERSION 2.4.6) -include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) +project(kdl_parser) -# Set the build type. Options are: -# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage -# Debug : w/ debug symbols, w/o optimization -# Release : w/o debug symbols, w/ optimization -# RelWithDebInfo : w/ debug symbols, w/ optimization -# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries -#set(ROS_BUILD_TYPE RelWithDebInfo) +catkin_project(${PROJECT_NAME} + LIBRARIES ${PROJECT_NAME} + INCLUDE_DIRS include) -rosbuild_init() +include_directories(include) -rosbuild_add_boost_directories() +find_package(Boost REQUIRED) +include_directories(${Boost_INCLUDE_DIR}) -#set the default path for built executables to the "bin" directory -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) -#set the default path for built libraries to the "lib" directory -set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) +find_library(tinyxml_library tinyxml) -#uncomment if you have defined messages -#rosbuild_genmsg() -#uncomment if you have defined services -#rosbuild_gensrv() +find_package(ROS REQUIRED COMPONENTS roscpp rosconsole) +include_directories(${ROS_INCLUDE_DIRS}) -link_libraries(tinyxml) +find_package(Orocos-KDL REQUIRED) +include_directories(${Orocos-KDL_INCLUDE_DIRS}) +link_directories(${Orocos-KDL_LIBRARY_DIRS}) -rosbuild_add_library(${PROJECT_NAME} src/kdl_parser.cpp) +find_package(urdf) +include_directories(${urdf_INCLUDE_DIRS}) -rosbuild_add_executable(check_kdl_parser src/check_kdl_parser.cpp ) +find_package(collada_parser) +include_directories(${collada_parser_INCLUDE_DIRS}) + +add_library(${PROJECT_NAME} src/kdl_parser.cpp) +target_link_libraries(${PROJECT_NAME} ${tinyxml_library} ${Orocos-KDL_LIBRARIES} ${collada_parser_LIBRARIES} ${urdf_LIBRARIES} ${ROS_LIBRARIES}) + +add_executable(check_kdl_parser src/check_kdl_parser.cpp ) target_link_libraries(check_kdl_parser ${PROJECT_NAME}) -rosbuild_add_executable(test_parser test/test_kdl_parser.cpp ) -target_link_libraries(test_parser ${PROJECT_NAME}) +add_gtest(test_kdl_parser test/test_kdl_parser.cpp ) +target_link_libraries(test_kdl_parser ${PROJECT_NAME}) -rosbuild_add_gtest_build_flags(test_parser) -rosbuild_add_rostest(${PROJECT_SOURCE_DIR}/test/test_kdl_parser.launch) +# How does CATKIN do this? +#rosbuild_add_rostest(${PROJECT_SOURCE_DIR}/test/test_kdl_parser.launch) diff --git a/resource_retriever/CMakeLists.txt b/resource_retriever/CMakeLists.txt index 86b5735..6985a71 100644 --- a/resource_retriever/CMakeLists.txt +++ b/resource_retriever/CMakeLists.txt @@ -1,35 +1,27 @@ -cmake_minimum_required(VERSION 2.4.6) -include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) +project(resource_retriever) -# Set the build type. Options are: -# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage -# Debug : w/ debug symbols, w/o optimization -# Release : w/o debug symbols, w/ optimization -# RelWithDebInfo : w/ debug symbols, w/ optimization -# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries -#set(ROS_BUILD_TYPE RelWithDebInfo) +catkin_project(${PROJECT_NAME} + LIBRARIES ${PROJECT_NAME} + INCLUDE_DIRS include) -rosbuild_init() +include_directories(include) -#set the default path for built executables to the "bin" directory -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) -#set the default path for built libraries to the "lib" directory -set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) - -#uncomment if you have defined messages -#rosbuild_genmsg() -#uncomment if you have defined services -#rosbuild_gensrv() +find_package(ROS REQUIRED COMPONENTS rosconsole roslib) +include_directories(${ROS_INCLUDE_DIRS}) include(FindCURL) - if(NOT CURL_FOUND) -message("CURL not found! Aborting...") -fail() + message("CURL not found! Aborting...") + fail() endif(NOT CURL_FOUND) - include_directories(${CURL_INCLUDE_DIRS}) -rosbuild_add_library(${PROJECT_NAME} src/retriever.cpp) -target_link_libraries(${PROJECT_NAME} ${CURL_LIBRARIES}) + + +add_library(${PROJECT_NAME} src/retriever.cpp) +target_link_libraries(${PROJECT_NAME} ${CURL_LIBRARIES} ${ROS_LIBRARIES}) add_subdirectory(test EXCLUDE_FROM_ALL) + +# for compatibility with old build system +install(FILES manifest.xml + DESTINATION share/${PROJECT_NAME}) diff --git a/resource_retriever/test/CMakeLists.txt b/resource_retriever/test/CMakeLists.txt index f1c0fa6..967e9e2 100644 --- a/resource_retriever/test/CMakeLists.txt +++ b/resource_retriever/test/CMakeLists.txt @@ -1,4 +1,4 @@ set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) -rosbuild_add_gtest(test/utest test.cpp) +add_gtest(test/utest test.cpp) target_link_libraries(test/utest ${PROJECT_NAME}) diff --git a/srdf/CMakeLists.txt b/srdf/CMakeLists.txt new file mode 100644 index 0000000..dea8e14 --- /dev/null +++ b/srdf/CMakeLists.txt @@ -0,0 +1,6 @@ +# for compatibility with old build system +install(FILES manifest.xml + DESTINATION share/srdf) + +install(DIRECTORY include/ + DESTINATION include) diff --git a/stack.xml b/stack.xml index 12df920..fde577e 100644 --- a/stack.xml +++ b/stack.xml @@ -1,4 +1,6 @@ + robot_model + 1.9.0 robot_model contains packages for modeling various aspects of robot information, specified in the Xml Robot @@ -6,14 +8,38 @@ is urdf, which parses URDF files, and constructs an object model (C++) of the robot. - Wim Meeussen, John Hsu, David Lu, Rosen Diankov, Tim Field + Wim Meeussen + John Hsu + David Lu + Ioan Sucan + Rosen Diankov + Tim Field + + Tully Foote BSD,GPL,MIT - + + Willow Garage + + http://ros.org/wiki/robot_model - - - - - + + catkin + common_msgs + orocos_kdl + ros + ros_comm + geometry_angles_utils + rosconsole_bridge + graphviz + geometry + + common_msgs + orocos_kdl + ros + ros_comm + geometry_angles_utils + rosconsole_bridge + graphviz + geometry diff --git a/urdf/CMakeLists.txt b/urdf/CMakeLists.txt index 9a0cee6..1a854f0 100644 --- a/urdf/CMakeLists.txt +++ b/urdf/CMakeLists.txt @@ -1,47 +1,45 @@ -cmake_minimum_required(VERSION 2.4.6) -include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) +project(urdf) -# Set the build type. Options are: -# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage -# Debug : w/ debug symbols, w/o optimization -# Release : w/o debug symbols, w/ optimization -# RelWithDebInfo : w/ debug symbols, w/ optimization -# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries -set(ROS_BUILD_TYPE Debug) +catkin_project(${PROJECT_NAME} + LIBRARIES ${PROJECT_NAME} + INCLUDE_DIRS include) -rosbuild_init() - -#set the default path for built executables to the "bin" directory -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) -#set the default path for built libraries to the "lib" directory -set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) - -#uncomment if you have defined messages -#rosbuild_genmsg() - -rosbuild_gensrv() +include_directories(include) find_package(urdfdom REQUIRED) include_directories(${urdfdom_INCLUDE_DIRS}) +link_directories(${urdfdom_LIBRARY_DIRS}) + +find_package(collada_parser REQUIRED) +include_directories(${collada_parser_INCLUDE_DIRS}) +link_directories(${collada_parser_LIBRARY_DIRS}) find_package(rosconsole_bridge REQUIRED) include_directories(${rosconsole_bridge_INCLUDE_DIRS}) +link_directories(${rosconsole_bridge_LIBRARY_DIRS}) -rosbuild_add_library(${PROJECT_NAME} src/model.cpp src/rosconsole_bridge.cpp) -target_link_libraries(${PROJECT_NAME} ${urdfdom_LIBRARIES} ${rosconsole_bridge_LIBRARIES}) +find_package(ROS REQUIRED COMPONENTS roscpp rosconsole rostime) +include_directories(${ROS_INCLUDE_DIRS}) + +add_library(${PROJECT_NAME} src/model.cpp src/rosconsole_bridge.cpp) +target_link_libraries(${PROJECT_NAME} ${urdfdom_LIBRARIES} ${collada_parser_LIBRARIES} ${rosconsole_bridge_LIBRARIES} ${ROS_LIBRARIES}) if(APPLE) set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") endif(APPLE) -rosbuild_add_executable(check_urdf src/check_urdf.cpp) +add_executable(check_urdf src/check_urdf.cpp) target_link_libraries(check_urdf ${PROJECT_NAME}) -rosbuild_add_executable(urdf_to_graphiz src/urdf_to_graphiz.cpp) +add_executable(urdf_to_graphiz src/urdf_to_graphiz.cpp) target_link_libraries(urdf_to_graphiz ${PROJECT_NAME}) -rosbuild_add_executable(test_parser EXCLUDE_FROM_ALL test/test_robot_model_parser.cpp) +add_gtest(test_parser EXCLUDE_FROM_ALL test/test_robot_model_parser.cpp) target_link_libraries(test_parser ${PROJECT_NAME}) -rosbuild_add_gtest_build_flags(test_parser) -rosbuild_add_rostest(${PROJECT_SOURCE_DIR}/test/test_robot_model_parser.launch) +# no idea how CATKIN does this +# rosbuild_add_rostest(${PROJECT_SOURCE_DIR}/test/test_robot_model_parser.launch) + +# for compatibility with old build system +install(FILES manifest.xml + DESTINATION share/${PROJECT_NAME}) diff --git a/urdf_interface/CMakeLists.txt b/urdf_interface/CMakeLists.txt new file mode 100644 index 0000000..52e058f --- /dev/null +++ b/urdf_interface/CMakeLists.txt @@ -0,0 +1,6 @@ +# for compatibility with old build system +install(FILES manifest.xml + DESTINATION share/urdf_interface) + +install(DIRECTORY include/ + DESTINATION include) diff --git a/urdf_parser/CMakeLists.txt b/urdf_parser/CMakeLists.txt new file mode 100644 index 0000000..9afc738 --- /dev/null +++ b/urdf_parser/CMakeLists.txt @@ -0,0 +1,3 @@ +# for compatibility with old build system +install(FILES manifest.xml + DESTINATION share/urdf_parser)