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.You are not allowed to attach a file to this page.