pitasc_library - skills/skill_apply_force_pid.xml

Model definitions

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>