skill_concurrency.xml
This example application shows the usage of a skill hierarchy.
With a low priority, the robot tracks target1 (“my_tracker”). With a high priority, the robot sequencially moves up and down along the z axis (“my_hierarchy”). After six seconds, the application terminates.
Models used
monitor_duration: lines 64, 78, 92, 111
skill_cartesian_tracking: lines 101
skill_cartesian_velocity: lines 57, 71, 85
skill_concurrency: lines 49
skill_lin: lines 42
skill_sequence: lines 33, 53
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This example application shows the usage of a skill hierarchy.
4
5With a low priority, the robot tracks target1 ("my_tracker"). With a high
6priority, the robot sequencially moves up and down along the z axis
7("my_hierarchy"). After six seconds, the application terminates.
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
48 <!-- Hierarchy: Move down (-z) and to target1 -->
49 <clone prototype="skill_concurrency">
50 <member id="skill_name">my_hierarchy</member>
51 <member id="skills">
52
53 <clone prototype="skill_sequence">
54 <member id="skills">
55
56 <!-- Move along axis (high priority) -->
57 <clone prototype="skill_cartesian_velocity">
58 <member id="skill_name">move_down</member>
59 <member id="tool_frame">tool</member>
60 <member id="velocity_frame">target1</member>
61 <member id="axes">z</member>
62 <member id="velocities">-0.02</member>
63 <member id="monitors">
64 <clone prototype="monitor_duration">
65 <member id="duration">2.0</member>
66 </clone>
67 </member>
68 </clone>
69
70 <!-- Move along axis (high priority) -->
71 <clone prototype="skill_cartesian_velocity">
72 <member id="skill_name">move_up</member>
73 <member id="velocity_frame">target1</member>
74 <member id="tool_frame">tool</member>
75 <member id="axes">z</member>
76 <member id="velocities">0.02</member>
77 <member id="monitors">
78 <clone prototype="monitor_duration">
79 <member id="duration">2.0</member>
80 </clone>
81 </member>
82 </clone>
83
84 <!-- Move along axis (high priority) -->
85 <clone prototype="skill_cartesian_velocity">
86 <member id="skill_name">move_down_again</member>
87 <member id="velocity_frame">target1</member>
88 <member id="tool_frame">tool</member>
89 <member id="axes">z</member>
90 <member id="velocities">-0.02</member>
91 <member id="monitors">
92 <clone prototype="monitor_duration">
93 <member id="duration">2.0</member>
94 </clone>
95 </member>
96 </clone>
97 </member>
98 </clone>
99
100 <!-- Track frame (low priority) to constrain remaining axes -->
101 <clone prototype="skill_cartesian_tracking">
102 <member id="skill_name">my_tracker</member>
103 <member id="tool_frame">tool</member>
104 <member id="target_frame">target1</member>
105 </clone>
106
107 </member>
108
109 <!-- Quit after 6 seconds -->
110 <member id="monitors">
111 <clone prototype="monitor_duration">
112 <member id="duration">6.0</member>
113 </clone>
114 </member>
115
116 </clone>
117
118
119 </member>
120
121 </clone>
122 </member>
123
124 </clone>
125
126</pitasc>