• attachment:urdf.xsd of urdf/Reviews/2012-06-12 API_Review

Attachment 'urdf.xsd'

Download

   1 <?xml version="1.0" ?>
   2 <!--
   3 
   4    XML Schema for URDF v1.0
   5 
   6    This is a proposal XML Schema to validate the original URDF file
   7    format. It supports PR2 extensions (transmission) but not the
   8    Gazebo ones.
   9 
  10   -->
  11 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  12 	   targetNamespace="http://www.ros.org"
  13 	   xmlns="http://www.ros.org"
  14 	   elementFormDefault="qualified">
  15 
  16   <!-- pose node type -->
  17   <xs:complexType name="pose">
  18     <xs:attribute name="xyz" type="xs:string" default="0 0 0" />
  19     <xs:attribute name="rpy" type="xs:string" default="0 0 0" />
  20   </xs:complexType>
  21 
  22   <!-- pose node type -->
  23   <xs:complexType name="color">
  24     <xs:attribute name="rgba" type="xs:string" default="0 0 0 0" />
  25   </xs:complexType>
  26 
  27   <!-- verbose node type -->
  28   <xs:complexType name="verbose">
  29     <xs:attribute name="value" type="xs:string" />
  30   </xs:complexType>
  31 
  32   <!-- name only node type -->
  33   <xs:complexType name="name">
  34     <xs:attribute name="name" type="xs:string" />
  35   </xs:complexType>
  36 
  37 
  38   <!-- mass node type -->
  39   <xs:complexType name="mass">
  40     <!-- FIXME: is value optional? -->
  41     <xs:attribute name="value" type="xs:double" default="0" />
  42   </xs:complexType>
  43 
  44   <!-- inertia node type -->
  45   <xs:complexType name="inertia">
  46     <!-- FIXME: is it optional? default value? -->
  47     <xs:attribute name="ixx" type="xs:double" default="0" />
  48     <xs:attribute name="ixy" type="xs:double" default="0" />
  49     <xs:attribute name="ixz" type="xs:double" default="0" />
  50     <xs:attribute name="iyy" type="xs:double" default="0" />
  51     <xs:attribute name="iyz" type="xs:double" default="0" />
  52     <xs:attribute name="izz" type="xs:double" default="0" />
  53   </xs:complexType>
  54 
  55   <!-- inertial node type -->
  56   <xs:complexType name="inertial">
  57     <xs:all>
  58       <xs:element name="origin"
  59 		  type="pose" minOccurs="0" maxOccurs="1" />
  60       <xs:element name="mass"
  61 		  type="mass" minOccurs="0" maxOccurs="1" />
  62       <xs:element name="inertia"
  63 		  type="inertia" minOccurs="0" maxOccurs="1" />
  64     </xs:all>
  65   </xs:complexType>
  66 
  67   <!-- box node type -->
  68   <xs:complexType name="box">
  69     <xs:attribute name="size" type="xs:string" default="0 0 0" />
  70   </xs:complexType>
  71 
  72   <!-- cylinder node type -->
  73   <xs:complexType name="cylinder">
  74     <xs:attribute name="radius" type="xs:double" use="required" />
  75     <xs:attribute name="length" type="xs:double" use="required" />
  76   </xs:complexType>
  77 
  78   <!-- sphere node type -->
  79   <xs:complexType name="sphere">
  80     <xs:attribute name="radius" type="xs:double" use="required" />
  81   </xs:complexType>
  82 
  83   <!-- mesh node type -->
  84   <xs:complexType name="mesh">
  85     <xs:attribute name="filename" type="xs:anyURI" use="required" />
  86     <xs:attribute name="scale" type="xs:string" default="1 1 1" />
  87   </xs:complexType>
  88 
  89   <!-- geometry node type -->
  90   <xs:complexType name="geometry">
  91     <xs:choice>
  92       <xs:element name="box" type="box" />
  93       <xs:element name="cylinder" type="cylinder" />
  94       <xs:element name="sphere" type="sphere" />
  95       <xs:element name="mesh" type="mesh" />
  96     </xs:choice>
  97   </xs:complexType>
  98 
  99   <!-- texture node type -->
 100   <xs:complexType name="texture">
 101     <xs:attribute name="filename" type="xs:anyURI" />
 102   </xs:complexType>
 103 
 104   <!-- material node type -->
 105   <xs:complexType name="material">
 106     <xs:sequence>
 107       <xs:element name="color" type="color" minOccurs="0" maxOccurs="1" />
 108       <xs:element name="texture" type="texture" minOccurs="0" maxOccurs="1" />
 109     </xs:sequence>
 110     <xs:attribute name="name" type="xs:string" />
 111   </xs:complexType>
 112 
 113   <!-- material (global) node type -->
 114   <xs:complexType name="material_global">
 115     <xs:sequence>
 116       <xs:element name="color" type="color" minOccurs="0" maxOccurs="1" />
 117       <xs:element name="texture" type="texture" minOccurs="0" maxOccurs="1" />
 118     </xs:sequence>
 119     <xs:attribute name="name" type="xs:string" use="required" />
 120   </xs:complexType>
 121 
 122 
 123   <!-- visual node type -->
 124   <xs:complexType name="visual">
 125     <xs:sequence>
 126       <xs:element name="origin"
 127 		  type="pose" minOccurs="0" maxOccurs="1" />
 128       <xs:element name="geometry"
 129 		  type="geometry" minOccurs="1" maxOccurs="1" />
 130       <xs:element name="material"
 131 		  type="material" minOccurs="0" maxOccurs="1" />
 132     </xs:sequence>
 133   </xs:complexType>
 134 
 135   <!-- collision node type -->
 136   <xs:complexType name="collision">
 137     <xs:sequence>
 138       <xs:element name="origin"
 139 		  type="pose" minOccurs="0" maxOccurs="1" />
 140       <xs:element name="geometry"
 141 		  type="geometry" minOccurs="1" maxOccurs="1" />
 142       <xs:element name="verbose"
 143 		  type="verbose" minOccurs="0" maxOccurs="1" />
 144     </xs:sequence>
 145     <!-- FIXME: used but not documented -->
 146     <xs:attribute name="name" type="xs:string" />
 147   </xs:complexType>
 148 
 149   <!-- link node type -->
 150   <xs:complexType name="link">
 151     <xs:all>
 152       <xs:element name="inertial"
 153 		  type="inertial" minOccurs="0" maxOccurs="1" />
 154       <xs:element name="visual"
 155 		  type="visual" minOccurs="0" maxOccurs="1" />
 156       <xs:element name="collision"
 157 		  type="collision" minOccurs="0" maxOccurs="1" />
 158     </xs:all>
 159     <xs:attribute name="name" type="xs:string" use="required" />
 160 
 161     <!-- FIXME: undocumented but used by PR2 -->
 162     <xs:attribute name="type" type="xs:string" />
 163   </xs:complexType>
 164 
 165 
 166   <!-- parent node type -->
 167   <xs:complexType name="parent">
 168     <xs:attribute name="link" type="xs:string" use="required" />
 169   </xs:complexType>
 170 
 171   <!-- child node type -->
 172   <xs:complexType name="child">
 173     <xs:attribute name="link" type="xs:string" use="required" />
 174   </xs:complexType>
 175 
 176   <!-- axis node type -->
 177   <xs:complexType name="axis">
 178     <xs:attribute name="xyz" type="xs:string" default="1 0 0" />
 179   </xs:complexType>
 180 
 181   <!-- calibration node type -->
 182   <xs:complexType name="calibration">
 183     <xs:attribute name="reference_position" type="xs:double"/>
 184     <xs:attribute name="rising" type="xs:double"/>
 185     <xs:attribute name="falling" type="xs:double"/>
 186   </xs:complexType>
 187 
 188   <!-- dynamics node type -->
 189   <xs:complexType name="dynamics">
 190     <xs:attribute name="damping" type="xs:double" default="0" />
 191     <xs:attribute name="friction" type="xs:double" default="0" />
 192   </xs:complexType>
 193 
 194   <!-- limit node type -->
 195   <xs:complexType name="limit">
 196     <xs:attribute name="lower" type="xs:double" default="0" />
 197     <xs:attribute name="upper" type="xs:double" default="0" />
 198     <xs:attribute name="effort" type="xs:double" default="0" />
 199     <xs:attribute name="velocity" type="xs:double" default="0" />
 200   </xs:complexType>
 201 
 202   <!-- safety controller node type -->
 203   <xs:complexType name="safety_controller">
 204     <xs:attribute name="soft_lower_limit" type="xs:double" default="0" />
 205     <xs:attribute name="soft_upper_limit" type="xs:double" default="0" />
 206     <xs:attribute name="k_position" type="xs:double" default="0" />
 207     <xs:attribute name="k_velocity" type="xs:double" use="required" />
 208   </xs:complexType>
 209 
 210   <!-- mimic node type -->
 211   <xs:complexType name="mimic">
 212     <xs:attribute name="joint" type="xs:string" use="required" />
 213     <xs:attribute name="multiplier" type="xs:double" default="1" />
 214     <xs:attribute name="offset" type="xs:double" default="0" />
 215   </xs:complexType>
 216 
 217   <!-- actuator transmission node type -->
 218   <xs:complexType name="actuator_transmission">
 219     <xs:attribute name="mechanicalReduction" type="xs:double" use="required" />
 220     <xs:attribute name="name" type="xs:string" use="required" />
 221   </xs:complexType>
 222 
 223   <!-- gap joint transmission node type -->
 224   <xs:complexType name="gap_joint_transmission">
 225     <xs:attribute name="L0" type="xs:double" use="required" />
 226     <xs:attribute name="a" type="xs:double" use="required" />
 227     <xs:attribute name="b" type="xs:double" use="required" />
 228     <xs:attribute name="gear_ratio" type="xs:double" use="required" />
 229     <xs:attribute name="h" type="xs:double" use="required" />
 230     <xs:attribute name="mechanical_reduction" type="xs:double" use="required" />
 231     <xs:attribute name="name" type="xs:string" use="required" />
 232     <xs:attribute name="phi0" type="xs:double" use="required" />
 233     <xs:attribute name="r" type="xs:double" use="required" />
 234     <xs:attribute name="screw_reduction" type="xs:double" use="required" />
 235     <xs:attribute name="t0" type="xs:double" use="required" />
 236     <xs:attribute name="theta0" type="xs:double" use="required" />
 237   </xs:complexType>
 238 
 239   <!-- passive joint transmission node type -->
 240   <xs:complexType name="passive_joint_transmission">
 241     <xs:attribute name="name" type="xs:string" use="required" />
 242   </xs:complexType>
 243 
 244   <!-- transmission node type -->
 245   <xs:complexType name="transmission">
 246     <xs:sequence minOccurs="0" maxOccurs="unbounded">
 247       <xs:element name="leftActuator"
 248 		  type="actuator_transmission" minOccurs="0" maxOccurs="1" />
 249       <xs:element name="rightActuator"
 250 		  type="actuator_transmission" minOccurs="0" maxOccurs="1" />
 251       <xs:element name="flexJoint"
 252 		  type="actuator_transmission" minOccurs="0" maxOccurs="1" />
 253       <xs:element name="rollJoint"
 254 		  type="actuator_transmission" minOccurs="0" maxOccurs="1" />
 255       <xs:element name="gap_joint"
 256 		  type="gap_joint_transmission" minOccurs="0" maxOccurs="1" />
 257       <xs:element name="passive_joint"
 258 		  type="passive_joint_transmission" minOccurs="0" maxOccurs="unbounded" />
 259       <xs:element name="use_simulated_gripper_joint" minOccurs="0" maxOccurs="1">
 260 	<xs:complexType>
 261 	</xs:complexType>
 262       </xs:element>
 263       <xs:element name="mechanicalReduction" type="xs:double"
 264 		  minOccurs="0" maxOccurs="1" />
 265 
 266       <xs:element name="actuator" type="name" minOccurs="0" maxOccurs="1" />
 267       <xs:element name="joint" type="name" minOccurs="0" maxOccurs="1" />
 268     </xs:sequence>
 269     <xs:attribute name="name" type="xs:string" use="required" />
 270     <xs:attribute name="type" type="xs:string" use="required" />
 271   </xs:complexType>
 272 
 273   <!-- joint node type -->
 274   <xs:complexType name="joint">
 275     <xs:all>
 276       <xs:element name="origin"
 277 		  type="pose" minOccurs="0" maxOccurs="1" />
 278       <xs:element name="parent"
 279 		  type="parent" minOccurs="1" maxOccurs="1" />
 280       <xs:element name="child"
 281 		  type="child" minOccurs="1" maxOccurs="1" />
 282       <xs:element name="axis"
 283 		  type="axis" minOccurs="0" maxOccurs="1" />
 284       <xs:element name="calibration"
 285 		  type="calibration" minOccurs="0" maxOccurs="1" />
 286       <xs:element name="dynamics"
 287 		  type="dynamics" minOccurs="0" maxOccurs="1" />
 288       <xs:element name="limit"
 289 		  type="limit" minOccurs="0" maxOccurs="1" />
 290       <xs:element name="safety_controller"
 291 		  type="safety_controller" minOccurs="0" maxOccurs="1" />
 292       <xs:element name="mimic"
 293 		  type="mimic" minOccurs="0" maxOccurs="1" />
 294     </xs:all>
 295     <xs:attribute name="name" type="xs:string" use="required" />
 296     <xs:attribute name="type" type="xs:string" use="required" />
 297   </xs:complexType>
 298 
 299   <!-- root node is always robot -->
 300   <xs:element name="robot">
 301     <xs:complexType>
 302       <xs:sequence minOccurs="0" maxOccurs="unbounded">
 303 	<xs:element name="joint"
 304 		    type="joint" minOccurs="0" maxOccurs="unbounded" />
 305 	<xs:element name="link"
 306 		    type="link" minOccurs="0" maxOccurs="unbounded" />
 307 
 308 	<!-- FIXME: this is used but undocumented -->
 309 	<xs:element name="material"
 310 		    type="material_global" minOccurs="0" maxOccurs="unbounded" />
 311 
 312 	<!-- FIXME: this is used but undocumented -->
 313 	<xs:element name="transmission"
 314 		    type="transmission" minOccurs="0" maxOccurs="unbounded" />
 315 
 316 	<!-- FIXME: gazebo extension not supported -->
 317       </xs:sequence>
 318       <xs:attribute name="name" type="xs:string" use="required" />
 319 
 320       <!-- TM: I suggest adding the following attribute. -->
 321       <xs:attribute name="version" type="xs:string" default="1.0" />
 322     </xs:complexType>
 323   </xs:element>
 324 </xs:schema>

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2012-06-20 13:55:58, 11.5 KB) [[attachment:urdf.xsd]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.