pax_global_header00006660000000000000000000000064121601353600014507gustar00rootroot0000000000000052 comment=7fc4621e73ce0e6adb84f45157eae2f42e23ef93 urdfdom_headers-0.2.3/000077500000000000000000000000001216013536000146445ustar00rootroot00000000000000urdfdom_headers-0.2.3/CMakeLists.txt000066400000000000000000000025061216013536000174070ustar00rootroot00000000000000cmake_minimum_required( VERSION 2.8 FATAL_ERROR ) project (urdfdom_headers) set (URDF_MAJOR_VERSION 0) set (URDF_MINOR_VERSION 2) set (URDF_PATCH_VERSION 3) set (URDF_VERSION ${URDF_MAJOR_VERSION}.${URDF_MINOR_VERSION}.${URDF_PATCH_VERSION}) message (STATUS "${PROJECT_NAME} version ${URDF_VERSION}") # This shouldn't be necessary, but there has been trouble # with MSVC being set off, but MSVCXX ON. if(MSVC OR MSVC90 OR MSVC10) set(MSVC ON) endif (MSVC OR MSVC90 OR MSVC10) add_subdirectory(urdf_sensor) add_subdirectory(urdf_model) add_subdirectory(urdf_model_state) add_subdirectory(urdf_world) add_subdirectory(urdf_exception) set(PACKAGE_NAME ${PROJECT_NAME}) set(cmake_conf_file "${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake") configure_file("${cmake_conf_file}.in" "${cmake_conf_file}" @ONLY) install(FILES ${cmake_conf_file} DESTINATION share/${PROJECT_NAME}/cmake/ COMPONENT cmake) # Make the package config file if (NOT MSVC) set(PACKAGE_DESC "Unified Robot Description Format") set(pkg_conf_file "${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkgconfig/urdfdom_headers.pc") configure_file("${pkg_conf_file}.in" "${pkg_conf_file}" @ONLY) install(FILES ${pkg_conf_file} DESTINATION lib/pkgconfig/ COMPONENT pkgconfig) endif() message(STATUS "Configuration successful. Type make install to install urdfdom_headers.") urdfdom_headers-0.2.3/LICENSE000066400000000000000000000033561216013536000156600ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ urdfdom_headers-0.2.3/README.txt000066400000000000000000000002661216013536000163460ustar00rootroot00000000000000The URDF (U-Robot Description Format) headers provides core data structure headers for URDF. For now, the details of the URDF specifications reside on http://ros.org/wiki/urdf urdfdom_headers-0.2.3/cmake/000077500000000000000000000000001216013536000157245ustar00rootroot00000000000000urdfdom_headers-0.2.3/cmake/pkgconfig/000077500000000000000000000000001216013536000176735ustar00rootroot00000000000000urdfdom_headers-0.2.3/cmake/pkgconfig/urdfdom_headers.pc.in000066400000000000000000000003631216013536000237610ustar00rootroot00000000000000# This file was generated by CMake for @PROJECT_NAME@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} includedir=${prefix}/include Name: @PACKAGE_NAME@ Description: @PACKAGE_DESC@ Version: @URDF_VERSION@ Requires: Cflags: -I${includedir} urdfdom_headers-0.2.3/cmake/urdfdom_headers-config.cmake.in000066400000000000000000000002411216013536000237260ustar00rootroot00000000000000if (@PACKAGE_NAME@_CONFIG_INCLUDED) return() endif() set(@PACKAGE_NAME@_CONFIG_INCLUDED TRUE) set(@PACKAGE_NAME@_INCLUDE_DIRS @CMAKE_INSTALL_PREFIX@/include) urdfdom_headers-0.2.3/urdf_exception/000077500000000000000000000000001216013536000176625ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_exception/CMakeLists.txt000066400000000000000000000000761216013536000224250ustar00rootroot00000000000000INSTALL(DIRECTORY include/urdf_exception DESTINATION include) urdfdom_headers-0.2.3/urdf_exception/include/000077500000000000000000000000001216013536000213055ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_exception/include/urdf_exception/000077500000000000000000000000001216013536000243235ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_exception/include/urdf_exception/exception.h000066400000000000000000000040301216013536000264670ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ // URDF exceptions #ifndef URDF_INTERFACE_EXCEPTION_H_ #define URDF_INTERFACE_EXCEPTION_H_ #include #include namespace urdf { class ParseError: public std::runtime_error { public: ParseError(const std::string &error_msg) : std::runtime_error(error_msg) {}; }; } #endif urdfdom_headers-0.2.3/urdf_model/000077500000000000000000000000001216013536000167645ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_model/CMakeLists.txt000066400000000000000000000000721216013536000215230ustar00rootroot00000000000000INSTALL(DIRECTORY include/urdf_model DESTINATION include) urdfdom_headers-0.2.3/urdf_model/include/000077500000000000000000000000001216013536000204075ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_model/include/urdf_model/000077500000000000000000000000001216013536000225275ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_model/include/urdf_model/color.h000066400000000000000000000054371216013536000240270ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: Josh Faust */ #ifndef URDF_INTERFACE_COLOR_H #define URDF_INTERFACE_COLOR_H #include #include #include #include #include namespace urdf { class Color { public: Color() {this->clear();}; float r; float g; float b; float a; void clear() { r = g = b = 0.0f; a = 1.0f; } bool init(const std::string &vector_str) { this->clear(); std::vector pieces; std::vector rgba; boost::split( pieces, vector_str, boost::is_any_of(" ")); for (unsigned int i = 0; i < pieces.size(); ++i) { if (!pieces[i].empty()) { try { rgba.push_back(boost::lexical_cast(pieces[i].c_str())); } catch (boost::bad_lexical_cast &e) { return false; } } } if (rgba.size() != 4) { return false; } this->r = rgba[0]; this->g = rgba[1]; this->b = rgba[2]; this->a = rgba[3]; return true; }; }; } #endif urdfdom_headers-0.2.3/urdf_model/include/urdf_model/joint.h000066400000000000000000000145561216013536000240360ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: Wim Meeussen */ #ifndef URDF_INTERFACE_JOINT_H #define URDF_INTERFACE_JOINT_H #include #include #include #include "urdf_model/pose.h" namespace urdf{ class Link; class JointDynamics { public: JointDynamics() { this->clear(); }; double damping; double friction; void clear() { damping = 0; friction = 0; }; }; class JointLimits { public: JointLimits() { this->clear(); }; double lower; double upper; double effort; double velocity; void clear() { lower = 0; upper = 0; effort = 0; velocity = 0; }; }; /// \brief Parameters for Joint Safety Controllers class JointSafety { public: /// clear variables on construction JointSafety() { this->clear(); }; /// /// IMPORTANT: The safety controller support is very much PR2 specific, not intended for generic usage. /// /// Basic safety controller operation is as follows /// /// current safety controllers will take effect on joints outside the position range below: /// /// position range: [JointSafety::soft_lower_limit + JointLimits::velocity / JointSafety::k_position, /// JointSafety::soft_uppper_limit - JointLimits::velocity / JointSafety::k_position] /// /// if (joint_position is outside of the position range above) /// velocity_limit_min = -JointLimits::velocity + JointSafety::k_position * (joint_position - JointSafety::soft_lower_limit) /// velocity_limit_max = JointLimits::velocity + JointSafety::k_position * (joint_position - JointSafety::soft_upper_limit) /// else /// velocity_limit_min = -JointLimits::velocity /// velocity_limit_max = JointLimits::velocity /// /// velocity range: [velocity_limit_min + JointLimits::effort / JointSafety::k_velocity, /// velocity_limit_max - JointLimits::effort / JointSafety::k_velocity] /// /// if (joint_velocity is outside of the velocity range above) /// effort_limit_min = -JointLimits::effort + JointSafety::k_velocity * (joint_velocity - velocity_limit_min) /// effort_limit_max = JointLimits::effort + JointSafety::k_velocity * (joint_velocity - velocity_limit_max) /// else /// effort_limit_min = -JointLimits::effort /// effort_limit_max = JointLimits::effort /// /// Final effort command sent to the joint is saturated by [effort_limit_min,effort_limit_max] /// /// Please see wiki for more details: http://www.ros.org/wiki/pr2_controller_manager/safety_limits /// double soft_upper_limit; double soft_lower_limit; double k_position; double k_velocity; void clear() { soft_upper_limit = 0; soft_lower_limit = 0; k_position = 0; k_velocity = 0; }; }; class JointCalibration { public: JointCalibration() { this->clear(); }; double reference_position; boost::shared_ptr rising, falling; void clear() { reference_position = 0; }; }; class JointMimic { public: JointMimic() { this->clear(); }; double offset; double multiplier; std::string joint_name; void clear() { offset = 0.0; multiplier = 0.0; joint_name.clear(); }; }; class Joint { public: Joint() { this->clear(); }; std::string name; enum { UNKNOWN, REVOLUTE, CONTINUOUS, PRISMATIC, FLOATING, PLANAR, FIXED } type; /// \brief type_ meaning of axis_ /// ------------------------------------------------------ /// UNKNOWN unknown type /// REVOLUTE rotation axis /// PRISMATIC translation axis /// FLOATING N/A /// PLANAR plane normal axis /// FIXED N/A Vector3 axis; /// child Link element /// child link frame is the same as the Joint frame std::string child_link_name; /// parent Link element /// origin specifies the transform from Parent Link to Joint Frame std::string parent_link_name; /// transform from Parent Link frame to Joint frame Pose parent_to_joint_origin_transform; /// Joint Dynamics boost::shared_ptr dynamics; /// Joint Limits boost::shared_ptr limits; /// Unsupported Hidden Feature boost::shared_ptr safety; /// Unsupported Hidden Feature boost::shared_ptr calibration; /// Option to Mimic another Joint boost::shared_ptr mimic; void clear() { this->axis.clear(); this->child_link_name.clear(); this->parent_link_name.clear(); this->parent_to_joint_origin_transform.clear(); this->dynamics.reset(); this->limits.reset(); this->safety.reset(); this->calibration.reset(); this->type = UNKNOWN; }; }; } #endif urdfdom_headers-0.2.3/urdf_model/include/urdf_model/link.h000066400000000000000000000154321216013536000236420ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: Wim Meeussen */ #ifndef URDF_INTERFACE_LINK_H #define URDF_INTERFACE_LINK_H #include #include #include #include #include #include "joint.h" #include "color.h" namespace urdf{ class Geometry { public: enum {SPHERE, BOX, CYLINDER, MESH} type; virtual ~Geometry(void) { } }; class Sphere : public Geometry { public: Sphere() { this->clear(); }; double radius; void clear() { radius = 0; }; }; class Box : public Geometry { public: Box() { this->clear(); }; Vector3 dim; void clear() { this->dim.clear(); }; }; class Cylinder : public Geometry { public: Cylinder() { this->clear(); }; double length; double radius; void clear() { length = 0; radius = 0; }; }; class Mesh : public Geometry { public: Mesh() { this->clear(); }; std::string filename; Vector3 scale; void clear() { filename.clear(); // default scale scale.x = 1; scale.y = 1; scale.z = 1; }; }; class Material { public: Material() { this->clear(); }; std::string name; std::string texture_filename; Color color; void clear() { color.clear(); texture_filename.clear(); name.clear(); }; }; class Inertial { public: Inertial() { this->clear(); }; Pose origin; double mass; double ixx,ixy,ixz,iyy,iyz,izz; void clear() { origin.clear(); mass = 0; ixx = ixy = ixz = iyy = iyz = izz = 0; }; }; class Visual { public: Visual() { this->clear(); }; Pose origin; boost::shared_ptr geometry; std::string material_name; boost::shared_ptr material; void clear() { origin.clear(); material_name.clear(); material.reset(); geometry.reset(); group_name.clear(); }; // this is actually deprecated, but too many warnings are generated // __attribute__((deprecated)) std::string group_name; }; class Collision { public: Collision() { this->clear(); }; Pose origin; boost::shared_ptr geometry; void clear() { origin.clear(); geometry.reset(); group_name.clear(); }; // this is actually deprecated, but too many warnings are generated // __attribute__((deprecated)) std::string group_name; }; class Link { public: Link() { this->clear(); }; std::string name; /// inertial element boost::shared_ptr inertial; /// visual element boost::shared_ptr visual; /// collision element boost::shared_ptr collision; /// if more than one collision element is specified, all collision elements are placed in this array (the collision member will be NULL) std::vector > collision_array; /// if more than one visual element is specified, all visual elements are placed in this array (the visual member will be NULL) std::vector > visual_array; /// deprecated; please use visual_array instead // this is actually deprecated, but too many warnings are generated // __attribute__((deprecated)) std::map > > > visual_groups; /// deprecated; please use collision_array instead // this is actually deprecated, but too many warnings are generated // __attribute__((deprecated)) std::map > > > collision_groups; /// Parent Joint element /// explicitly stating "parent" because we want directional-ness for tree structure /// every link can have one parent boost::shared_ptr parent_joint; std::vector > child_joints; std::vector > child_links; boost::shared_ptr getParent() const {return parent_link_.lock();}; void setParent(const boost::shared_ptr &parent) { parent_link_ = parent; } void clear() { this->name.clear(); this->inertial.reset(); this->visual.reset(); this->collision.reset(); this->parent_joint.reset(); this->child_joints.clear(); this->child_links.clear(); this->collision_array.clear(); this->visual_array.clear(); this->collision_groups.clear(); this->visual_groups.clear(); }; // please use visual_array member instead __attribute__((deprecated)) boost::shared_ptr > > getVisuals(const std::string& group_name) const { if (this->visual_groups.find(group_name) != this->visual_groups.end()) return this->visual_groups.at(group_name); return boost::shared_ptr > >(); } // please use collision_array member instead __attribute__((deprecated)) boost::shared_ptr > > getCollisions(const std::string& group_name) const { if (this->collision_groups.find(group_name) != this->collision_groups.end()) return this->collision_groups.at(group_name); return boost::shared_ptr > >(); } private: boost::weak_ptr parent_link_; }; } #endif urdfdom_headers-0.2.3/urdf_model/include/urdf_model/model.h000066400000000000000000000160111216013536000237770ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: Wim Meeussen */ #ifndef URDF_INTERFACE_MODEL_H #define URDF_INTERFACE_MODEL_H #include #include #include #include #include namespace urdf { class ModelInterface { public: boost::shared_ptr getRoot(void) const{return this->root_link_;}; boost::shared_ptr getLink(const std::string& name) const { boost::shared_ptr ptr; if (this->links_.find(name) == this->links_.end()) ptr.reset(); else ptr = this->links_.find(name)->second; return ptr; }; boost::shared_ptr getJoint(const std::string& name) const { boost::shared_ptr ptr; if (this->joints_.find(name) == this->joints_.end()) ptr.reset(); else ptr = this->joints_.find(name)->second; return ptr; }; const std::string& getName() const {return name_;}; void getLinks(std::vector >& links) const { for (std::map >::const_iterator link = this->links_.begin();link != this->links_.end(); link++) { links.push_back(link->second); } }; void clear() { name_.clear(); this->links_.clear(); this->joints_.clear(); this->materials_.clear(); this->root_link_.reset(); }; /// non-const getLink() void getLink(const std::string& name,boost::shared_ptr &link) const { boost::shared_ptr ptr; if (this->links_.find(name) == this->links_.end()) ptr.reset(); else ptr = this->links_.find(name)->second; link = ptr; }; /// non-const getMaterial() boost::shared_ptr getMaterial(const std::string& name) const { boost::shared_ptr ptr; if (this->materials_.find(name) == this->materials_.end()) ptr.reset(); else ptr = this->materials_.find(name)->second; return ptr; }; void initTree(std::map &parent_link_tree) { // loop through all joints, for every link, assign children links and children joints for (std::map >::iterator joint = this->joints_.begin();joint != this->joints_.end(); joint++) { std::string parent_link_name = joint->second->parent_link_name; std::string child_link_name = joint->second->child_link_name; if (parent_link_name.empty() || child_link_name.empty()) { throw ParseError("Joint [" + joint->second->name + "] is missing a parent and/or child link specification."); } else { // find child and parent links boost::shared_ptr child_link, parent_link; this->getLink(child_link_name, child_link); if (!child_link) { throw ParseError("child link [" + child_link_name + "] of joint [" + joint->first + "] not found"); } this->getLink(parent_link_name, parent_link); if (!parent_link) { throw ParseError("parent link [" + parent_link_name + "] of joint [" + joint->first + "] not found. This is not valid according to the URDF spec. Every link you refer to from a joint needs to be explicitly defined in the robot description. To fix this problem you can either remove this joint [" + joint->first + "] from your urdf file, or add \"\" to your urdf file."); } //set parent link for child link child_link->setParent(parent_link); //set parent joint for child link child_link->parent_joint = joint->second; //set child joint for parent link parent_link->child_joints.push_back(joint->second); //set child link for parent link parent_link->child_links.push_back(child_link); // fill in child/parent string map parent_link_tree[child_link->name] = parent_link_name; } } } void initRoot(const std::map &parent_link_tree) { this->root_link_.reset(); // find the links that have no parent in the tree for (std::map >::const_iterator l=this->links_.begin(); l!=this->links_.end(); l++) { std::map::const_iterator parent = parent_link_tree.find(l->first); if (parent == parent_link_tree.end()) { // store root link if (!this->root_link_) { getLink(l->first, this->root_link_); } // we already found a root link else { throw ParseError("Two root links found: [" + this->root_link_->name + "] and [" + l->first + "]"); } } } if (!this->root_link_) { throw ParseError("No root link found. The robot xml is not a valid tree."); } } /// \brief complete list of Links std::map > links_; /// \brief complete list of Joints std::map > joints_; /// \brief complete list of Materials std::map > materials_; /// \brief The name of the robot model std::string name_; /// \brief The root is always a link (the parent of the tree describing the robot) boost::shared_ptr root_link_; }; } #endif urdfdom_headers-0.2.3/urdf_model/include/urdf_model/pose.h000066400000000000000000000152101216013536000236450ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: Wim Meeussen */ #ifndef URDF_INTERFACE_POSE_H #define URDF_INTERFACE_POSE_H #include #include #include #include #include #include #include namespace urdf{ class Vector3 { public: Vector3(double _x,double _y, double _z) {this->x=_x;this->y=_y;this->z=_z;}; Vector3() {this->clear();}; double x; double y; double z; void clear() {this->x=this->y=this->z=0.0;}; void init(const std::string &vector_str) { this->clear(); std::vector pieces; std::vector xyz; boost::split( pieces, vector_str, boost::is_any_of(" ")); for (unsigned int i = 0; i < pieces.size(); ++i){ if (pieces[i] != ""){ try { xyz.push_back(boost::lexical_cast(pieces[i].c_str())); } catch (boost::bad_lexical_cast &e) { throw ParseError("Unable to parse component [" + pieces[i] + "] to a double (while parsing a vector value)"); } } } if (xyz.size() != 3) throw ParseError("Parser found " + boost::lexical_cast(xyz.size()) + " elements but 3 expected while parsing vector [" + vector_str + "]"); this->x = xyz[0]; this->y = xyz[1]; this->z = xyz[2]; } Vector3 operator+(Vector3 vec) { return Vector3(this->x+vec.x,this->y+vec.y,this->z+vec.z); }; }; class Rotation { public: Rotation(double _x,double _y, double _z, double _w) {this->x=_x;this->y=_y;this->z=_z;this->w=_w;}; Rotation() {this->clear();}; void getQuaternion(double &quat_x,double &quat_y,double &quat_z, double &quat_w) const { quat_x = this->x; quat_y = this->y; quat_z = this->z; quat_w = this->w; }; void getRPY(double &roll,double &pitch,double &yaw) const { double sqw; double sqx; double sqy; double sqz; sqx = this->x * this->x; sqy = this->y * this->y; sqz = this->z * this->z; sqw = this->w * this->w; roll = atan2(2 * (this->y*this->z + this->w*this->x), sqw - sqx - sqy + sqz); double sarg = -2 * (this->x*this->z - this->w*this->y); pitch = sarg <= -1.0 ? -0.5*M_PI : (sarg >= 1.0 ? 0.5*M_PI : asin(sarg)); yaw = atan2(2 * (this->x*this->y + this->w*this->z), sqw + sqx - sqy - sqz); }; void setFromQuaternion(double quat_x,double quat_y,double quat_z,double quat_w) { this->x = quat_x; this->y = quat_y; this->z = quat_z; this->w = quat_w; this->normalize(); }; void setFromRPY(double roll, double pitch, double yaw) { double phi, the, psi; phi = roll / 2.0; the = pitch / 2.0; psi = yaw / 2.0; this->x = sin(phi) * cos(the) * cos(psi) - cos(phi) * sin(the) * sin(psi); this->y = cos(phi) * sin(the) * cos(psi) + sin(phi) * cos(the) * sin(psi); this->z = cos(phi) * cos(the) * sin(psi) - sin(phi) * sin(the) * cos(psi); this->w = cos(phi) * cos(the) * cos(psi) + sin(phi) * sin(the) * sin(psi); this->normalize(); }; double x,y,z,w; void init(const std::string &rotation_str) { this->clear(); Vector3 rpy; rpy.init(rotation_str); setFromRPY(rpy.x, rpy.y, rpy.z); } void clear() { this->x=this->y=this->z=0.0;this->w=1.0; } void normalize() { double s = sqrt(this->x * this->x + this->y * this->y + this->z * this->z + this->w * this->w); if (s == 0.0) { this->x = 0.0; this->y = 0.0; this->z = 0.0; this->w = 1.0; } else { this->x /= s; this->y /= s; this->z /= s; this->w /= s; } }; // Multiplication operator (copied from gazebo) Rotation operator*( const Rotation &qt ) const { Rotation c; c.x = this->w * qt.x + this->x * qt.w + this->y * qt.z - this->z * qt.y; c.y = this->w * qt.y - this->x * qt.z + this->y * qt.w + this->z * qt.x; c.z = this->w * qt.z + this->x * qt.y - this->y * qt.x + this->z * qt.w; c.w = this->w * qt.w - this->x * qt.x - this->y * qt.y - this->z * qt.z; return c; }; /// Rotate a vector using the quaternion Vector3 operator*(Vector3 vec) const { Rotation tmp; Vector3 result; tmp.w = 0.0; tmp.x = vec.x; tmp.y = vec.y; tmp.z = vec.z; tmp = (*this) * (tmp * this->GetInverse()); result.x = tmp.x; result.y = tmp.y; result.z = tmp.z; return result; }; // Get the inverse of this quaternion Rotation GetInverse() const { Rotation q; double norm = this->w*this->w+this->x*this->x+this->y*this->y+this->z*this->z; if (norm > 0.0) { q.w = this->w / norm; q.x = -this->x / norm; q.y = -this->y / norm; q.z = -this->z / norm; } return q; }; }; class Pose { public: Pose() { this->clear(); }; Vector3 position; Rotation rotation; void clear() { this->position.clear(); this->rotation.clear(); }; }; } #endif urdfdom_headers-0.2.3/urdf_model/include/urdf_model/twist.h000066400000000000000000000042261216013536000240560ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: John Hsu */ #ifndef URDF_TWIST_H #define URDF_TWIST_H #include #include #include #include #include namespace urdf{ class Twist { public: Twist() { this->clear(); }; Vector3 linear; // Angular velocity represented by Euler angles Vector3 angular; void clear() { this->linear.clear(); this->angular.clear(); }; }; } #endif urdfdom_headers-0.2.3/urdf_model_state/000077500000000000000000000000001216013536000201645ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_model_state/CMakeLists.txt000066400000000000000000000001001216013536000227130ustar00rootroot00000000000000INSTALL(DIRECTORY include/urdf_model_state DESTINATION include) urdfdom_headers-0.2.3/urdf_model_state/include/000077500000000000000000000000001216013536000216075ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_model_state/include/urdf_model_state/000077500000000000000000000000001216013536000251275ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_model_state/include/urdf_model_state/model_state.h000066400000000000000000000065361216013536000276120ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: John Hsu */ #ifndef URDF_MODEL_STATE_H #define URDF_MODEL_STATE_H #include #include #include #include #include #include "urdf_model/pose.h" #include namespace urdf{ class Time { public: Time() { this->clear(); }; void set(double _seconds) { this->sec = (int32_t)(floor(_seconds)); this->nsec = (int32_t)(round((_seconds - this->sec) * 1e9)); this->Correct(); }; operator double () { return (static_cast(this->sec) + static_cast(this->nsec)*1e-9); }; int32_t sec; int32_t nsec; void clear() { this->sec = 0; this->nsec = 0; }; private: void Correct() { // Make any corrections if (this->nsec >= 1e9) { this->sec++; this->nsec = (int32_t)(this->nsec - 1e9); } else if (this->nsec < 0) { this->sec--; this->nsec = (int32_t)(this->nsec + 1e9); } }; }; class JointState { public: JointState() { this->clear(); }; /// joint name std::string joint; std::vector position; std::vector velocity; std::vector effort; void clear() { this->joint.clear(); this->position.clear(); this->velocity.clear(); this->effort.clear(); } }; class ModelState { public: ModelState() { this->clear(); }; /// state name must be unique std::string name; Time time_stamp; void clear() { this->name.clear(); this->time_stamp.set(0); this->joint_states.clear(); }; std::vector > joint_states; }; } #endif urdfdom_headers-0.2.3/urdf_model_state/include/urdf_model_state/twist.h000066400000000000000000000036131216013536000264550ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ #ifndef URDF_MODEL_STATE_TWIST_ #define URDF_MODEL_STATE_TWIST_ #warning "Please Use #include " #include #endif urdfdom_headers-0.2.3/urdf_sensor/000077500000000000000000000000001216013536000171755ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_sensor/CMakeLists.txt000066400000000000000000000000731216013536000217350ustar00rootroot00000000000000INSTALL(DIRECTORY include/urdf_sensor DESTINATION include) urdfdom_headers-0.2.3/urdf_sensor/include/000077500000000000000000000000001216013536000206205ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_sensor/include/urdf_sensor/000077500000000000000000000000001216013536000231515ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_sensor/include/urdf_sensor/sensor.h000066400000000000000000000107231216013536000246360ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: John Hsu */ /* example 1.5708 */ #ifndef URDF_SENSOR_H #define URDF_SENSOR_H #include #include #include #include #include #include "urdf_model/pose.h" #include "urdf_model/joint.h" #include "urdf_model/link.h" namespace urdf{ class VisualSensor { public: enum {CAMERA, RAY} type; virtual ~VisualSensor(void) { } }; class Camera : public VisualSensor { public: Camera() { this->clear(); }; unsigned int width, height; /// format is optional: defaults to R8G8B8), but can be /// (L8|R8G8B8|B8G8R8|BAYER_RGGB8|BAYER_BGGR8|BAYER_GBRG8|BAYER_GRBG8) std::string format; double hfov; double near; double far; void clear() { hfov = 0; width = 0; height = 0; format.clear(); near = 0; far = 0; }; }; class Ray : public VisualSensor { public: Ray() { this->clear(); }; unsigned int horizontal_samples; double horizontal_resolution; double horizontal_min_angle; double horizontal_max_angle; unsigned int vertical_samples; double vertical_resolution; double vertical_min_angle; double vertical_max_angle; void clear() { // set defaults horizontal_samples = 1; horizontal_resolution = 1; horizontal_min_angle = 0; horizontal_max_angle = 0; vertical_samples = 1; vertical_resolution = 1; vertical_min_angle = 0; vertical_max_angle = 0; }; }; class Sensor { public: Sensor() { this->clear(); }; /// sensor name must be unique std::string name; /// update rate in Hz double update_rate; /// transform from parent frame to optical center /// with z-forward and x-right, y-down Pose origin; /// sensor boost::shared_ptr sensor; /// Parent link element name. A pointer is stored in parent_link_. std::string parent_link_name; boost::shared_ptr getParent() const {return parent_link_.lock();}; void setParent(boost::shared_ptr parent) { this->parent_link_ = parent; } void clear() { this->name.clear(); this->sensor.reset(); this->parent_link_name.clear(); this->parent_link_.reset(); }; private: boost::weak_ptr parent_link_; }; } #endif urdfdom_headers-0.2.3/urdf_world/000077500000000000000000000000001216013536000170135ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_world/CMakeLists.txt000066400000000000000000000000721216013536000215520ustar00rootroot00000000000000INSTALL(DIRECTORY include/urdf_world DESTINATION include) urdfdom_headers-0.2.3/urdf_world/include/000077500000000000000000000000001216013536000204365ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_world/include/urdf_world/000077500000000000000000000000001216013536000226055ustar00rootroot00000000000000urdfdom_headers-0.2.3/urdf_world/include/urdf_world/world.h000066400000000000000000000062261216013536000241130ustar00rootroot00000000000000/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2008, Willow Garage, Inc. * 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. *********************************************************************/ /* Author: John Hsu */ /* encapsulates components in a world see http://ros.org/wiki/usdf/XML/urdf_world and for details */ /* example world XML ... */ #ifndef USDF_STATE_H #define USDF_STATE_H #include #include #include #include #include #include #include "urdf_model/model.h" #include "urdf_model/pose.h" #include "urdf_model/twist.h" namespace urdf{ class Entity { public: boost::shared_ptr model; Pose origin; Twist twist; }; class World { public: World() { this->clear(); }; /// world name must be unique std::string name; std::vector models; void initXml(TiXmlElement* config); void clear() { this->name.clear(); }; }; } #endif