measurements.xml
This example application shows the usage of monitors.
Models used
monitor_threshold: lines 83, 132, 156, 180, 204
skill_concurrency: lines 65
skill_force: lines 75
skill_lin: lines 41, 96, 119, 143, 167, 191, 215
skill_partial_velocity: lines 47, 67, 102, 124, 148, 172, 196
skill_sequence: lines 35
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This example application shows the usage of monitors.
4
5-->
6
7<pitasc>
8
9 <models>
10 <include package="pitasc_library" file="models/pitasc.xml"/>
11 <include package="pitasc_library" file="models/skills.xml"/>
12
13 <include package="pitasc_library" file="universal_robots/ur.xml"/>
14 </models>
15
16 <clone prototype="project">
17
18 <member id="configuration">
19 <clone id="configuration" prototype="default_configuration"/>
20 </member>
21
22 <member id="environment">
23 <clone prototype="robot_ur5">
24 <member id="robot_driver.max_velocity">1.0</member>
25 <member id="robot_driver.max_acceleration">2.0</member>
26 <member id="components">
27 <clone prototype="force_sensor">
28 <member id="wrench_topic">wrench</member>
29 </clone>
30 </member>
31 </clone>
32 </member>
33
34 <member id="applications">
35 <clone prototype="skill_sequence">
36
37 <member id="robot" reference_id="environment.robot_ur5"/>
38
39 <member id="skills">
40
41 <clone prototype="skill_lin">
42 <member id="tool_frame">tool</member>
43 <member id="target_frame">start_position</member>
44 </clone>
45
46 <!-- monitor_wrench is not implemented yet -->
47 <!-- <clone prototype="skill_partial_velocity">
48 <member id="tool_frame">tool</member>
49 <member id="velocity_frame">start_position</member>
50 <member id="axes">z</member>
51 <member id="velocities">0.01</member>
52 <member id="monitors">
53
54 <clone prototype="monitor_wrench">
55 <member id="coordinate">z</member>
56 <member id="operator">absolute_greater</member>
57 <member id="threshold">10.0</member>
58 <member id="topic">/wrench</member>
59 <member id="frame">start_position</member>
60 </clone>
61
62 </member>
63 </clone> -->
64 <!-- but, monitor_threshold can observe wrenches as well with a little modification (concurrent skill_force): -->
65 <clone prototype="skill_concurrency">
66 <member id="skills">
67 <clone prototype="skill_partial_velocity">
68 <member id="tool_frame">tool</member>
69 <member id="axes">z</member>
70 <member id="velocities">0.02</member>
71 <member id="velocity_frame">start_position</member>
72 </clone>
73 <!-- create a force chain using a skill_force. This skill does not apply any forces (like skill_apply_force),
74 but creates the force chain that is used by the monitor -->
75 <clone id="force_skill" prototype="skill_force">
76 <member id="force_frame">start_position</member> <!-- this is the reference frame for the wrench -->
77 <!-- it is possible to use a different than the default force sensor: -->
78 <member id="force_sensor" reference_id="environment.robot_ur5.components.force_sensor"/>
79 </clone>
80 </member>
81
82 <member id="monitors">
83 <clone id="force_threshold" prototype="monitor_threshold">
84 <member id="provider" reference_id="skills.force_skill.collections.force_chain.chains[0]"/>
85 <member id="prefix" reference_id="skills.force_skill.collections.force_chain.prefix"/>
86 <member id="coordinates">z</member>
87 <member id="operator">absolute_greater</member>
88 <member id="thresholds">10</member>
89 <member id="samples">20</member> <!-- number of consecutive measurements which have to meet the threshold condition -->
90 </clone>
91 </member>
92
93 </clone>
94
95
96 <!-- <clone prototype="skill_lin">
97 <member id="tool_frame">tool</member>
98 <member id="target_frame">start_position</member>
99 </clone> -->
100
101 <!-- monitor_topic_threshold is not implemented yet -->
102 <!-- <clone prototype="skill_partial_velocity">
103 <member id="tool_frame">tool</member>
104 <member id="velocity_frame">start_position</member>
105 <member id="axes">z</member>
106 <member id="velocities">0.01</member>
107 <member id="monitors">
108
109 <clone prototype="monitor_topic_threshold">
110 <member id="topic">/wrench</member>
111 <member id="field">wrench.force.x</member>
112 <member id="operator">absolute_greater</member>
113 <member id="threshold">10.0</member>
114 </clone>
115
116 </member>
117 </clone> -->
118
119 <clone prototype="skill_lin">
120 <member id="tool_frame">tool</member>
121 <member id="target_frame">start_position</member>
122 </clone>
123
124 <clone id="threshold_x" prototype="skill_partial_velocity">
125 <member id="tool_frame">tool</member>
126 <member id="velocity_frame">start_position</member>
127 <member id="axes">x</member>
128 <member id="velocities">0.08</member>
129
130 <!-- Quit when the x-cooridnate exceeds 0.1[m] -->
131 <member id="monitors">
132 <clone prototype="monitor_threshold">
133 <member id="provider" reference_id="skills.move_skill.collections.target_to_tool.chains[0]"/>
134 <member id="coordinates">x</member>
135 <member id="prefix" reference_id="skills.move_skill.collections.target_to_tool.prefix"/>
136 <member id="operator">absolute_greater</member>
137 <member id="thresholds">0.1</member>
138 </clone>
139 </member>
140
141 </clone>
142
143 <clone prototype="skill_lin">
144 <member id="tool_frame">tool</member>
145 <member id="target_frame">start_position</member>
146 </clone>
147
148 <clone id="threshold_xy_single" prototype="skill_partial_velocity">
149 <member id="tool_frame">tool</member>
150 <member id="velocity_frame">start_position</member>
151 <member id="axes">x,y</member>
152 <member id="velocities">0.08, 0.04</member>
153
154 <!-- Quit when one of the x- and y- cooridnate exceed 0.1[m] -->
155 <member id="monitors">
156 <clone prototype="monitor_threshold">
157 <member id="provider" reference_id="skills.move_skill.collections.target_to_tool.chains[0]"/>
158 <member id="coordinates">x,y</member>
159 <member id="prefix" reference_id="skills.move_skill.collections.target_to_tool.prefix"/>
160 <member id="operator">absolute_greater</member>
161 <member id="thresholds">0.1</member> <!-- you can use different thresholds for each axis as well -->
162 <member id="multi_coordinates_handling">single_element</member>
163 </clone>
164 </member>
165 </clone>
166
167 <clone prototype="skill_lin">
168 <member id="tool_frame">tool</member>
169 <member id="target_frame">start_position</member>
170 </clone>
171
172 <clone id="threshold_xy_norm" prototype="skill_partial_velocity">
173 <member id="tool_frame">tool</member>
174 <member id="velocity_frame">start_position</member>
175 <member id="axes">x,y</member>
176 <member id="velocities">0.08, 0.04</member>
177
178 <!-- Quit when the vector norm of (x,y) exceeds 0.1[m] -->
179 <member id="monitors">
180 <clone prototype="monitor_threshold">
181 <member id="provider" reference_id="skills.move_skill.collections.target_to_tool.chains[0]"/>
182 <member id="coordinates">x,y</member>
183 <member id="prefix" reference_id="skills.move_skill.collections.target_to_tool.prefix"/>
184 <member id="operator">absolute_greater</member>
185 <member id="thresholds">0.1</member>
186 <member id="multi_coordinates_handling">vector_norm</member>
187 </clone>
188 </member>
189 </clone>
190
191 <clone prototype="skill_lin">
192 <member id="tool_frame">tool</member>
193 <member id="target_frame">start_position</member>
194 </clone>
195
196 <clone id="threshold_xy_all" prototype="skill_partial_velocity">
197 <member id="tool_frame">tool</member>
198 <member id="velocity_frame">start_position</member>
199 <member id="axes">x,y</member>
200 <member id="velocities">0.08, 0.04</member>
201
202 <!-- Quit when the x- AND y- cooridnate exceed 0.1[m] -->
203 <member id="monitors">
204 <clone prototype="monitor_threshold">
205 <member id="provider" reference_id="skills.move_skill.collections.target_to_tool.chains[0]"/>
206 <member id="coordinates">x,y</member>
207 <member id="prefix" reference_id="skills.move_skill.collections.target_to_tool.prefix"/>
208 <member id="operator">absolute_greater</member>
209 <member id="thresholds">0.1</member>
210 <member id="multi_coordinates_handling">all_elements</member>
211 </clone>
212 </member>
213 </clone>
214
215 <clone prototype="skill_lin">
216 <member id="tool_frame">tool</member>
217 <member id="target_frame">start_position</member>
218 </clone>
219
220 </member>
221
222 </clone>
223 </member>
224
225 </clone>
226
227</pitasc>