diff --git a/xsd/urdf.xsd b/xsd/urdf.xsd index 3f2e67f4..bc2c5014 100644 --- a/xsd/urdf.xsd +++ b/xsd/urdf.xsd @@ -8,29 +8,93 @@ Gazebo ones. --> - + + + Specifies the type of joint. + + - - - - - - + + + + A hinge joint that rotates along the axis and has a limited range specified by the upper and lower limits. + + + + + + + + A continuous hinge joint that rotates around the axis and has no upper and lower limits. + + + + + + + + A sliding joint that slides along the axis, and has a limited range specified by the upper and lower limits. + + + + + + + + This is not really a joint because it cannot move. + All degrees of freedom are locked. + This type of joint does not require the <axis>, <calibration>, + <dynamics>, <limits> or <safety_controller>. + + + + + + + This joint allows motion for all 6 degrees of freedom. + + + + + + This joint allows motion in a plane perpendicular to the axis. + + - - + + + The reference frame of the element with respect to the reference frame of the link. + + + + + + Represents the x, y, z offset. + + + + + + Represents the fixed axis roll, pitch and yaw angles in radians. + + + + + The color of a material specified by set of four numbers representing red/green/blue/alpha, each in the range of [0,1]. + + + @@ -64,36 +128,155 @@ + + + The link's mass, position of its center of mass, and its central inertia properties. + + + - - - + + + + This pose (translation, rotation) describes the position and orientation + of the link's center of mass frame C relative to the link-frame L. + + Properties: +
    +
  • +

    + xyz + (defaults to the zero vector) +

    +

    + Represents the position vector from Lo (the link-frame origin) to Co (the link's center of mass) as + x L̂x + y L̂y + z L̂z, where L̂x, L̂y, L̂z are link-frame L's orthogonal unit vectors. +

    +
  • +
  • +

    + rpy + (defaults to the identity vector) +

    +

    + Represents the orientation of C's unit vectors Ĉx, Ĉy, Ĉz relative to link-frame L + as a sequence of Euler rotations (roll pitch yaw) in radians. +
    + Note: + Ĉx, Ĉy, Ĉz do not need to be aligned with the link's principal axes of inertia. +

    +
  • +
+
+
+
+ + + + + The mass of the link is represented by the value attribute of this element + + + + + + + + This link's moments of inertia ixx, iyy, izz and + products of inertia ixy, ixz, iyz about Co + (the link's center of mass) for the unit vectors Ĉx, Ĉy, Ĉz fixed in the center-of-mass frame C. +
+ Note: + the orientation of Ĉx, Ĉy, Ĉz relative to L̂x, L̂y, L̂z is specified by + the rpy values in the <origin> tag. + The attributes ixy, ixz, iyz, ixx, iyy for some primitive shapes are + here. + URDF assumes a negative product of inertia convention + (for more info, see + + these MathWorks docs + + for working with CAD tools). + The simplest way to avoid compatibility issues associated with the negative sign convention + for product of inertia is to align Ĉx, Ĉy, Ĉz with principal inertia directions + so that all the products of inertia are zero. +
+
+
- + + A box centered on its origin. + + + + + The three side lengths of the box + + - - + + A cylinder centered on its origin. + + + + + The radius of the cylinder. + + + + + + The length of the cylinder. + + - + + A sphere centered on its origin. + + + + + The radius of the sphere. + + - - + + + A trimesh element specified by a filename, and an optional scale that scales the mesh's axis-aligned-bounding-box. + Any geometry format is acceptable but specific application compatibility is dependent on implementation. + The recommended format for best texture and color support is Collada .dae files. + The mesh file is not transferred between machines referencing the same model; it must be a local file. + + + + + + + The file name of the mesh. + Prefix the filename with package://<packagename>/<path> to make the path to the mesh file + relative to the package <packagename>. + + + + + + + The amount to scale the mesh by. + + @@ -108,23 +291,49 @@ - + + The texture of a material. + + + + + The file name of the texture. + + + + + The material of the visual element. + It is allowed to specify a material element outside of the <link> object, + in the top level <robot> element. + From within a <link> element you can then reference the material by name. + + + - - + + + + - + + + + name of the material + + - - + + + + @@ -132,37 +341,104 @@ + + + The visual properties of the link. + This element specifies the shape of the object (box, cylinder, etc.) for visualization purposes. +
+ Note: + multiple instances of <visual> tags can exist for the same link. + The union of the geometry they define forms the visual representation of the link. +
+
+ - - - + + + + + The shape of the visual object. + + + + + + + + + + + Specifies a name for a part of a link's geometry. + This is useful to be able to refer to specific bits of the geometry of a link. + + +
+ + + The collision properties of a link. + Note that this can be different from the visual properties of a link, for example, + simpler collision models are often used to reduce the computation time. +
+ Note: + multiple instances of the <collision> tags can exist for the same link. + The union of the geometry they define forms the collision representation of the link. +

+ It is recommended to use as few faces per link as possible for the collision mesh (ideally less than 1000). + If possible, approximating the meshes with other primitives is encouraged. +

