skill_parallel.xml
This example application shows the usage of a skill_parallel.
2 idle_duration skills will be executed. skill_parallel only finishes after the last skill_idle_duration is done. A third skill (skill_idle) never fires “succeeded”, but skill_parallel is not blocked by this.
Models used
skill_idle: lines 63
skill_idle_duration: lines 52, 57
skill_lin: lines 42, 71
skill_parallel: lines 47
skill_sequence: lines 33
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This example application shows the usage of a skill_parallel.
4
52 idle_duration skills will be executed. skill_parallel only finishes
6after the last skill_idle_duration is done. A third skill (skill_idle)
7never fires "succeeded", but skill_parallel is not blocked by this.
8-->
9
10<pitasc>
11
12 <models>
13 <include package="pitasc_library" file="models/pitasc.xml"/>
14 <include package="pitasc_library" file="models/skills.xml"/>
15
16 <include package="pitasc_library" file="universal_robots/ur.xml"/>
17 </models>
18
19 <clone prototype="project">
20
21 <member id="configuration">
22 <clone id="configuration" prototype="default_configuration"/>
23 </member>
24
25 <member id="environment">
26 <clone prototype="robot_ur5">
27 <member id="robot_driver.max_velocity">2.0</member>
28 <member id="robot_driver.max_acceleration">3.0</member>
29 </clone>
30 </member>
31
32 <member id="applications">
33 <clone id="my_application" prototype="skill_sequence">
34
35 <!-- Use this robot for this skill and all its subskills -->
36 <member id="robot" reference_id="environment.robot_ur5"/>
37
38 <!-- Add skills -->
39 <member id="skills">
40
41 <!-- First move to start position -->
42 <clone prototype="skill_lin">
43 <member id="tool_frame">tool</member>
44 <member id="target_frame">target1</member>
45 </clone>
46
47 <clone prototype="skill_parallel">
48 <member id="skill_name">my_parallel</member>
49 <member id="skills">
50
51 <!-- idle with different durations to show skill_parallel functionality -->
52 <clone id="short_duration" prototype="skill_idle_duration">
53 <member id="skill_name">duration</member>
54 <member id="duration">0.0</member>
55 </clone>
56
57 <clone id="long_duration" prototype="skill_idle_duration">
58 <member id="skill_name">duration</member>
59 <member id="duration">3.0</member>
60 </clone>
61
62 <!-- Skills that never succeed don't block skill_parallel -->
63 <clone id="inf_duration" prototype="skill_idle">
64 </clone>
65
66 </member>
67
68 </clone>
69
70 <!-- Move to different end position to highlight when skill_parallel finishes -->
71 <clone prototype="skill_lin">
72 <member id="tool_frame">tool</member>
73 <member id="target_frame">target2</member>
74 </clone>
75
76
77 </member>
78
79 </clone>
80 </member>
81
82 </clone>
83
84</pitasc>