pitasc_library - skills/skill_lin_time_optimal.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_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>