pitasc_library - skills/skill_apply_force.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
  8        <type id="skill_apply_force" prototype="skill_force">
  9            <meta>
 10                <member id="description">Applies a force in the direction of a frame</member>
 11                <member id="categories">single_robot, force_controlled</member>
 12                <member id="visibility">basic</member>
 13            </meta>
 14
 15            <data>
 16                <!-- Task description -->
 17                <type id="axes" prototype="string_csv">
 18                    <meta>
 19                        <member id="description">List of axes.</member>
 20                        <clone prototype="restrictions">
 21                            <clone prototype="enum">x, y, z, a, b, c</clone>
 22                        </clone>
 23                        <member id="visibility">required</member>
 24                    </meta>
 25                </type>
 26                <type id="target_forces" prototype="float_csv">
 27                    <meta>
 28                        <member id="description">Forces and torques to be applied. Must be the same number of values as for 'axes'.</member>
 29                        <clone prototype="restrictions">
 30                            <clone prototype="float_csv_min">-100.0, -100.0, -100.0, -10.0, -10.0, -10.0</clone>
 31                            <clone prototype="float_csv_max">100.0, 100.0, 100.0, 10.0, 10.0, 10.0</clone>
 32                        </clone>
 33                        <member id="visibility">required</member>
 34                    </meta>
 35                </type>
 36
 37                <type id="ff_velocities" prototype="float_csv">
 38                    <meta>
 39                        <member id="description">Feedforward velocities in [m/s] or [rad/s]. This is useful to hold contact to a surface moving with a constant velocity, like while loosing a screw.</member>
 40                        <member id="visibility">expert</member>
 41                    </meta>
 42                    <data></data>
 43                </type>
 44
 45                <!-- Control -->
 46                <type id="compliance" prototype="float_parameter">
 47                    <meta>
 48                        <member id="description">Force controller gain</member>
 49                        <clone prototype="restrictions">
 50                            <clone prototype="float_min">0.00001</clone>
 51                            <clone prototype="float_max">0.1</clone>
 52                        </clone>
 53                        <member id="visibility">basic</member>
 54                    </meta>
 55                    <data>0.002</data>
 56                </type>
 57                <type id="corner_frequency" prototype="float_parameter">
 58                    <meta>
 59                        <member id="description">Force controller corner frequency</member>
 60                        <clone prototype="restrictions">
 61                            <clone prototype="float_min">1.0</clone>
 62                            <clone prototype="float_max">50.0</clone>
 63                        </clone>
 64                        <member id="visibility">basic</member>
 65                    </meta>
 66                    <data>5.0</data>
 67                </type>
 68
 69                <!-- Implementation details below: -->
 70
 71                <member id="tasks">
 72                    <clone id="apply_force" prototype="task">
 73                        <member id="coordinates" reference_id="axes"/>
 74                        <member id="prefix" reference_id="collections.force_chain.prefix"/>
 75
 76                        <member id="setpoint_generators">
 77                            <clone id="setpoint" prototype="constant_setpoint">
 78                                <member id="desired" reference_id="target_forces"/>
 79                                <member id="coordinates" reference_id="coordinates"/>
 80                                <member id="prefix" reference_id="prefix"/>
 81                            </clone>
 82                        </member>
 83
 84                        <member id="controllers">
 85                            <clone prototype="first_order_impedance_controller">
 86                                <member id="compliance" reference_id="compliance"/>
 87                                <member id="f0_hz" reference_id="corner_frequency"/>
 88                                <member id="ff_setpoint">
 89                                    <clone id="setpoint" prototype="constant_setpoint">
 90                                        <member id="desired" reference_id="ff_velocities" />
 91                                        <member id="coordinates" reference_id="coordinates"/>
 92                                        <member id="prefix" reference_id="prefix"/>
 93                                    </clone>
 94                                </member>
 95                                <member id="data_source">
 96                                    <reference reference_id="collections.force_chain.chains[0]"/>
 97                                </member>
 98                                <member id="setpoint_generator">
 99                                    <reference reference_id="setpoint_generators.setpoint"/>
100                                </member>
101                                <member id="coordinates" reference_id="coordinates"/>
102                                <member id="prefix" reference_id="prefix"/>
103                            </clone>
104                        </member>
105
106                    </clone>
107                </member>
108                <member id="tasks.meta.visibility">hidden</member>
109
110            </data>
111        </type>
112
113    </models>
114
115</pitasc>