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

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>