pitasc_library - skills/skill_lin_time_optimal.xml
Model definitions
line 8: skill_lin_time_optimal
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<pitasc>
4
5 <models>
6 <include package="pitasc_library" file="skills/skill_cartesian.xml"/>
7
8 <type id="skill_lin_time_optimal" prototype="skill_cartesian">
9 <meta>
10 <member id="description">LIN movement from the current pose to the target. Follows a time-optimal trajectory with constant acceleration.</member>
11 <member id="visibility">basic</member>
12 </meta>
13
14 <data>
15 <!-- Task description -->
16 <type id="axes" prototype="string_csv">
17 <meta>
18 <member id="description">List of axes to be aligned.</member>
19 <clone prototype="restrictions">
20 <clone prototype="enum">x, y, z, a, b, c</clone>
21 </clone>
22 <member id="visibility">basic</member>
23 </meta>
24 <data>x, y, z, a, b, c</data>
25 </type>
26 <type id="target_offsets" prototype="float_csv">
27 <meta>
28 <member id="description">Offsets of the axes to be aligned. Must be the same number of values as for 'axes'. If no value is provided, 0 is used for all axes.</member>
29 <clone prototype="restrictions">
30 <clone prototype="float_csv_min">-10.0, -10.0, -10.0, -3.14, -3.14, -3.14</clone>
31 <clone prototype="float_csv_max">10.0, 10.0, 10.0, 3.14, 3.14, 3.14</clone>
32 </clone>
33 <member id="visibility">basic</member>
34 </meta>
35 <data></data>
36 </type>
37
38 <!-- Setpoint generation -->
39 <type id="trajectory_duration" prototype="float_parameter">
40 <meta>
41 <member id="description">Duration of the trajectory in [s]. '0' means as fast as possible. Is expanded accordingly if in conflict with maximal linear veloctiy.</member>
42 <member id="visibility">expert</member>
43 </meta>
44 <data>0</data>
45 </type>
46
47 <!-- Control -->
48 <type id="max_linear_velocity" prototype="float_parameter">
49 <meta>
50 <member id="description">Max linear velocity.</member>
51 <member id="visibility">basic</member>
52 </meta>
53 <data>1.0</data>
54 </type>
55 <type id="max_angular_velocity" prototype="float_parameter">
56 <meta>
57 <member id="description">Max angular velocity.</member>
58 <member id="visibility">basic</member>
59 </meta>
60 <data>1.5</data>
61 </type>
62 <type id="max_linear_acceleration" prototype="float_parameter">
63 <meta>
64 <member id="description">Max linear acceleration.</member>
65 <member id="visibility">basic</member>
66 </meta>
67 <data>1.0</data>
68 </type>
69 <type id="max_angular_acceleration" prototype="float_parameter">
70 <meta>
71 <member id="description">Max angular acceleration.</member>
72 <member id="visibility">basic</member>
73 </meta>
74 <data>3.0</data>
75 </type>
76 <type id="linear_controller_gain" prototype="float_parameter">
77 <meta>
78 <member id="description">Specifies the approx. linear gain of the controller transfer function for Cartesian positions (i.e. x,y and z).</member>
79 <member id="visibility">expert</member>
80 </meta>
81 <data>3</data>
82 </type>
83 <type id="angular_controller_gain" prototype="float_parameter">
84 <meta>
85 <member id="description">Specifies the approx. angular gain of the controller transfer function for Cartesian angles (i.e. a,b and c).</member>
86 <member id="visibility">expert</member>
87 </meta>
88 <data>3</data>
89 </type>
90 <type id="linear_ff_controller_gain" prototype="float_parameter">
91 <meta>
92 <member id="description">Specifies the linear velocity feed-forward gain of the controller</member>
93 <member id="visibility">expert</member>
94 </meta>
95 <data>0.7</data>
96 </type>
97 <type id="angular_ff_controller_gain" prototype="float_parameter">
98 <meta>
99 <member id="description">Specifies the angular velocity feed-forward gain of the controller</member>
100 <member id="visibility">expert</member>
101 </meta>
102 <data>0.7</data>
103 </type>
104
105 <type id="positioning_accuracy" prototype="float_csv">
106 <meta>
107 <member id="description">Positioning accuracy for x y z a b c in m resp. rad</member>
108 <member id="visibility">basic</member>
109 </meta>
110 <data>0.001, 0.001, 0.001, 0.005, 0.005, 0.005</data>
111 </type>
112
113 <!-- Coordination -->
114 <type id="positioning_monitor" prototype="monitor_distance">
115 <meta>
116 <member id="description">Checks whether the target frame has been reached.</member>
117 <member id="visibility">expert</member>
118 </meta>
119 <data>
120 <member id="reference_frame" reference_id="target_frame"/>
121 <member id="target_offsets" reference_id="target_offsets"/>
122 <member id="frame" reference_id="tool_frame"/>
123 <member id="coordinates" reference_id="axes"/>
124 <member id="distance_coordinates">x, y, z, a, b, c</member>
125 <member id="distances" reference_id="positioning_accuracy" />
126 <member id="operator">absolute_less</member>
127
128 </data>
129 </type>
130
131 <member id="positioning_monitor.distance_coordinates.meta.visibility">expert</member>
132 <member id="positioning_monitor.operator.meta.visibility">hidden</member>
133
134 <member id="monitors">
135 <reference reference_id="positioning_monitor"/>
136 </member>
137
138 <!-- Implementation details below: -->
139
140 <member id="tasks">
141 <clone id="tracking" prototype="task"> <!-- how to specify visibility here? leave on hidden? -->
142 <member id="coordinates" reference_id="axes"/>
143 <member id="prefix" reference_id="collections.target_to_tool.prefix"/>
144
145 <member id="setpoint_generators">
146 <clone id="setpoint" prototype="time_optimal_setpoint">
147 <member id="data_source">
148 <reference reference_id="collections.target_to_tool.chains[0]"/>
149 </member>
150 <member id="desired" reference_id="target_offsets"/>
151 <member id="coordinates" reference_id="coordinates"/>
152 <member id="prefix" reference_id="prefix"/>
153 <member id="duration" reference_id="trajectory_duration"/>
154 <member id="max_vel_groups">
155 <reference reference_id="max_linear_velocity"/>
156 <reference reference_id="max_angular_velocity"/>
157 </member>
158 <member id="max_acc_groups">
159 <reference reference_id="max_linear_acceleration"/>
160 <reference reference_id="max_angular_acceleration"/>
161 </member>
162 <member id="symbol_groups">
163 <clone id="position_coordinates" prototype="string_csv">x, y, z</clone>
164 <clone id="orientation_coordinates" prototype="string_csv">a, b, c</clone>
165 </member>
166
167 </clone>
168 </member>
169
170 <member id="controllers">
171 <!-- position controller -->
172 <clone prototype="trajectory_p_controller">
173 <!-- <member id="limit" reference_id="max_linear_velocity"/> -->
174 <member id="gain" reference_id="linear_controller_gain"/>
175 <member id="limit">10.0</member>
176 <member id="ff_gain" reference_id="linear_ff_controller_gain"/>
177 <member id="data_source">
178 <reference reference_id="collections.target_to_tool.chains[0]"/>
179 </member>
180 <member id="setpoint_generator">
181 <reference reference_id="setpoint_generators.setpoint"/>
182 </member>
183 <member id="coordinates" reference_id="setpoint_generators.setpoint.symbol_groups.position_coordinates"/>
184 <member id="prefix" reference_id="prefix"/>
185 </clone>
186
187 <!-- orientation controller -->
188 <clone prototype="trajectory_p_controller">
189 <!-- <member id="limit" reference_id="max_angular_velocity"/>-->
190 <member id="gain" reference_id="angular_controller_gain"/>
191 <member id="limit">30.0</member>
192 <member id="ff_gain" reference_id="angular_ff_controller_gain"/>
193 <member id="data_source">
194 <reference reference_id="collections.target_to_tool.chains[0]"/>
195 </member>
196 <member id="setpoint_generator">
197 <reference reference_id="setpoint_generators.setpoint"/>
198 </member>
199 <member id="coordinates" reference_id="setpoint_generators.setpoint.symbol_groups.orientation_coordinates"/>
200 <member id="prefix" reference_id="prefix"/>
201 </clone>
202 </member>
203 </clone>
204 </member>
205 <member id="tasks.meta.visibility">hidden</member>
206
207 </data>
208 </type>
209
210 </models>
211
212</pitasc>