pitasc_library - skills/skill_ruckig.xml

Model definitions

File contents

  1<?xml version="1.0" encoding="UTF-8"?>
  2
  3<pitasc>
  4
  5    <models>
  6        <include package="pitasc_library" file="skills/skill_cartesian.xml" />
  7
  8        <type id="skill_lin_time_optimal_ruckig" prototype="skill_cartesian">
  9            <meta>
 10                <member id="description">LIN movement from the current pose to the target. Follows a
 11                    time-optimal trajectory with constant acceleration.</member>
 12                <member id="visibility">basic</member>
 13            </meta>
 14
 15            <data>
 16                <!-- Task description -->
 17                <type id="axes" prototype="string_csv">
 18                    <meta>
 19                        <member id="description">List of axes to be aligned.</member>
 20                        <clone prototype="restrictions">
 21                            <clone prototype="enum">x, y, z, a, b, c</clone>
 22                        </clone>
 23                        <member id="visibility">basic</member>
 24                    </meta>
 25                    <data>x, y, z, a, b, c</data>
 26                </type>
 27                <type id="target_offsets" prototype="float_csv">
 28                    <meta>
 29                        <member id="description">Offsets of the axes to be aligned. Must be the same
 30                            number of values as for 'axes'. If no value is provided, 0 is used for
 31                            all axes.</member>
 32                        <clone prototype="restrictions">
 33                            <clone prototype="float_csv_min">-10.0, -10.0, -10.0, -3.14, -3.14,
 34                                -3.14</clone>
 35                            <clone prototype="float_csv_max">10.0, 10.0, 10.0, 3.14, 3.14, 3.14</clone>
 36                        </clone>
 37                        <member id="visibility">basic</member>
 38                    </meta>
 39                    <data></data>
 40                </type>
 41
 42                <!-- Setpoint generation -->
 43                <type id="trajectory_duration" prototype="float_parameter">
 44                    <meta>
 45                        <member id="description">Duration of the trajectory in [s]. '0' means as
 46                            fast as possible. Is expanded accordingly if in conflict with maximal
 47                            linear veloctiy.</member>
 48                        <member id="visibility">expert</member>
 49                    </meta>
 50                    <data>0</data>
 51                </type>
 52
 53                <!-- Control -->
 54                <type id="max_linear_velocity" prototype="float_parameter">
 55                    <meta>
 56                        <member id="description">Max linear velocity.</member>
 57                        <member id="visibility">basic</member>
 58                    </meta>
 59                    <data>1.0</data>
 60                </type>
 61                <type id="max_angular_velocity" prototype="float_parameter">
 62                    <meta>
 63                        <member id="description">Max angular velocity.</member>
 64                        <member id="visibility">basic</member>
 65                    </meta>
 66                    <data>1.5</data>
 67                </type>
 68                <type id="max_linear_acceleration" prototype="float_parameter">
 69                    <meta>
 70                        <member id="description">Max linear acceleration.</member>
 71                        <member id="visibility">basic</member>
 72                    </meta>
 73                    <data>1.0</data>
 74                </type>
 75                <type id="max_angular_acceleration" prototype="float_parameter">
 76                    <meta>
 77                        <member id="description">Max angular acceleration.</member>
 78                        <member id="visibility">basic</member>
 79                    </meta>
 80                    <data>3.0</data>
 81                </type>
 82                <type id="max_linear_jerk" prototype="float_parameter">
 83                    <meta>
 84                        <member id="description">Max linear jerk.</member>
 85                        <member id="visibility">basic</member>
 86                    </meta>
 87                    <data>1.00001</data>
 88                </type>
 89                <type id="max_angular_jerk" prototype="float_parameter">
 90                    <meta>
 91                        <member id="description">Max angular jerk.</member>
 92                        <member id="visibility">basic</member>
 93                    </meta>
 94                    <data>1.0001</data>
 95                </type>
 96
 97                <type id="linear_controller_gain" prototype="float_parameter">
 98                    <meta>
 99                        <member id="description">Specifies the approx. linear gain of the controller
