forces.xml

This example application shows the usage of some force skills. Move to a target, establishes a contact, pushes for some seconds, keeps on pushing while moving in another direction (slide), returns to the initial target

Models used

File contents

  1<?xml version="1.0" encoding="UTF-8"?>
  2
  3<!-- This example application shows the usage of some force skills.
  4Move to a target, establishes a contact, pushes for some seconds,
  5keeps on pushing while moving in another direction (slide), returns to the initial target
  6-->
  7
  8<pitasc>
  9
 10    <models>
 11        <include package="pitasc_library" file="models/pitasc.xml"/>
 12        <include package="pitasc_library" file="models/skills.xml"/>
 13
 14        <include package="pitasc_library" file="universal_robots/ur.xml"/>
 15    </models>
 16
 17    <clone prototype="project">
 18
 19        <member id="configuration">
 20            <clone id="configuration" prototype="default_configuration"/>
 21        </member>
 22
 23        <member id="environment">
 24            <clone prototype="robot_ur5">
 25                <member id="robot_driver.max_velocity">2.0</member>
 26                <member id="robot_driver.max_acceleration">3.0</member>
 27                <member id="components">
 28                    <clone prototype="force_sensor">
 29                        <member id="wrench_topic">wrench</member>
 30                    </clone>
 31                </member>
 32            </clone>
 33        </member>
 34
 35        <member id="applications">
 36            <clone prototype="skill_sequence">
 37
 38                <member id="robot" reference_id="environment.robot_ur5"/>
 39
 40                <!-- Skills -->
 41                <member id="skills">
 42
 43                    <!-- First move to start position -->
 44                    <clone prototype="skill_relative_ptp">
 45                        <member id="relative_joint_state">0, 0, 0, -0.01, 0, 0</member>
 46                    </clone>
 47
 48                    <clone prototype="skill_lin">
 49                        <member id="tool_frame">tool</member>
 50                        <member id="target_frame">start_position</member>
 51                    </clone>
 52
 53                    <!-- Moves along z until it hits something-->
 54                    <clone prototype="skill_guarded_approach">
 55                        <member id="control_frame">start_position</member>
 56                        <member id="tool_frame">tool</member>
 57                        <member id="axes">z</member>
 58                        <member id="velocities">0.02</member>
 59                        <member id="max_forces">10.0</member>
 60                    </clone>
 61
 62                    <!-- Pushes in z direction -->
 63                    <clone prototype="skill_push">
 64                        <member id="tool_frame">tool</member>
 65                        <member id="force_frame">start_position</member>
 66                        <member id="axes">z</member>
 67                        <member id="target_forces">7</member>
 68                        <member id="compliance">0.0005</member>
 69                        <member id="corner_frequency">7</member>
 70
 71                        <!-- transition -->
 72                        <member id="monitors">
 73                            <clone prototype="monitor_duration">
 74                                <member id="duration">1.0</member>
 75                            </clone>
 76                        </member>
 77                    </clone>
 78
 79                    <clone prototype="skill_push_duration">
 80                        <member id="tool_frame">tool</member>
 81                        <member id="force_frame">start_position</member>
 82                        <member id="axes">z</member>
 83                        <member id="target_forces">30</member>
 84                        <member id="compliance">0.0005</member>
 85                        <member id="corner_frequency">7</member>
 86
 87                        <member id="duration">1</member>
 88                    </clone>
 89
 90                    <clone prototype="skill_push_settle">
 91                        <member id="tool_frame">tool</member>
 92                        <member id="force_frame">start_position</member>
 93                        <member id="axes">z</member>
 94                        <member id="target_forces">5</member>
 95                        <member id="compliance">0.0005</member>
 96                        <member id="corner_frequency">7</member>
 97
 98                        <member id="thresholds">1.0</member>
 99                        <member id="samples">25</member>
100                    </clone>
101
102                    <!-- Position, velocity AND force control! -->
103                    <!-- Move in y, push in z and keep the rest -->
104                    <clone prototype="skill_guarded_slide">
105                        <member id="tool_frame">tool</member>
106                        <member id="control_frame">start_position</member>
107
108                        <!-- moving -->
109                        <member id="move_axes">y</member>
110                        <member id="velocities">0.02</member>
111
112                        <!-- pushing -->
113                        <member id="force_axes">z</member>
114                        <member id="target_forces">5.0</member>
115
116                        <member id="max_forces">10</member>
117
118                        <!-- transition -->
119                        <member id="monitors">
120                            <clone prototype="monitor_duration">
121                                <member id="duration">3.0</member>
122                            </clone>
123                        </member>
124                    </clone>
125
126                    <!-- Back to start position -->
127                    <clone prototype="skill_lin">
128                        <member id="tool_frame">tool</member>
129                        <member id="target_frame">start_position</member>
130                    </clone>
131
132                    <!-- Guarded lin -->
133                    <clone prototype="skill_guarded_lin">
134                        <member id="tool_frame">tool</member>
135                        <member id="target_frame">start_position</member>
136                        <member id="target_offsets">0, 0, 0.1, 0, 0, 0</member>
137                        <member id="max_forces">5.0</member>
138                        <member id="monitor_axes">z</member>
139                        <member id="max_linear_velocity">0.02</member>
140
141                        <!-- Raises an exception when a force occurs -->
142                        <member id="transitions">
143                            <clone prototype="transition">
144                                <member id="event">exception</member>
145                                <member id="target">back</member>
146                            </clone>
147                        </member>
148                    </clone>
149
150                    <clone prototype="skill_insert">
151                        <member id="tool_frame">tool</member>
152                        <member id="target_frame">marker</member>
153
154                        <member id="force_axes">x, y, z</member>
155
156                        <member id="track_axes">a,b,c</member>
157                        <member id="track_offsets">0,0,0</member>
158
159                        <member id="target_forces">0, 0, 18</member>
160                        <member id="compliance">0.001</member>
161                        <member id="corner_frequency">7</member>
162
163                        <member id="monitors">
164                            <clone prototype="monitor_duration">
165                                <member id="duration">1.0</member>
166                                <!-- <member id="event">succeded</member> -->
167                            </clone>
168                            <!-- <clone prototype="monitor_distance">
169                                <member id="reference_frame">start_position</member>
170                                <member id="frame">tool</member>
171                                <member id="coordinates">x</member>
172                                <member id="distances">0.01</member>
173                                <member id="operator">greater</member>
174                            </clone> -->
175                        </member>
176                    </clone>
177
178                    <!-- Back to start position -->
179                    <clone id="back" prototype="skill_lin">
180                        <member id="tool_frame">tool</member>
181                        <member id="target_frame">start_position</member>
182                    </clone>
183
184                </member>
185
186            </clone>
187        </member>
188
189    </clone>
190
191</pitasc>