forces_pid.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
monitor_duration: lines 82, 127, 170
skill_apply_force_pid: lines 56, 101, 144
skill_hold_pose: lines 75, 120, 163
skill_lin: lines 48, 92, 136, 179
skill_parallel: lines 53, 98, 141
skill_relative_ptp: lines 44
skill_sequence: lines 36
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 <clone prototype="skill_parallel">
54 <member id="skills">
55
56 <clone prototype="skill_apply_force_pid">
57 <member id="force_frame">start_position</member>
58 <member id="axes">z</member>
59 <member id="target_forces">30</member>
60 <member id="K">0.005</member>
61 <member id="Tv">0.0001</member>
62 <member id="Tn">10.1</member>
63 <member id="Tp">0.001</member>
64 <member id="u_i_limit">0.01</member>
65
66 <member id="I_flag">false</member>
67 <member id="D_flag">false</member>
68
69 <!-- Tv ~ Kd -->
70 <!-- Tn ~ 1/Ki -->
71 <!-- <member id="compliance">0.002</member> -->
72 <!-- <member id="corner_frequency">5.0</member> -->
73 </clone>
74
75 <clone prototype="skill_hold_pose">
76 <member id="tool_frame">tool</member>
77 <member id="axes">x, y, z, a, b, c</member>
78 </clone>
79
80 </member>
81 <member id="monitors">
82 <clone prototype="monitor_duration">
83 <member id="event">succeeded</member>
84 <member id="duration">5.0</member>
85 </clone>
86
87 </member>
88 </clone>
89
90
91 <!-- Back to start position -->
92 <clone id="back" prototype="skill_lin">
93 <member id="tool_frame">tool</member>
94 <member id="target_frame">start_position</member>
95 </clone>
96
97
98 <clone prototype="skill_parallel">
99 <member id="skills">
100
101 <clone prototype="skill_apply_force_pid">
102 <member id="force_frame">start_position</member>
103 <member id="axes">z</member>
104 <member id="target_forces">30</member>
105 <member id="K">0.005</member>
106 <member id="Tv">0.0001</member>
107 <member id="Tn">10.1</member>
108 <member id="Tp">0.001</member>
109 <member id="u_i_limit">0.01</member>
110
111 <member id="I_flag">false</member>
112 <member id="D_flag">true</member>
113
114 <!-- Tv ~ Kd -->
115 <!-- Tn ~ 1/Ki -->
116 <!-- <member id="compliance">0.002</member> -->
117 <!-- <member id="corner_frequency">5.0</member> -->
118 </clone>
119
120 <clone prototype="skill_hold_pose">
121 <member id="tool_frame">tool</member>
122 <member id="axes">x, y, z, a, b, c</member>
123 </clone>
124
125 </member>
126 <member id="monitors">
127 <clone prototype="monitor_duration">
128 <member id="event">succeeded</member>
129 <member id="duration">5.0</member>
130 </clone>
131
132 </member>
133 </clone>
134
135 <!-- Back to start position -->
136 <clone id="back" prototype="skill_lin">
137 <member id="tool_frame">tool</member>
138 <member id="target_frame">start_position</member>
139 </clone>
140
141 <clone prototype="skill_parallel">
142 <member id="skills">
143
144 <clone prototype="skill_apply_force_pid">
145 <member id="force_frame">start_position</member>
146 <member id="axes">z</member>
147 <member id="target_forces">30</member>
148 <member id="K">0.005</member>
149 <member id="Tv">0.0001</member>
150 <member id="Tn">10.1</member>
151 <member id="Tp">0.001</member>
152 <member id="u_i_limit">0.01</member>
153
154 <member id="I_flag">true</member>
155 <member id="D_flag">true</member>
156
157 <!-- Tv ~ Kd -->
158 <!-- Tn ~ 1/Ki -->
159 <!-- <member id="compliance">0.002</member> -->
160 <!-- <member id="corner_frequency">5.0</member> -->
161 </clone>
162
163 <clone prototype="skill_hold_pose">
164 <member id="tool_frame">tool</member>
165 <member id="axes">x, y, z, a, b, c</member>
166 </clone>
167
168 </member>
169 <member id="monitors">
170 <clone prototype="monitor_duration">
171 <member id="event">succeeded</member>
172 <member id="duration">5.0</member>
173 </clone>
174
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
185 </member>
186
187 </clone>
188 </member>
189
190 </clone>
191
192</pitasc>