pitasc_library - skills/skill_push.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="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>