100                            transfer function for Cartesian positions (i.e. x,y and z).</member>
101                        <member id="visibility">expert</member>
102                    </meta>
103                    <data>3</data>
104                </type>
105                <type id="angular_controller_gain" prototype="float_parameter">
106                    <meta>
107                        <member id="description">Specifies the approx. angular gain of the
108                            controller transfer function for Cartesian angles (i.e. a,b and c).</member>
109                        <member id="visibility">expert</member>
110                    </meta>
111                    <data>3</data>
112                </type>
113                <type id="linear_ff_controller_gain" prototype="float_parameter">
114                    <meta>
115                        <member id="description">Specifies the linear velocity feed-forward gain of
116                            the controller</member>
117                        <member id="visibility">expert</member>
118                    </meta>
119                    <data>0.7</data>
120                </type>
121                <type id="angular_ff_controller_gain" prototype="float_parameter">
122                    <meta>
123                        <member id="description">Specifies the angular velocity feed-forward gain of
124                            the controller</member>
125                        <member id="visibility">expert</member>
126                    </meta>
127                    <data>0.7</data>
128                </type>
129
130                <type id="positioning_accuracy" prototype="float_csv">
131                    <meta>
132                        <member id="description">Positioning accuracy for x y z a b c in m resp. rad</member>
133                        <member id="visibility">basic</member>
134                    </meta>
135                    <data>0.001, 0.001, 0.001, 0.005, 0.005, 0.005</data>
136                </type>
137
138                <!-- Coordination -->
139                <type id="positioning_monitor" prototype="monitor_distance">
140                    <meta>
141                        <member id="description">Checks whether the target frame has been reached.</member>
142                        <member id="visibility">expert</member>
143                    </meta>
144                    <data>
145                        <member id="reference_frame" reference_id="target_frame" />
146                        <member id="target_offsets" reference_id="target_offsets" />
147                        <member id="frame" reference_id="tool_frame" />
148                        <member id="coordinates" reference_id="axes" />
149                        <member id="distance_coordinates">x, y, z, a, b, c</member>
150                        <member id="distances" reference_id="positioning_accuracy" />
151                        <member id="operator">absolute_less</member>
152
153                    </data>
154                </type>
155
156                <member id="positioning_monitor.distance_coordinates.meta.visibility">expert</member>
157                <member id="positioning_monitor.operator.meta.visibility">hidden</member>
158
159                <member id="monitors">
160                    <reference reference_id="positioning_monitor" />
161                </member>
162
163                <!-- Implementation details below: -->
164
165                <member id="tasks">
166                    <clone id="tracking" prototype="task"> <!-- how to specify visibility here? leave
167                        on hidden? -->
168                        <member id="coordinates" reference_id="axes" />
169                        <member id="prefix" reference_id="collections.target_to_tool.prefix" />
170
171                        <member id="setpoint_generators">
172                            <clone id="setpoint" prototype="ruckig_setpoint">
173                                <member id="data_source">
174                                    <reference reference_id="collections.target_to_tool.chains[0]" />
175                                </member>
176                                <member id="desired" reference_id="target_offsets" />
177                                <member id="coordinates" reference_id="coordinates" />
178                                <member id="prefix" reference_id="prefix" />
179                                <member id="duration" reference_id="trajectory_duration" />
180                                <member id="max_vel_groups">
181                                    <reference reference_id="max_linear_velocity" />
182                                    <reference reference_id="max_angular_velocity" />
183                                </member>
184                                <member id="max_acc_groups">
185                                    <reference reference_id="max_linear_acceleration" />
186                                    <reference reference_id="max_angular_acceleration" />
187                                </member>
188                                <member id="max_jrk_groups">
189                                    <reference reference_id="max_linear_jerk" />
190                                    <reference reference_id="max_angular_jerk" />
191                                </member>
192                                <member id="symbol_groups">
193                                    <clone id="position_coordinates" prototype="string_csv">x, y, z</clone>
194                                    <clone id="orientation_coordinates" prototype="string_csv">a, b,
195                                        c</clone>
196                                </member>
197
198                            </clone>
199                        </member>
200
201                        <member id="controllers">
202                            <!-- position controller -->
203                            <clone prototype="trajectory_p_controller">
204                                <!-- <member id="limit" reference_id="max_linear_velocity"/> -->
205                                <member id="gain" reference_id="linear_controller_gain" />
206                                <member id="limit">10.0</member>
207                                <member id="ff_gain" reference_id="linear_ff_controller_gain" />
208                                <member id="data_source">
209                                    <reference reference_id="collections.target_to_tool.chains[0]" />
210                                </member>
211                                <member id="setpoint_generator">
212                                    <reference reference_id="setpoint_generators.setpoint" />
213                                </member>
214                                <member id="coordinates"
215                                    reference_id="setpoint_generators.setpoint.symbol_groups.position_coordinates" />
216                                <member id="prefix" reference_id="prefix" />
217                            </clone>
218
219                            <!-- orientation controller -->
220                            <clone prototype="trajectory_p_controller">
221                                <!-- <member id="limit" reference_id="max_angular_velocity"/>-->
222                                <member id="gain" reference_id="angular_controller_gain" />
223                                <member id="limit">30.0</member>
224                                <member id="ff_gain" reference_id="angular_ff_controller_gain" />
225                                <member id="data_source">
226                                    <reference reference_id="collections.target_to_tool.chains[0]" />
227                                </member>
228                                <member id="setpoint_generator">
229                                    <reference reference_id="setpoint_generators.setpoint" />
230                                </member>
231                                <member id="coordinates"
232                                    reference_id="setpoint_generators.setpoint.symbol_groups.orientation_coordinates" />
233                                <member id="prefix" reference_id="prefix" />
234                            </clone>
235                        </member>
236                    </clone>
237                </member>
238                <member id="tasks.meta.visibility">hidden</member>
239
240            </data>
241        </type>
242
243        <type id="skill_guarded_lin_ruckig" prototype="skill_concurrency">
244            <meta>
245                <member id="description">Causes a linear motion with the ruckig trajectory generator
246                    until a specified force value is
247                    reached </member>
248                <member id="categories">single_robot, force_controlled</member>
249            </meta>
250
251            <data>
252
253                <type id="tool_frame" prototype="frame">
254                    <meta>
255                        <member id="description">Name of the tool frame.</member>
256                        <member id="visibility">required</member>
257                    </meta>
258                </type>
259
260                <type id="target_frame" prototype="frame">
261                    <meta>
262                        <member id="description">Name of the target frame.</member>
263                        <member id="visibility">required</member>
264                    </meta>
265                </type>
266
267                <type id="axes" prototype="string_csv">
268                    <meta>
269                        <member id="description">List of axes to be aligned.</member>
270                        <member id="visibility">basic</member>
271                        <clone prototype="restrictions">
272                            <clone prototype="enum">x, y, z, a, b, c</clone>
273                        </clone>
274                    </meta>
275                    <data>x, y, z, a, b, c</data>
276                </type>
277
278                <type id="target_offsets" prototype="float_csv">
279                    <meta>
280                        <member id="description">Offsets of the axes to be aligned. Must be the same
281                            number of values as for 'axes'.</member>
282                        <member id="visibility">basic</member>
283                        <clone prototype="restrictions">
284                            <clone prototype="float_csv_min">-10.0, -10.0, -10.0, -3.14, -3.14,
285                                -3.14</clone>
286                            <clone prototype="float_csv_max">10.0, 10.0, 10.0, 3.14, 3.14, 3.14</clone>
287                        </clone>
288                    </meta>
289                    <data>0, 0, 0, 0, 0, 0</data>
290                </type>
291
292                <type id="max_linear_velocity" prototype="float_parameter">
293                    <meta>
294                        <member id="description">
295                            Max linear velocity.
296                        </member>
297                        <member id="visibility">basic</member>
298                    </meta>
299                    <data>1.0</data>
300                </type>
301
302                <type id="max_angular_velocity" prototype="float_parameter">
303                    <meta>
304                        <member id="description">
305                            Max angular velocity.
306                        </member>
307                        <member id="visibility">basic</member>
308                    </meta>
309                    <data>1.5</data>
310                </type>
311
312                <type id="max_linear_acceleration" prototype="float_parameter">
313                    <meta>
314                        <member id="description">Max linear acceleration.</member>
315                        <member id="visibility">basic</member>
316                    </meta>
317                    <data>1.0</data>
318                </type>
319                <type id="max_angular_acceleration" prototype="float_parameter">
320                    <meta>
321                        <member id="description">Max angular acceleration.</member>
322                        <member id="visibility">basic</member>
323                    </meta>
324                    <data>3.0</data>
325                </type>
326                <type id="max_linear_jerk" prototype="float_parameter">
327                    <meta>
328                        <member id="description">Max linear jerk.</member>
329                        <member id="visibility">basic</member>
330                    </meta>
331                    <data>1.0</data>
332                </type>
333                <type id="max_angular_jerk" prototype="float_parameter">
334                    <meta>
335                        <member id="description">Max angular jerk.</member>
336                        <member id="visibility">basic</member>
337                    </meta>
338                    <data>1.0</data>
339                </type>
340                <type id="linear_controller_gain" prototype="float_parameter">
341                    <meta>
342                        <member id="description">
343                            Specifies the approx. linear gain of the controller transfer function
344                            for Cartesian positions (i.e. x,y and z).
345                        </member>
346                        <member id="visibility">expert</member>
347                    </meta>
348                    <data>3</data>
349                </type>
350                <type id="angular_controller_gain" prototype="float_parameter">
351                    <meta>
352                        <member id="description">
353                            Specifies the approx. linear gain of the controller transfer function
354                            for Cartesian angles (i.e. a,b and c).
355                        </member>
356                        <member id="visibility">expert</member>
357                    </meta>
358                    <data>3</data>
359                </type>
360
361                <type id="max_forces" prototype="float_csv">
362                    <meta>
363                        <member id="description">Forces in [N].</member>
364                        <member id="visibility">basic</member>
365                    </meta>
366                    <data>10.0,10.0,10.0</data>
367                </type>
368
369                <type id="monitor_axes" prototype="string_csv">
370                    <meta>
371                        <member id="description">The directions that are monitored for occuring
372                            forces (can be multiple axes).</member>
373                        <member id="visibility">basic</member>
374                        <clone prototype="restrictions">
375                            <clone prototype="enum">x, y, z</clone>
376                        </clone>
377                    </meta>
378                    <data>x,y,z</data>
379                </type>
380
381                <!-- Implementation details below: -->
382                <clone id="move_skill" prototype="skill_lin_time_optimal_ruckig">
383                    <member id="tool_frame" reference_id="tool_frame" />
384                    <member id="target_frame" reference_id="target_frame" />
385                    <member id="axes" reference_id="axes" />
386                    <member id="target_offsets" reference_id="target_offsets" />
387
388                    <member id="max_linear_velocity" reference_id="max_linear_velocity" />
389                    <member id="max_angular_velocity" reference_id="max_angular_velocity" />
390
391                    <member id="max_linear_acceleration" reference_id="max_linear_acceleration" />
392                    <member id="max_angular_acceleration" reference_id="max_angular_acceleration" />
393
394                    <member id="max_linear_jerk" reference_id="max_linear_jerk" />
395                    <member id="max_angular_jerk" reference_id="max_angular_jerk" />
396
397                    <member id="linear_controller_gain" reference_id="linear_controller_gain" />
398                    <member id="angular_controller_gain" reference_id="angular_controller_gain" />
399                </clone>
400                <member id="move_skill.meta.visibility">expert</member>
401
402                <clone id="force_skill" prototype="skill_force">
403                    <member id="force_frame" reference_id="target_frame" />
404                </clone>
405                <member id="force_skill.meta.visibility">expert</member>
406
407                <type id="event" prototype="string_parameter">
408                    <meta>
409                        <member id="description">The event to be triggered when force limit is
410                            reached.</member>
411                        <member id="visibility">basic</member>
412                    </meta>
413                    <data>succeeded</data>
414                </type>
415
416
417                <member id="monitors">
418                    <clone id="force_threshold" prototype="monitor_threshold">
419                        <member id="provider"
420                            reference_id="force_skill.collections.force_chain.chains[0]" />
421                        <member id="coordinates" reference_id="monitor_axes" />
422                        <member id="prefix"
423                            reference_id="force_skill.collections.force_chain.prefix" />
424                        <member id="operator">absolute_greater</member>
425                        <member id="thresholds" reference_id="max_forces" />
426                        <member id="event" reference_id="event" />
427                    </clone>
428                </member>
429
430                <member id="skills">
431                    <reference reference_id="move_skill" />
432                    <reference reference_id="force_skill" />
433                </member>
434                <member id="skills.meta.visibility">expert</member>
435
436            </data>
437        </type>
438
439    </models>
440
441</pitasc>