bounds_dual_robot.xml

This example application shows the usage of 2 robots in the same app (both sequentially and concurrently).

Models used

File contents

  1<?xml version="1.0" encoding="UTF-8"?>
  2
  3<!-- This example application shows the usage of 2 robots in the same app
  4(both sequentially and
  5concurrently).
  6-->
  7
  8
  9<pitasc>
 10
 11    <models>
 12
 13        <include package="pitasc_library" file="models/pitasc.xml" />
 14        <include package="pitasc_library" file="models/skills.xml" />
 15
 16        <include package="pitasc_library" file="universal_robots/ur.xml" />
 17    </models>
 18
 19
 20    <!-- Create an application -->
 21    <clone prototype="project">
 22
 23        <member id="configuration">
 24            <clone id="configuration" prototype="default_configuration" />
 25        </member>
 26
 27        <member id="environment">
 28            <clone id="ur5" prototype="robot_ur5">
 29                <member id="namespace">ur5</member>
 30                <member id="robot_driver.max_velocity">1.0</member>
 31                <member id="robot_driver.max_acceleration">2.0</member>
 32                <member id="robot_driver.send_velocities_if_inactive">True</member>  <!-- set to true
 33                to keep sending zero velocities if the robot is not used in a skill -->
 34                <member id="urdf_prefix">ur5_</member>
 35            </clone>
 36            <clone id="ur3" prototype="robot_ur3">
 37                <member id="namespace">ur3</member>
 38                <member id="robot_driver">
 39                    <member id="max_velocity">1.0</member>
 40                    <member id="max_acceleration">2.0</member>
 41                    <member id="send_velocities_if_inactive">True</member>  <!-- set to true to keep
 42                    sending zero velocities if the robot is not used in a skill -->
 43                </member>
 44                <member id="urdf_prefix">ur3_</member>
 45            </clone>
 46        </member>
 47
 48
 49        <member id="applications">
 50            <clone prototype="skill_sequence">
 51                <member id="robot" reference_id="environment.ur3" />
 52
 53                <member id="skills">
 54                    <!-- move both robots sequentially -->
 55                    <clone prototype="skill_sequence">
 56                        <member id="robot" reference_id="environment.ur3" />
 57                        <member id="skills">
 58                            <!-- Move ur3 to target 1 -->
 59                            <clone prototype="skill_concurrency">
 60                                <member id="skills">
 61                                    <clone prototype="skill_lin">
 62                                        <member id="tool_frame">ur3_tool0</member>
 63                                        <member id="target_frame">target1</member>
 64                                        <member id="target_offsets">0.0,0,0,0,0,0</member>
 65                                    </clone>
 66                                    <clone prototype="skill_cartesian_bound">
 67                                        <member id="tool_frame">ur3_tool0</member>
 68                                        <member id="target_frame">target1</member>
 69                                        <member id="axes">x</member>
 70                                        <member id="lower_bound">0.01</member>
 71                                        <member id="upper_bound">0.5</member>
 72                                        <member id="scaler">1.0</member>
 73                                    </clone>
 74                                </member>
 75                                <member id="monitors">
 76                                    <clone prototype="monitor_duration">
 77                                        <member id="duration">5.0</member>
 78                                    </clone>
 79                                </member>
 80                            </clone>
 81
 82                            <!-- Move ur5 to target 1 -->
 83                            <clone prototype="skill_lin">
 84                                <member id="robot" reference_id="environment.ur5" />
 85                                <member id="tool_frame">ur5_tool</member>
 86                                <member id="target_frame">target1</member>
 87                                <member id="target_offsets">-0.1,0,0,0,0,0</member>
 88                            </clone>
 89
 90                            <!-- Move ur3 to target 2 -->
 91                            <clone prototype="skill_lin">
 92                                <member id="tool_frame">ur3_tool0</member>
 93                                <member id="target_frame">target2</member>
 94                                <member id="target_offsets">0.1,0,0,0,0,0</member>
 95                            </clone>
 96
 97                            <!-- Move ur5 to target 2 -->
 98                            <clone prototype="skill_lin">
 99                                <member id="robot" reference_id="environment.ur5" />
100                                <member id="tool_frame">ur5_tool</member>
101                                <member id="target_frame">target2</member>
102                                <member id="target_offsets">-0.1,0,0,0,0,0</member>
103                            </clone>
104                        </member>
105                    </clone>
106
107                    <!-- move both robots concurrently -->
108                    <clone prototype="skill_parallel">
109                        <member id="robot" reference_id="environment.ur3" />
110                        <member id="skills">
111                            <!-- Move ur3 to target 1 -->
112                            <clone prototype="skill_concurrency">
113                                <member id="skills">
114                                    <clone prototype="skill_lin">
115                                        <member id="tool_frame">ur3_tool0</member>
116                                        <member id="target_frame">target1</member>
117                                        <member id="target_offsets">0.1,0,0,0,0,0</member>
118                                    </clone>
119                                    <clone prototype="skill_cartesian_bound">
120                                        <member id="tool_frame">ur3_tool0</member>
121                                        <member id="target_frame">target1</member>
122                                        <member id="axes">x</member>
123                                        <member id="lower_bound">0.01</member>
124                                        <member id="upper_bound">0.5</member>
125                                        <member id="scaler">1.0</member>
126                                    </clone>
127                                </member>
128                            </clone>
129
130                            <!-- Move ur5 to target 1 -->
131                            <clone prototype="skill_concurrency">
132                                <member id="skills">
133                                    <clone prototype="skill_lin">
134                                        <member id="robot" reference_id="environment.ur5" />
135                                        <member id="tool_frame">ur5_tool</member>
136                                        <member id="target_frame">target1</member>
137                                        <member id="target_offsets">0,0,0,0,0,0</member>
138                                    </clone>
139                                    <clone prototype="skill_cartesian_bound">
140                                        <member id="robot" reference_id="environment.ur5" />
141                                        <member id="tool_frame">ur5_tool</member>
142                                        <member id="target_frame">target1</member>
143                                        <member id="axes">z</member>
144                                        <member id="lower_bound">0.1</member>
145                                        <member id="upper_bound">0.5</member>
146                                        <member id="scaler">1.0</member>
147                                    </clone>
148                                </member>
149                                <member id="monitors">
150                                    <clone prototype="monitor_duration">
151                                        <member id="duration">5.0</member>
152                                    </clone>
153                                </member>
154                            </clone>
155
156                        </member>
157                    </clone>
158
159                </member>
160
161            </clone>
162        </member>
163
164    </clone>
165
166</pitasc>