+
+
+ - - - + + + + + The shape of the collision object. + + + + + + - + + + + + Specifies a name for a part of the link's geometry. + This is useful to be able to refer to specific bits of the geometry of a link. + + +
+ + + The link element describes a rigid body with an inertia, visual features, and collision properties. + + + - + + + - + + + + The name of the link itself. + + @@ -171,62 +447,253 @@ - + + Parent link. + + + + + + The name of the link that is the parent in the robot tree structure. + + + - + + Child link. + + + + + The name of the link that is the child link. + + - + + + The joint axis specified in the joint frame. + This is the axis of rotation for revolute joints, the axis of translation for prismatic joints, + and the surface normal for planar joints. + The axis is specified in the joint frame of reference. + Fixed and floating joints do not use the axis field. + + + + + + + Represents the (x, y, z) components of a vector. The vector should be normalized. + + + + + + + + Represents the roll, pitch, and yaw angles in radians. + + + - - - + + + The reference positions of the joint, used to calibrate the absolute position of the joint. + + + + + + The reference position of the joint. + + + + + + + When the joint moves in a positive direction, this reference position will trigger a rising edge. + + + + + + + When the joint moves in a positive direction, this reference position will trigger a falling edge. + + + - - + + + An element specifying physical properties of the joint. + These values are used to specify modeling properties of the joint, particularly useful for simulation. + + + + + + + The physical damping value of the joint + (in newton-seconds per metre [Ns/m] for prismatic joints, + in newton-metre-seconds per radian [Nms/rad] for revolute joints). + + + + + + + + The physical static friction value of the joint + (in newtons [N] for prismatic joints, + in newton-metres [Nm] for revolute joints). + + + - - - - + + + An element specifying the limits of a joint. + Note: + Required only for revolute and prismatic joint. + + + + + + + An attribute specifying the lower joint limit (in radians for revolute joints, in metres for prismatic joints). + Omit if joint is continuous. + + + + + + + + An attribute specifying the upper joint limit (in radians for revolute joints, in metres for prismatic joints). + Omit if joint is continuous. + + + + + + + + An attribute for enforcing the maximum joint effort (|applied effort| < |effort|). + See safety limits. + + + + + + + + An attribute for enforcing the maximum joint velocity + (in radians per second [rad/s] for revolute joints, + in metres per second [m/s] for prismatic joints). + See safety limits. + + + - - - - + + An element specifying safety limits for a joint. + + + + + + An attribute specifying the lower joint boundary where the safety controller starts limiting the position of the joint. + This limit needs to be larger than the lower joint limit. + See See safety limits for more details. + + + + + + + + An attribute specifying the upper joint boundary where the safety controller starts limiting the position of the joint. + This limit needs to be smaller than the upper joint limit. + See See safety limits for more details. + + + + + + + + An attribute specifying the relation between position and velocity limits. + See See safety limits for more details. + + + + + + + + An attribute specifying the relation between effort and velocity limits. + See See safety limits for more details. + + + - - - + + + This tag is used to specify that the defined joint mimics another existing joint. + The value of this joint can be computed as value = multiplier × other_joint_value + offset. + + + + + + This specifies the name of the joint to mimic. + + + + + + Specifies the multiplicative factor. + + + + + + Specifies the offset to add. + + + + + @@ -243,34 +710,31 @@ + + - - - - - - - - - + + + + + + + + + - + + + + - - + @@ -278,119 +742,301 @@ - - - - - - + + + Width of the camera in pixels. + + + + + + Height of the camera in pixels. + + + + + + + Image format of the camera. + Can be any of the strings defined in + image_encodings.h + inside sensor_msgs. + + + + + + + Horizontal field of view of the camera + + + + + + Near clip distance of the camera in meters. + + + + + + + Far clip distance of the camera in meters. + This needs to be greater or equal to near clip. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The camera element describes the properties of a camera sensor. + + + - + + + - - - - + + + The number of simulated rays to generate per complete laser sweep cycle. + + + + + + + This number is multiplied by samples to determine the number of range data points returned. + If resolution is less than one, range data is interpolated. + If resolution is greater than one, range data is averaged. + + + + + + + Minimum angle. + + + + + + Maximum angle. Must be greater or equal to minimum angle. + + + + + The camera element describes the properties of a ray sensor (i.e. LiDAR). + + + - - + + + + + + + The sensor element describes basic properties of a visual sensor (i.e. camera/ray sensor). + + + - - + + + + This is the pose of the sensor optical frame, relative to the sensor parent reference frame. The sensor optical frame adopts the + conventions of z-forward, x-right and y-down. + + + + + + - - + + + + - - - - - - - - - - - - + + + + + The name of the link itself. + + + + + + + + The frequency at which the sensor data is generated. + If left unspecified, the sensor will generate data every cycle. + + + + + + + + + + + + + + - - - - - - - - - - - - + + + The joint element describes the kinematics and dynamics of the joint + and also specifies the safety limits of the joint. + + + + + + + + + + + + + + + + + + + + Specifies a unique name of the joint + + + + + + The root element in a robot description file must be a robot, + with all other elements must be encapsulated within. + + + - - + + + - - + - - + + - - + + - + + - + + + + + The master file must have a name attribute. + The name attribute is optional in included files. + If the attribute name is specified in an additional included file, + it must have the same value as in the master file. + + +