-
Notifications
You must be signed in to change notification settings - Fork 0
/
ExDConfFile.xsd
435 lines (407 loc) · 21.5 KB
/
ExDConfFile.xsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bibi="http://schemas.humanbrainproject.eu/SP10/2014/BIBI"
xmlns:sc="http://schemas.humanbrainproject.eu/SP10/2015/ExDConfig/scxml"
xmlns:tns="http://schemas.humanbrainproject.eu/SP10/2014/ExDConfig"
targetNamespace="http://schemas.humanbrainproject.eu/SP10/2014/ExDConfig"
xmlns="http://schemas.humanbrainproject.eu/SP10/2014/ExDConfig"
xsi:schemaLocation="
http://schemas.humanbrainproject.eu/SP10/2014/BIBI bibi_configuration.xsd
http://schemas.humanbrainproject.eu/SP10/2015/ExDConfig/scxml hbp-scxml/hbp-scxml.xsd"
attributeFormDefault="unqualified" elementFormDefault="qualified">
<xsd:import namespace="http://schemas.humanbrainproject.eu/SP10/2015/ExDConfig/scxml"
schemaLocation="hbp-scxml/hbp-scxml.xsd"/>
<xsd:simpleType name="ThumbnailFile">
<xsd:annotation>
<xsd:documentation>This type denotes a path to an image file. The supported extensions are .png, .jpg, .jpeg and .gif. The file name must not contain whitespaces.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-zA-Z0-9\._\-/]*\.(png|gif|jp[e]?g)"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="MaturityType">
<xsd:annotation>
<xsd:documentation>This type denotes a maturity of an experiment. It can either be development or production.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="development"/>
<xsd:enumeration value="production"/>
</xsd:restriction>
</xsd:simpleType>
<!--Contains a pose -->
<xsd:complexType name="RobotPose">
<xsd:annotation>
<xsd:documentation>This type represents a robot pose. It consists of a position part (x, y and z coordinates in meters) and a rotation part (roll, pitch and yaw in radians). All fields are double precision values.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="robotId" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation>Robot id the pose refers to</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="x" type="xsd:double" use="required">
<xsd:annotation>
<xsd:documentation>The x coordinate of the robot position</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="y" type="xsd:double" use="required">
<xsd:annotation>
<xsd:documentation>The y coordinate of the robot position</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="z" type="xsd:double" use="required">
<xsd:annotation>
<xsd:documentation>The z coordinate of the robot position</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="pitch" type="xsd:double" use="optional"/>
<xsd:attribute name="yaw" type="xsd:double" use="optional"/>
<xsd:attribute name="roll" type="xsd:double" use="optional"/>
<!-- DEPRECATED: Define angle as a quaternion, this format is deprecated and will be removed soon. Please use pitch/yaw/roll instead -->
<xsd:attribute name="ux" type="xsd:double" use="optional"/>
<xsd:attribute name="uy" type="xsd:double" use="optional"/>
<xsd:attribute name="uz" type="xsd:double" use="optional"/>
<xsd:attribute name="theta" type="xsd:double" use="optional"/>
</xsd:complexType>
<!-- Generic configuration file -->
<xsd:complexType name="ConfFile">
<xsd:annotation>
<xsd:documentation>This type denotes a configuration entry. Configuration entries are used for multiple purposes, therefore the type of the configuration entry is set explicitly in an attribute called type. The actual configuration is referenced as a file through the src attribute.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="src" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation>The path to the file that acts as configuration. Files specified as configuration are automatically considered whe an experiment is deployed.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="type" type="ConfType" use="required">
<xsd:annotation>
<xsd:documentation>The type of the configuration entry describes what this entry is used for. The NRP allows both predefined and custom entries.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<!-- List of tags -->
<xsd:simpleType name="Tags">
<xsd:list itemType="xsd:string" />
</xsd:simpleType>
<xsd:simpleType name="ConfType">
<xsd:annotation>
<xsd:documentation>This type denotes a configuration type which can be a standard configuration type or a custom type. The latter is just any string.</xsd:documentation>
</xsd:annotation>
<xsd:union memberTypes="ConfTypeEnumeration xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="ConfTypeEnumeration">
<xsd:annotation>
<xsd:documentation>This enumeration lists the standard configuration types used in the NRP.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="3d-settings"/>
</xsd:restriction>
</xsd:simpleType>
<!--Contains a position -->
<xsd:complexType name="Position">
<xsd:annotation>
<xsd:documentation>This type denotes a position with x, y and z coordinates.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="x" type="xsd:double" use="required">
<xsd:annotation>
<xsd:documentation>The x coordinate of the position</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="y" type="xsd:double" use="required">
<xsd:annotation>
<xsd:documentation>The y coordinate of the position</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="z" type="xsd:double" use="required">
<xsd:annotation>
<xsd:documentation>The z coordinate of the position</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<!--Contains the Three.JS camera pose configuration -->
<xsd:complexType name="CameraPose">
<xsd:annotation>
<xsd:documentation>This type denotes a camera pose. Unlike the robot pose, a camera pose is specified using a position of the camera and a point to which the camera looks at. The camera is always rotated with the up vector z (0,0,1).</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="cameraPosition" type="Position">
<xsd:annotation>
<xsd:documentation>The position of the camera</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="cameraLookAt" type="Position">
<xsd:annotation>
<xsd:documentation>The position to which the camera should look at</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!--Contains an environmentModel -->
<xsd:complexType name="EnvironmentModel">
<xsd:annotation>
<xsd:documentation>This type defines the necessary configuration for an environment. It combines the specification of an environment model through the src attribute and a robot pose using the element robotPose.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="robotPose" type="RobotPose" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>The position of the robot</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="src" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation>A path to an SDF file that specifies the scene</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="model" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Specifies the path to the custom model</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<!-- Contains a visualModel with pose and scale for the frontend -->
<xsd:complexType name="VisualModel">
<xsd:annotation>
<xsd:documentation>This type defines a visual model (for example for the robot) as used in the frontend.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="visualPose" type="RobotPose"/>
</xsd:sequence>
<xsd:attribute name="src" type="xsd:string" use="required"/>
<xsd:attribute name="scale" type="xsd:double"/>
</xsd:complexType>
<!-- Contains a skin model for the frontend -->
<xsd:complexType name="SkinModel">
<xsd:annotation>
<xsd:documentation>This type defines a skin model (for example for the robot) as used in the frontend.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="src" type="xsd:string" use="required"/>
</xsd:complexType>
<!-- Contains brain configuration and number of processes, default set for frontend -->
<xsd:complexType name="BibiConf">
<xsd:annotation>
<xsd:documentation>This type denotes the BIBI configuration used for this experiment. It is described using a reference to the BIBI model in the src attribute and an attribute processes to specify the number of processes that should be used to run the experiment. The default value for processes is 1.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="src" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation>The path to the BIBI configuration that specifies the model, the neural network and the connection between those.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="processes" type="xsd:positiveInteger" default="1">
<xsd:annotation>
<xsd:documentation>The number of processes that should be used to run the neural network simulation. If this value is larger than 1, a dedicated simulation setup for distributed simulation of the neural network is used.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<!-- Contains roslaunch file to be launched prior to Gazebo -->
<xsd:complexType name="RosLaunch">
<xsd:annotation>
<xsd:documentation>This type denotes a Ros Launchfile configuration.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="src" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation>The path to a ROSLaunch file</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<!-- Supported physics engines -->
<xsd:simpleType name="PhysicsEngine">
<xsd:annotation>
<xsd:documentation>This enumeration contains the physics engines supported by the NRP. This includes the standard physics engine ODE and OpenSim.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ode"/>
<xsd:enumeration value="opensim"/>
</xsd:restriction>
</xsd:simpleType>
<!--Root element of the ExD file -->
<xsd:complexType name="ExD">
<xsd:annotation>
<xsd:documentation>This type is the root type for an experiment configuration.</xsd:documentation>
</xsd:annotation>
<xsd:all>
<xsd:element name="name" type="xsd:string">
<xsd:annotation>
<xsd:documentation>This element denotes the name of the experiment as it appears in the experiment list.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="thumbnail" type="ThumbnailFile">
<xsd:annotation>
<xsd:documentation>This element references a path to a thumbnail that is used to give the user a forecast to the experiment.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="description" type="xsd:string">
<xsd:annotation>
<xsd:documentation>This description will appear in the experiment description and provide a short description explaining what the experiment is all about.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="tags" type="Tags" minOccurs="0">
<xsd:annotation>
<xsd:documentation>List of space separated tags that describe the experiment.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="timeout" type="Timeout" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>The timeout of an experiment is the time an experiment is allowed to run by default, specified in seconds. If that time has elapsed, the users are asked whether they want to extend the runtime of the simulation. On the servers, this will only be allowed if the timeout fits within the cluster allocation.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="configuration" type="ConfFile" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>An experiment may have multiple configuration entries. Despite configuration entries can be specified in anywhere in the ExD element, they must appear together.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="maturity" type="MaturityType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The maturity of an experiment determines whether it is shown by default to the user or only browsable in dev mode.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="environmentModel" type="EnvironmentModel">
<xsd:annotation>
<xsd:documentation>The environment model of an experiment specifies the used world file for a simulation and the pose where the robot should be spawned.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="visualModel" type="VisualModel" minOccurs="0">
<xsd:annotation>
<xsd:documentation>With the visual model, an experiment can specify an alternatively used model for the frontend visualization. This is helpful in case the robot model used in gazebo is very detailed and thus hard to visualize on the client. On the server, there may be more resources available to simulate more complex models.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="skinModel" type="SkinModel" minOccurs="0">
<xsd:annotation>
<xsd:documentation>With the skin model, an experiment can specify a skin model for the frontend visualization.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="bibiConf" type="BibiConf">
<xsd:annotation>
<xsd:documentation>The bibiConf element of an experiment configuration specifies the </xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="experimentControl" type="ExperimentControl" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The experiment control lists all state machines that control the experiment.</xsd:documentation>
</xsd:annotation>
<xsd:unique name="uniqueExperimentControl">
<xsd:selector xpath="tns:stateMachine"/>
<xsd:field xpath="@id"/>
</xsd:unique>
</xsd:element>
<xsd:element name="experimentEvaluation" type="ExperimentControl" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The experiment evaluation element lists all state machines that evaluate the success of a simulated experiment.</xsd:documentation>
</xsd:annotation>
<xsd:unique name="uniqueExperimentEvaluation">
<xsd:selector xpath="tns:stateMachine"/>
<xsd:field xpath="@id"/>
</xsd:unique>
</xsd:element>
<xsd:element name="cameraPose" type="CameraPose" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The camera pose specifies the initial position of the camera when a simulation is started.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="rosLaunch" type="RosLaunch" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The roslaunch element species the path to a ROSLaunch file that is executed when the experiment is simulated. If no file is specified, no ROSLaunch file is executed at the beginning of an experiment.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="rngSeed" type="xsd:positiveInteger" minOccurs="0">
<xsd:annotation>
<xsd:documentation>If specified, this element specifies the random number generator seed. If this field is left blank, a seed is generated and therefore, the simulation is not 100% deterministic. If a seed is specified here, this seed is used for the robot and neural simulation, making the simulation much more deterministic.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="physicsEngine" type="PhysicsEngine" minOccurs="0">
<xsd:annotation>
<xsd:documentation>If specified, this element denotes the physics simulator that should be used. We currently support either ODE or OpenSim.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="gzbridgesettings" type="GzBridgeSettings" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Settings for the relay of the component relaying information from the simulation backend to the visualization client.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name ="cloneDate" type ="xsd:dateTime" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>If specified, the date when the experiment was cloned</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="Timeout">
<xsd:simpleContent>
<xsd:extension base="xsd:double">
<xsd:attribute name="time" type="TimeoutTime"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="TimeoutTime">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="simulation"/>
<xsd:enumeration value="real"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="ExperimentControl">
<xsd:annotation>
<xsd:documentation>This type depicts a list of state machines</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="stateMachine" type="StateMachine" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>The actual state machines of this list of state machines</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GzBridgeSettings">
<xsd:sequence>
<xsd:element name="pose_update_delta_translation" type="xsd:float" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
The magnitude of translation delta by which a pose must change for it to be relayed to the frontend.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="pose_update_delta_rotation" type="xsd:float" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
The angle delta by which a pose must change for it to be relayed to the frontend.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="pose_update_early_threshold" type="xsd:float" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
Maximal period during which larger thresholds are used rather than those defined in gzbridgesettings.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="StateMachine" abstract="true">
<xsd:annotation>
<xsd:documentation>This abstract type depicts a state machine. Currently, State Machines in SMACH or SCXML are supported, though state machines in SCXML are currently ignored.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation>Any state machine must have an identifier. This identifier is used to communicate with the state machine and therefore must be an identifier.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="SMACHStateMachine">
<xsd:annotation>
<xsd:documentation>This type depicts a SMACH state machine. It is specified using a path to the source code of the state machine.</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="StateMachine">
<xsd:attribute name="src" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation>The path to an Python script that describes the state machine. This script has to have a variable with global scope that must have the name sm or stateMachine.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="ExD" type="ExD">
<xsd:annotation>
<xsd:documentation>The root element of a experiment configuration model must be an ExD object.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:schema>