measurements.xml

This example application shows the usage of monitors.

Models used

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>