bounds_dual_robot.xml
This example application shows the usage of 2 robots in the same app (both sequentially and concurrently).
Models used
monitor_duration: lines 76, 150
skill_cartesian_bound: lines 66, 119, 139
skill_concurrency: lines 59, 112, 131
skill_lin: lines 61, 83, 91, 98, 114, 133
skill_parallel: lines 108
skill_sequence: lines 50, 55
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>