## repository: https://kforge.ros.org/robotmodel/robot_model <> <> == Semantic Robot Description Format (SRDF) == Proposer: '''Sachin Chitta, Kaijen Hsiao, Gil Jones, Ioan Sucan, John Hsu''' This format is intended to represent information about the robot that is not in the URDF file, but it is useful for a variety of applications. The intention is to include information that has a semantic aspect to it. A review of this format is available [[srdf/review|here]]. == Description == === Tags === * '''''' element * Purpose: This is the root tag that for this document. All information is included in this tag. * Elements: , , , , * Attributes: * ''name'' is the name of the robot. It should be the same name as in the corresponding URDF file. * '''''' element * Purpose: Representation of a set of joints and links. This can be useful for specifying DOF to plan for, defining arms, end effectors, etc * Elements: , , , * Attributes: * ''name'' is the name of the group * Note: when a group contains no tags, only its name attribute, it is assumed to be a reference to a group with that name, but that is defined earlier. * '''''' element * Purpose: Define a named state for a particular group, in terms of joint values. This is useful to define states like "folded arms". * Elements: * Attributes: * ''name'' is the name of the state * ''group'' is the name of the group the state is for * Note: all joints in a group must have their value specified as part of a group state in order for that state to be valid. * '''''' element * Purpose: this element specifies a link that is part of a . * Elements: none * Attributes: * ''name'' must be a name of a link in the corresponding URDF file * Note: When a link is included in a group, so is the corresponding parent joint (if one exists) * '''''' element * Purpose: this element specifies a joint that is part of a . * Elements: none * Attributes: * ''name'' must be a name of a joint in the corresponding URDF file * ''value'' *only* in the tag, the ''value'' attribute is accepted for joints (a floating point value). When a joint consists of multiple DOF, the value is simply a space-separated array of floating point values. * Note: When a joint is included in a group, so is the corresponding child link * '''''' element * Purpose: Represent a kinematic chain in the robot. This is useful for instance in representing arms. * Elements: none * Attributes: * ''base_link'' is the root link of the chain (the link that is fixed with respect to the chain) * ''tip_link'' is the last link of the chain (where the chain ends) * Note: Based on the links in the chain, the set of joints in the chain is implicitly defined. The joints that correspond to a chain are the parent joints for the links in the chain, except the parent joint of the ''base_link''. * '''''' element * Purpose: Represent information about an end effector. * Elements: none * Attributes: * ''name'' is the name of the end effector * ''group'' is the name of the group that contains the links (and joints) that make up the end effector * ''parent_link'' is the name of the link this end effector is attached to * ''parent_group'' (optional) is the name of the joint group containing ''parent_link''. If for instance, you have an ''arm'' group, a ''hand'' group, then the ''hand'' end-effector's ''parent_group'' would be ''arm''. * '''''' element * Purpose: this element defines a virtual joint between a robot link and an external frame of reference (considered fixed with respect to the robot) * Elements: none * Attributes: * ''name'' the name of the joint that is assumed to exist between the robot and the environment * ''child_link'' the name of the link that connects the robot to the environment * ''parent_frame'' the name of the frame assumed to be fixed with respect to the robot * ''type'' the type of joint to be assumed. This can be fixed (0 DOF), floating (all 6 DOF) or planar (3 DOF: x, y, yaw) * Note: When the tag is used to refer to existing joints by name, using the name of defined virtual joints is also possible. * '''''' element * Purpose: By default it is assumed that any link of the robot could potentially come into collision with any other link in the robot. This tag disables collision checking between a specified pair of links. There can be many such tags in this file * Elements: none * Attributes: * ''link1'' the name of the first link in the pair * ''link2'' the name of the second link in the pair * ''reason'' (optional) the reason this collisions between the two links should be disabled. * '''''' element * Purpose: By default it is assumed that all joints specified by a URDF are active and their state is made available for planning. If this is not the case for some joints, this tag can be used to specify that. * Elements: none * Attributes: * ''name'' the name of the joint that is passive. * '''''' element * Purpose: This tag specifies a set of spheres that conservatively approximates a link. Spheres are specified in the same coordinate frame as the collision geometry in the URDF. This tag is optional. If no tag appears for a link then a single sphere that encloses the link's collision geometry will be used. If a tag appears and contains only spheres with radius 0 then the link will not be considered when doing sphere based collision detection. * Elements: sphere * Attributes: * ''link'' the name of the link that is approximated by these spheres. * '''''' element * Purpose: This tag specifies a sphere. * Elements: none * Attributes: * ''center'' 3 space-separated floating point values specifying the sphere center x y z. * ''radius'' a floating point sphere radius. === Generic Example === {{{ }}} === Example for the PR2 === {{{ }}}