simple_count.xml
This example application shows a minimal project that uses the counter skill
Models used
monitor_duration: lines 77
monitor_execution_counter: lines 73, 102
skill_counter_condition: lines 60
skill_idle: lines 70, 99
skill_idle_duration: lines 50, 95
skill_relative_ptp: lines 45
skill_sequence: lines 36
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This example application shows a minimal project that uses the counter skill
4-->
5
6<pitasc>
7
8 <models>
9 <!-- Include pitasc -->
10 <include package="pitasc_library" file="models/pitasc.xml"/>
11
12 <!-- Include the UR5 -->
13 <include package="pitasc_library" file="universal_robots/ur.xml"/>
14
15 <!-- Include the idle skill -->
16 <include package="pitasc_library" file="models/skills.xml"/>
17
18 </models>
19
20 <!-- Create a project -->
21 <clone prototype="project">
22
23 <member id="configuration">
24 <!-- Use the default configuration with recommended settings -->
25 <clone id="configuration" prototype="default_configuration"/>
26 </member>
27
28 <member id="environment">
29 <!-- Add a UR5 -->
30 <clone prototype="robot_ur5"/>
31 </member>
32
33 <member id="applications">
34
35 <!-- Use a skill sequence as a container -->
36 <clone prototype="skill_sequence">
37
38 <!-- Use the UR5 for this skill (and for its subskill) -->
39 <member id="robot" reference_id="environment.robot_ur5"/>
40
41 <!-- Add subskill(s) -->
42 <member id="skills">
43
44 <!-- needed, because pitasc does not create the robot publisher otherwise -->
45 <clone prototype="skill_relative_ptp">
46 <member id="relative_joint_state">0, 0, 0, 0, 0, 0</member>
47 </clone>
48
49 <!-- Idle for 3 seconds -->
50 <clone id="skill_test" prototype="skill_idle_duration">
51 <member id="duration">0.5</member>
52 </clone>
53
54 <!-- Basic usage of the counter condition skill, every
55 time the skill is executed, the counter gets ++
56 and is switched to repeat target.
57 If the condition is reached, it is switched to
58 condition_target
59 -->
60 <clone id="first_level" prototype="skill_counter_condition">
61 <member id="repeat_target">skill_test</member>
62 <member id="condition_target">succeeded</member>
63 <member id="count">10</member>
64 </clone>
65
66
67 <!-- You can also use the monitor, which immediatle triggers
68 a event based on the condition variable
69 -->
70 <clone id="monitor_test" prototype="skill_idle">
71
72 <member id="monitors">
73 <clone prototype="monitor_execution_counter">
74 <member id="event">yay</member>
75 <member id="count">5</member>
76 </clone>
77 <clone prototype="monitor_duration">
78 <member id="event">nope</member>
79 <member id="duration">1.0</member>
80 </clone>
81
82 </member>
83 <member id="transitions">
84 <clone prototype="transition">
85 <member id="event">nope</member>
86 <member id="target">monitor_test</member>
87 </clone>
88 <clone prototype="transition">
89 <member id="event">yay</member>
90 <member id="target">succeeded</member>
91 </clone>
92 </member>
93 </clone>
94
95 <clone id="test_monitor_reject_fire" prototype="skill_idle_duration">
96 <member id="duration">0.5</member>
97 </clone>
98
99 <clone id="monitor_reject_fire" prototype="skill_idle">
100
101 <member id="monitors">
102 <clone prototype="monitor_execution_counter">
103 <member id="event">yay</member>
104 <member id="count">5</member>
105 <member id="fire_on_reject">true</member>
106 <member id="reject_event">nope</member>
107 </clone>
108 </member>
109 <member id="transitions">
110 <clone prototype="transition">
111 <member id="event">nope</member>
112 <member id="target">test_monitor_reject_fire</member>
113 </clone>
114 <clone prototype="transition">
115 <member id="event">yay</member>
116 <member id="target">succeeded</member>
117 </clone>
118 </member>
119 </clone>
120
121
122 </member>
123
124 </clone>
125
126 </member>
127
128 </clone>
129
130</pitasc>