pitasc_library - skills/skill_push.xml
Model definitions
line 10: skill_push
line 105: skill_push_duration
line 128: skill_push_settle
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<pitasc>
4
5 <models>
6 <include package="pitasc_library" file="models/pitasc.xml"/>
7 <include package="pitasc_library" file="skills/skill_hold_pose.xml"/>
8 <include package="pitasc_library" file="skills/skill_apply_force.xml"/>
9
10 <type id="skill_push" prototype="skill_concurrency">
11 <meta>
12 <member id="description">A skill that pushes and keeps the position</member>
13 <member id="categories">single_robot, force_controlled</member>
14 <member id="visibility">basic</member>
15 </meta>
16
17 <data>
18
19 <type id="tool_frame" prototype="frame">
20 <meta>
21 <member id="description">Name of the tool frame.</member>
22 <member id="visibility">required</member>
23 </meta>
24 </type>
25
26 <type id="force_frame" prototype="frame">
27 <meta>
28 <member id="description">Name of the frame that defines the direction of motion.</member>
29 <member id="visibility">required</member>
30 </meta>
31 </type>
32
33 <type id="axes" prototype="string_csv">
34 <meta>
35 <member id="description">List of axes.</member>
36 <clone prototype="restrictions">
37 <clone prototype="enum">x, y, z, a, b, c</clone>
38 </clone>
39 <member id="visibility">required</member>
40 </meta>
41 </type>
42
43 <type id="target_forces" prototype="float_csv">
44 <meta>
45 <member id="description">Forces and torques to be applied. Must be the same number of values as for 'axes'.</member>
46 <clone prototype="restrictions">
47 <clone prototype="float_csv_min">-100.0, -100.0, -100.0, -10.0, -10.0, -10.0</clone>
48 <clone prototype="float_csv_max">100.0, 100.0, 100.0, 10.0, 10.0, 10.0</clone>
49 </clone>
50 <member id="visibility">required</member>
51 </meta>
52 </type>
53
54 <type id="compliance" prototype="float_parameter">
55 <meta>
56 <clone prototype="restrictions">
57 <clone prototype="float_min">0.00001</clone>
58 <clone prototype="float_max">0.1</clone>
59 </clone>
60 <member id="visibility">basic</member>
61 </meta>
62 <data>0.002</data>
63 </type>
64
65 <type id="corner_frequency" prototype="float_parameter">
66 <meta>
67 <clone prototype="restrictions">
68 <clone prototype="float_min">1.0</clone>
69 <clone prototype="float_max">50.0</clone>
70 </clone>
71 <member id="visibility">basic</member>
72 </meta>
73 <data>5.0</data>
74 </type>
75
76 <!-- Implementation details below: -->
77
78 <clone id="force" prototype="skill_apply_force">
79 <member id="force_frame" reference_id="force_frame"/>
80 <member id="axes" reference_id="axes"/>
81 <member id="target_forces" reference_id="target_forces"/>
82 <member id="compliance" reference_id="compliance"/>
83 <member id="corner_frequency" reference_id="corner_frequency"/>
84 </clone>
85 <member id="force.meta.visibility">expert</member>
86
87 <clone id="hold" prototype="skill_hold_pose">
88 <member id="tool_frame" reference_id="tool_frame"/>
89 </clone>
90 <member id="hold.meta.visibility">expert</member>
91
92 <member id="skills">
93 <reference reference_id="force"/>
94 <reference reference_id="hold"/>
95 </member>
96 <member id="skills.meta.visibility">expert</member>
97
98 <member id="collections.meta.visibility">hidden</member>
99 <member id="loops.meta.visibility">hidden</member>
100 <member id="tasks.meta.visibility">hidden</member>
101
102 </data>
103 </type>
104
105 <type id="skill_push_duration" prototype="skill_push">
106 <meta>
107 <member id="description">A skill that pushes and keeps the position for a certain time.</member>
108 <member id="categories">single_robot, force_controlled</member>
109 </meta>
110
111 <data>
112 <type id="duration" prototype="float_parameter">
113 <meta>
114 <member id="description">Skill duration in [m].</member>
115 <member id="visibility">basic</member>
116 </meta>
117 <data>1.0</data>
118 </type>
119
120 <member id="monitors">
121 <clone prototype="monitor_duration">
122 <member id="duration" reference_id="duration"/>
123 </clone>
124 </member>
125 </data>
126 </type>
127
128 <type id="skill_push_settle" prototype="skill_push">
129 <meta>
130 <member id="description">A skill that pushes until the force error is within a region for an acceptable number of samples.</member>
131 <member id="categories">single_robot, force_controlled</member>
132 </meta>
133
134 <data>
135 <type id="thresholds" prototype="float_csv">
136 <meta>
137 <member id="description">Half the error band peak-to-peak span for successful settling.</member>
138 <member id="visibility">basic</member>
139 </meta>
140 <data>1.0</data>
141 </type>
142 <type id="samples" prototype="int_parameter">
143 <meta>
144 <member id="description">Number of control steps the measurements need to stay in the error band.</member>
145 <member id="visibility">basic</member>
146 </meta>
147 <data>25</data>
148 </type>
149
150 <member id="monitors">
151 <clone prototype="monitor_control_error">
152 <member id="controllers" reference_id="force.tasks.apply_force.controllers"/>
153 <member id="coordinates" reference_id="force.axes"/>
154 <member id="prefix" reference_id="force.collections.force_chain.prefix"/>
155 <member id="thresholds" reference_id="thresholds"/>
156 <member id="samples" reference_id="samples"/>
157 </clone>
158 </member>
159 </data>
160 </type>
161
162 </models>
163
164</pitasc>