pitasc_library - models/coordination.xml
Model definitions
line 55: skill
line 122: skill_single_robot
line 141: skill_statechart
line 172: skill_sequence
line 203: skill_concurrency
line 228: skill_parallel
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<pitasc>
4
5 <models>
6
7 <type id="transition" prototype="dictionary">
8 <meta>
9 <member id="description">Links an event to a target skill.</member>
10 <member id="visibility">hidden</member>
11 </meta>
12 <data>
13 <type id="event" prototype="string_parameter">
14 <meta>
15 <member id="description">Event name.</member>
16 <member id="visibility">required</member>
17 </meta>
18 </type>
19 <type id="target" prototype="string_parameter">
20 <meta>
21 <member id="description">Name of the target skill.</member>
22 <member id="visibility">required</member>
23 </meta>
24 </type>
25 </data>
26 </type>
27
28 <type id="monitor" prototype="object">
29 <meta>
30 <member id="description">Monitors specified data</member>
31 <member id="categories">internal</member>
32 <member id="visibility">hidden</member>
33 </meta>
34 <data>
35 <type id="event" prototype="string_parameter">
36 <meta>
37 <member id="description">Primary event that is triggered by the monitor</member>
38 <member id="visibility">basic</member>
39 </meta>
40 <data>succeeded</data>
41 </type>
42 </data>
43 </type>
44
45 <type id="script" prototype="object">
46 <meta>
47 <member id="description">An executable script</member>
48 <member id="categories">internal</member>
49 </meta>
50 </type>
51
52
53 <!-- Skills -->
54
55 <type id="skill" prototype="object">
56 <meta>
57 <member id="description">A skill</member>
58 <member id="categories">internal</member>
59 <member id="implementation">
60 <clone prototype="cpp">
61 <member id="lib">cppitasc_skills</member>
62 <member id="class">Skill</member>
63 <member id="arguments">skill_name, loops, tasks, bounds,
64 monitors, transitions, scripts, robot
65 </member>
66 </clone>
67 </member>
68 <member id="visibility">expert</member>
69 </meta>
70 <data>
71 <type id="skill_name" prototype="string_parameter">
72 <meta>
73 <member id="description">Name of this skill. Must be locally unique.</member>
74 <member id="visibility">expert</member>
75 </meta>
76 </type>
77 <type id="collections" data_type="list:collection" prototype="base">
78 <meta>
79 <member id="description">Contains the kinematic chains of the skill (feature, robot, object chains).</member>
80 <member id="visibility">expert</member>
81 </meta>
82 </type>
83 <type id="loops" data_type="list:kinematic_loop" prototype="base">
84 <meta>
85 <member id="description">Contains the kinematic loop(s) that define the task to be solved.</member>
86 <member id="visibility">expert</member>
87 </meta>
88 </type>
89 <type id="tasks" data_type="list:task" prototype="base">
90 <meta>
91 <member id="description">Contains the task description(s).</member>
92 <member id="visibility">expert</member>
93 </meta>
94 </type>
95 <type id="bounds" data_type="list:bound" prototype="base">
96 <meta>
97 <member id="description">Contains the bounds description(s).</member>
98 <member id="visibility">expert</member>
99 </meta>
100 </type>
101 <type id="monitors" data_type="list:monitor" prototype="base">
102 <meta>
103 <member id="description">Contains the monitors of the skill that determine when the skill should terminate.</member>
104 <member id="visibility">expert</member>
105 </meta>
106 </type>
107 <type id="transitions" data_type="list:transition" prototype="base">
108 <meta>
109 <member id="description">Contains additional transitions to other states (skills), given an event name.</member>
110 <member id="visibility">expert</member>
111 </meta>
112 </type>
113 <type id="scripts" data_type="list:script" prototype="base">
114 <meta>
115 <member id="description">Contains scripts that should be executed while the skill is active.</member>
116 <member id="visibility">expert</member>
117 </meta>
118 </type>
119 </data>
120 </type>
121
122 <type id="skill_single_robot" prototype="skill">
123 <meta>
124 <member id="description">Base model for all skills with a single robot</member>
125 <member id="categories">internal</member>
126 <member id="visibility">expert</member>
127 </meta>
128 <data>
129 <!-- ToDo: somehow this breaks -->
130 <!-- <type id="robot" prototype="robot_prototype" reference_id="environment.robot">
131 <meta>
132 <member id="description">A reference to the robot</member>
133 </meta>
134 </type> -->
135 <reference id="robot" prototype="robot_prototype" reference_id="robot"/>
136 <member id="robot.meta.description">Robot that is controlled by the skill (only needs to be set at the application level).</member>
137 <member id="robot.meta.visibility">basic</member>
138 </data>
139 </type>
140
141 <type id="skill_statechart" prototype="skill_single_robot">
142 <meta>
143 <member id="description">Group of skills which are connected in a state machine.</member>
144 <member id="categories">composition</member>
145 <member id="implementation">
146 <clone prototype="cpp">
147 <member id="lib">cppitasc_skills</member>
148 <member id="class">SkillGroup</member>
149 <member id="arguments">skill_name, loops, tasks, bounds,
150 monitors, transitions, scripts,
151 initial_skill, skills, robot
152 </member>
153 </clone>
154 </member>
155 </meta>
156 <data>
157 <type id="initial_skill" prototype="string_parameter">
158 <meta>
159 <member id="description">First skill to run.</member>
160 <member id="visibility">required</member>
161 </meta>
162 </type>
163 <type id="skills" data_type="list:skill" prototype="base">
164 <meta>
165 <member id="description">Sub-skills that are connected in a state machine.</member>
166 <member id="visibility">required</member>
167 </meta>
168 </type>
169 </data>
170 </type>
171
172 <type id="skill_sequence" prototype="skill_single_robot">
173 <meta>
174 <member id="description">List of skills which are executed in sequence.</member>
175 <member id="categories">composition</member>
176 <member id="implementation">
177 <clone prototype="cpp">
178 <member id="lib">cppitasc_skills</member>
179 <member id="class">SkillSequence</member>
180 <member id="arguments">skill_name, loops, tasks, bounds,
181 monitors, transitions, scripts,
182 initial_skill, skills, robot
183 </member>
184 </clone>
185 </member>
186 </meta>
187 <data>
188 <type id="initial_skill" prototype="string_parameter">
189 <meta>
190 <member id="description">First skill to run.</member>
191 <member id="visibility">expert</member>
192 </meta>
193 </type>
194 <type id="skills" data_type="list:skill" prototype="base">
195 <meta>
196 <member id="description">Sub-skills that are executed in sequence.</member>
197 <member id="visibility">required</member>
198 </meta>
199 </type>
200 </data>
201 </type>
202
203 <type id="skill_concurrency" prototype="skill_single_robot">
204 <meta>
205 <member id="description">Hierarchy of skills which are executed simultaneously.</member>
206 <member id="categories">composition</member>
207 <member id="implementation">
208 <clone prototype="cpp">
209 <member id="lib">cppitasc_skills</member>
210 <member id="class">SkillHierarchy</member>
211 <member id="arguments">skill_name, loops, tasks, bounds,
212 monitors, transitions, scripts,
213 skills, robot
214 </member>
215 </clone>
216 </member>
217 </meta>
218 <data>
219 <type id="skills" data_type="list:skill" prototype="base">
220 <meta>
221 <member id="description">Sub-skills that are executed simultaneously.</member>
222 <member id="visibility">required</member>
223 </meta>
224 </type>
225 </data>
226 </type>
227
228 <type id="skill_parallel" prototype="skill_single_robot">
229 <meta>
230 <member id="description">Hierarchy of skills which are executed simultaneously. Ends with 'succeeded' only if **all** subskills triggered 'succeeded'.
231
232 If a subskill cannot finish with 'succeeded', it does not block the skill_parallel, except when there is no subskill that can trigger 'succeeded'.
233
234 As soon as one skill finishes, this skill drops out of the control hierarchy. **This means that the control hierarchy gets updated, resulting in a potentially fundamentally different robot behavior (due to the projection).**
235 </member>
236 <member id="categories">composition</member>
237 <member id="implementation">
238 <clone prototype="cpp">
239 <member id="lib">cppitasc_skills</member>
240 <member id="class">SkillParallel</member>
241 <member id="arguments">skill_name, loops, tasks, bounds,
242 monitors, transitions, scripts,
243 skills, robot
244 </member>
245 </clone>
246 </member>
247 </meta>
248 <data>
249 <type id="skills" data_type="list:skill" prototype="base">
250 <meta>
251 <member id="description">Sub-skills that are executed simultaneously.</member>
252 <member id="visibility">required</member>
253 </meta>
254 </type>
255 </data>
256 </type>
257
258 </models>
259
260</pitasc>