pitasc_library - skills/skill_apply_force_pid.xml
Model definitions
line 9: skill_apply_force_pid
line 144: skill_cartesian_tracking_pid
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<pitasc>
4
5 <models>
6 <include package="pitasc_library" file="skills/skill_force.xml" />
7 <include package="pitasc_library" file="skills/skill_cartesian.xml" />
8
9 <type id="skill_apply_force_pid" prototype="skill_force">
10 <meta>
11 <member id="description">Applies a force in the direction of a frame</member>
12 <member id="categories">single_robot, force_controlled</member>
13 <member id="visibility">basic</member>
14 </meta>
15
16 <data>
17 <!-- Task description -->
18 <type id="axes" prototype="string_csv">
19 <meta>
20 <member id="description">List of axes.</member>
21 <clone prototype="restrictions">
22 <clone prototype="enum">x, y, z, a, b, c</clone>
23 </clone>
24 <member id="visibility">required</member>
25 </meta>
26 </type>
27 <type id="target_forces" prototype="float_csv">
28 <meta>
29 <member id="description">Forces and torques to be applied. Must be the same
30 number of values as for 'axes'.</member>
31 <clone prototype="restrictions">
32 <clone prototype="float_csv_min">-100.0, -100.0, -100.0, -10.0, -10.0,
33 -10.0</clone>
34 <clone prototype="float_csv_max">100.0, 100.0, 100.0, 10.0, 10.0, 10.0</clone>
35 </clone>
36 <member id="visibility">required</member>
37 </meta>
38 </type>
39
40 <!-- Control -->
41 <type id="K" prototype="float_parameter">
42 <meta>
43 <member id="description">The gain K of the controller</member>
44 </meta>
45 <data>0.001</data>
46 </type>
47 <type id="Tn" prototype="float_parameter">
48 <meta>
49 <member id="description">The constant Tn impacts the systems inversely, so higher Tn means slower impact
50</member>
51 </meta>
52 <data>0</data>
53 </type>
54 <type id="Tv" prototype="float_parameter">
55 <meta>
56 <member id="description">The constant Tv impacts the system directly,(its a part of D component), so higher Tv means faster response</member>
57 </meta>
58 <data>0</data>
59 </type>
60 <type id="Tp" prototype="float_parameter">
61 <meta>
62 <member id="description">Parasitic timeconstant of real PID controller (Tp
63 smaller than Tv)</member>
64 </meta>
65 <data>0.001</data>
66 </type>
67 <type id="u_i_limit" prototype="float_parameter">
68 <meta>
69 <member id="description">The output limit of the i part of the controller</member>
70 </meta>
71 <data>0.0</data>
72 </type>
73 <type id="Tp" prototype="float_parameter">
74 <meta>
75 <member id="description">Compliance [m/(s*N)]</member>
76 </meta>
77 <data>0.001</data>
78 </type>
79 <type id="u_i_limit" prototype="float_parameter">
80 <meta>
81 <member id="description">The output limit of the i part of the controller</member>
82 </meta>
83 <data>0.0</data>
84 </type>
85 <type id="I_flag" prototype="bool_parameter">
86 <meta>
87 <member id="description">Parameter to switch integral part on/off</member>
88 </meta>
89 <data>false</data>
90 </type>
91 <type id="D_flag" prototype="bool_parameter">
92 <meta>
93 <member id="description">Parameter to switch derivative part on/off</member>
94 </meta>
95 <data>false</data>
96 </type>
97
98 <!-- Implementation details below: -->
99
100 <member id="tasks">
101 <clone id="apply_force" prototype="task">
102 <member id="coordinates" reference_id="axes" />
103 <member id="prefix" reference_id="collections.force_chain.prefix" />
104
105 <member id="setpoint_generators">
106 <clone id="setpoint" prototype="constant_setpoint">
107 <member id="desired" reference_id="target_forces" />
108 <member id="coordinates" reference_id="coordinates" />
109 <member id="prefix" reference_id="prefix" />
110 </clone>
111 </member>
112
113 <member id="controllers">
114 <clone prototype="pid_controller">
115 <member id="K" reference_id="K" />
116 <member id="Tn" reference_id="Tn" />
117 <member id="Tv" reference_id="Tv" />
118 <member id="I_flag" reference_id="I_flag" />
119 <member id="D_flag" reference_id="D_flag" />
120
121 <member id="u_i_limit" reference_id="u_i_limit" />
122
123 <member id="u_i_limit" reference_id="u_i_limit" />
124
125 <member id="data_source">
126 <reference reference_id="collections.force_chain.chains[0]" />
127 </member>
128 <member id="setpoint_generator">
129 <reference reference_id="setpoint_generators.setpoint" />
130 </member>
131 <member id="coordinates" reference_id="coordinates" />
132 <member id="prefix" reference_id="prefix" />
133 </clone>
134 </member>
135
136 </clone>
137 </member>
138 <member id="tasks.meta.visibility">hidden</member>
139
140 </data>
141 </type>
142
143
144 <type id="skill_cartesian_tracking_pid" prototype="skill_cartesian">
145 <meta>
146 <member id="description">Keeps on aligning the tool frame with a target frame</member>
147 <member id="visibility">basic</member>
148 </meta>
149
150 <data>
151 <!-- Task description -->
152 <type id="axes" prototype="string_csv">
153 <meta>
154 <member id="description">List of axes to be aligned.</member>
155 <clone prototype="restrictions">
156 <clone prototype="enum">x, y, z, a, b, c</clone>
157 </clone>
158 <member id="visibility">basic</member>
159 </meta>
160 <data>x, y, z, a, b, c</data>
161 </type>
162 <type id="target_offsets" prototype="float_csv">
163 <meta>
164 <member id="description">Offsets of the axes to be aligned. Must be the same
165 number of values as for 'axes'. If no value is provided, 0 is used for
166 all axes.</member>
167 <clone prototype="restrictions">
168 <clone prototype="float_csv_min">-10.0, -10.0, -10.0, -3.14, -3.14,
169 -3.14</clone>
170 <clone prototype="float_csv_max">10.0, 10.0, 10.0, 3.14, 3.14, 3.14</clone>
171 </clone>
172 <member id="visibility">basic</member>
173 </meta>
174 <data></data>
175 </type>
176
177 <!-- Setpoint generation -->
178 <type id="trajectory_duration" prototype="float_parameter">
179 <meta>
180 <member id="description">Duration of the trajectory in [s]. '0' means as
181 fast as possible. Is expanded accordingly if in conflict with maximal
182 linear veloctiy.</member>
183 <member id="visibility">expert</member>
184 </meta>
185 <data>0</data>
186 </type>
187
188 <!-- Control -->
189 <type id="max_linear_velocity" prototype="float_parameter">
190 <meta>
191 <member id="description">Max linear velocity.</member>
192 <member id="visibility">basic</member>
193 </meta>
194 <data>1.0</data>
195 </type>
196 <type id="max_angular_velocity" prototype="float_parameter">
197 <meta>
198 <member id="description">Max angular velocity.</member>
199 <member id="visibility">basic</member>
200 </meta>
201 <data>1.5</data>
202 </type>
203
204 <type id="K" prototype="float_parameter">
205 <meta>
206 <member id="description">The gain K of the controller</member>
207 </meta>
208 <data>0.001</data>
209 </type>
210 <type id="Tn" prototype="float_parameter">
211 <meta>
212 <member id="description">The integral time of the controller</member>
213 </meta>
214 <data>0</data>
215 </type>
216 <type id="Tv" prototype="float_parameter">
217 <meta>
218 <member id="description">The derivative time of the controller</member>
219 </meta>
220 <data>0</data>
221 </type>
222 <type id="Tp" prototype="float_parameter">
223 <meta>
224 <member id="description">Parasitic timeconstant of real PID controller (Tp
225 smaller than Tv)</member>
226 </meta>
227 <data>0.001</data>
228 </type>
229 <type id="u_i_limit" prototype="float_parameter">
230 <meta>
231 <member id="description">The output limit of the i part of the controller</member>
232 </meta>
233 <data>0.0</data>
234 </type>
235 <type id="I_flag" prototype="bool_parameter">
236 <meta>
237 <member id="description">Parameter to switch integral part on/off</member>
238 </meta>
239 <data>false</data>
240 </type>
241 <type id="D_flag" prototype="bool_parameter">
242 <meta>
243 <member id="description">Parameter to switch derivative part on/off</member>
244 </meta>
245 <data>false</data>
246 </type>
247
248 <!-- Implementation details below: -->
249
250 <member id="tasks">
251 <clone id="tracking" prototype="task"> <!-- how to specify visibility here? leave
252 on hidden? -->
253 <member id="coordinates" reference_id="axes" />
254 <member id="prefix" reference_id="collections.target_to_tool.prefix" />
255
256 <member id="setpoint_generators">
257 <clone id="setpoint" prototype="cosine_setpoint">
258 <member id="data_source">
259 <reference reference_id="collections.target_to_tool.chains[0]" />
260 </member>
261 <member id="desired" reference_id="target_offsets" />
262 <member id="coordinates" reference_id="coordinates" />
263 <member id="prefix" reference_id="prefix" />
264 <member id="duration" reference_id="trajectory_duration" />
265 <member id="max_vel_groups">
266 <reference reference_id="max_linear_velocity" />
267 <reference reference_id="max_angular_velocity" />
268 </member>
269 <member id="symbol_groups">
270 <clone id="position_coordinates" prototype="string_csv">x, y, z</clone>
271 <clone id="orientation_coordinates" prototype="string_csv">a, b,
272 c</clone>
273 </member>
274
275 </clone>
276 </member>
277
278 <member id="controllers">
279 <!-- position controller -->
280 <clone prototype="pid_controller">
281 <member id="K" reference_id="K" />
282 <member id="Tn" reference_id="Tn" />
283 <member id="Tv" reference_id="Tv" />
284 <member id="I_flag" reference_id="I_flag" />
285 <member id="D_flag" reference_id="D_flag" />
286
287 <member id="u_i_limit" reference_id="u_i_limit" />
288
289
290 <member id="data_source">
291 <reference reference_id="collections.target_to_tool.chains[0]" />
292 </member>
293 <member id="setpoint_generator">
294 <reference reference_id="setpoint_generators.setpoint" />
295 </member>
296 <member id="coordinates"
297 reference_id="setpoint_generators.setpoint.symbol_groups.position_coordinates" />
298 <member id="prefix" reference_id="prefix" />
299 </clone>
300
301 <!-- orientation controller -->
302 <clone prototype="pid_controller">
303 <member id="K" reference_id="K" />
304 <member id="Tn" reference_id="Tn" />
305 <member id="Tv" reference_id="Tv" />
306 <member id="I_flag" reference_id="I_flag" />
307 <member id="D_flag" reference_id="D_flag" />
308
309 <member id="u_i_limit" reference_id="u_i_limit" />
310
311
312 <member id="data_source">
313 <reference reference_id="collections.target_to_tool.chains[0]" />
314 </member>
315 <member id="setpoint_generator">
316 <reference reference_id="setpoint_generators.setpoint" />
317 </member>
318 <member id="coordinates"
319 reference_id="setpoint_generators.setpoint.symbol_groups.orientation_coordinates" />
320 <member id="prefix" reference_id="prefix" />
321 </clone>
322 </member>
323 </clone>
324 </member>
325 <member id="tasks.meta.visibility">hidden</member>
326
327 </data>
328 </type>
329
330
331 </models>
332
333</pitasc>