pitasc_library - models/coordination.xml

Model definitions

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>