pitasc_library - skills/skill_ruckig.xml
Model definitions
line 8: skill_lin_time_optimal_ruckig
line 243: skill_guarded_lin_ruckig
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>