diff --git a/urdf/CMakeLists.txt b/urdf/CMakeLists.txt index 586eb0f..e65181f 100644 --- a/urdf/CMakeLists.txt +++ b/urdf/CMakeLists.txt @@ -10,12 +10,25 @@ find_package(catkin REQUIRED COMPONENTS find_package(TinyXML REQUIRED) +if("${urdfdom_headers_VERSION}" VERSION_LESS "1.0") + # for Wily: maintain compatibility between urdfdom 0.3 and 0.4 (definining SharedPtr types) + set(URDFDOM_DECLARE_TYPES 1) +else() + # declare ModelInterface's SharedPtr + set(URDFDOM_DECLARE_TYPES 0) +endif() +set(generated_compat_header "${CATKIN_DEVEL_PREFIX}/include/${PROJECT_NAME}/urdfdom_compatibility.h") +include_directories("${CATKIN_DEVEL_PREFIX}/include") +configure_file(urdfdom_compatibility.h.in "${generated_compat_header}" @ONLY) + catkin_package( LIBRARIES ${PROJECT_NAME} - INCLUDE_DIRS include ${TinyXML_INLCLUDE_DIRS} + INCLUDE_DIRS include ${TinyXML_INLCLUDE_DIRS} ${CATKIN_DEVEL_PREFIX}/include CATKIN_DEPENDS rosconsole_bridge roscpp DEPENDS urdfdom_headers urdfdom Boost ) +install(FILES ${generated_compat_header} DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}) + include_directories( include diff --git a/urdf/include/urdf/model.h b/urdf/include/urdf/model.h index 17a69e4..f9e676a 100644 --- a/urdf/include/urdf/model.h +++ b/urdf/include/urdf/model.h @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include diff --git a/urdf/urdfdom_compatibility.h.in b/urdf/urdfdom_compatibility.h.in new file mode 100644 index 0000000..eddbc38 --- /dev/null +++ b/urdf/urdfdom_compatibility.h.in @@ -0,0 +1,84 @@ +/********************************************************************* +* Software License Agreement (BSD License) +* +* Copyright (c) 2016, CITEC, Bielefeld University +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following +* disclaimer in the documentation and/or other materials provided +* with the distribution. +* * Neither the name of the Willow Garage nor the names of its +* contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +*********************************************************************/ + +/* Robert Haschke */ + +#ifndef URDF_URDFDOM_COMPATIBILITY_ +#define URDF_URDFDOM_COMPATIBILITY_ + +#if @URDFDOM_DECLARE_TYPES@ // This is needed for urdfdom <= 0.4 + +#include +#include + +#define URDF_TYPEDEF_CLASS_POINTER(Class) \ +class Class; \ +typedef boost::shared_ptr Class##SharedPtr; \ +typedef boost::shared_ptr Class##ConstSharedPtr; \ +typedef boost::weak_ptr Class##WeakPtr + +namespace urdf { +URDF_TYPEDEF_CLASS_POINTER(Box); +URDF_TYPEDEF_CLASS_POINTER(Collision); +URDF_TYPEDEF_CLASS_POINTER(Cylinder); +URDF_TYPEDEF_CLASS_POINTER(Geometry); +URDF_TYPEDEF_CLASS_POINTER(Inertial); + +URDF_TYPEDEF_CLASS_POINTER(Joint); +URDF_TYPEDEF_CLASS_POINTER(JointCalibration); +URDF_TYPEDEF_CLASS_POINTER(JointDynamics); +URDF_TYPEDEF_CLASS_POINTER(JointLimits); +URDF_TYPEDEF_CLASS_POINTER(JointMimic); +URDF_TYPEDEF_CLASS_POINTER(JointSafety); + +URDF_TYPEDEF_CLASS_POINTER(Link); +URDF_TYPEDEF_CLASS_POINTER(Material); +URDF_TYPEDEF_CLASS_POINTER(Mesh); +URDF_TYPEDEF_CLASS_POINTER(Sphere); +URDF_TYPEDEF_CLASS_POINTER(Visual); + +URDF_TYPEDEF_CLASS_POINTER(ModelInterface); +} + +#undef URDF_TYPEDEF_CLASS_POINTER + +#else // urdfdom <= 0.4 + +typedef std::shared_ptr ModelInterfaceSharedPtr; +typedef std::shared_ptr ModelInterfaceConstSharedPtr; +typedef std::weak_ptr ModelInterfaceWeakPtr; + +#endif // urdfdom > 0.4 + +#endif // URDF_URDFDOM_COMPATIBILITY_