1
1
<?xml version =" 1.0" ?>
2
2
3
3
<robot xmlns : xacro =" http://www.ros.org/wiki/xacro" >
4
+ <!-- robot as extracted via https://github.com/syuntoku14/fusion2urdf -->
5
+ <xacro : macro name =" iiwa14"
6
+ params =" robot_name:=^|lbr sim:=^=true system_parameters_path:=^|'$(find lbr_ros2_control)/config/lbr_system_parameters.yaml'" >
4
7
5
- <!-- some constants -->
6
- <xacro : property name =" PI" value =" 3.1415926535897931" />
7
- <xacro : property name =" joint_damping" value =" 10.0" />
8
- <xacro : property name =" joint_friction" value =" 0.1" />
9
- <xacro : property name =" A1_position_limit" value =" 170" />
10
- <xacro : property name =" A2_position_limit" value =" 120" />
11
- <xacro : property name =" A3_position_limit" value =" 170" />
12
- <xacro : property name =" A4_position_limit" value =" 120" />
13
- <xacro : property name =" A5_position_limit" value =" 170" />
14
- <xacro : property name =" A6_position_limit" value =" 120" />
15
- <xacro : property name =" A7_position_limit" value =" 175" />
16
- <xacro : property name =" A1_velocity_limit" value =" 85" />
17
- <xacro : property name =" A2_velocity_limit" value =" 85" />
18
- <xacro : property name =" A3_velocity_limit" value =" 100" />
19
- <xacro : property name =" A4_velocity_limit" value =" 75" />
20
- <xacro : property name =" A5_velocity_limit" value =" 130" />
21
- <xacro : property name =" A6_velocity_limit" value =" 135" />
22
- <xacro : property name =" A7_velocity_limit" value =" 135" />
23
- <xacro : property name =" effort_limit" value =" 200" />
8
+ <!-- includes -->
9
+ <xacro : include filename =" $(find lbr_description)/gazebo/lbr_gazebo.xacro" />
10
+ <xacro : include filename =" $(find lbr_ros2_control)/config/lbr_system_interface.xacro" />
24
11
25
- <!-- includes -->
26
- <xacro : include filename =" $(find lbr_description)/gazebo/lbr.gazebo.xacro" />
27
- <xacro : include filename =" $(find lbr_ros2_control)/config/lbr_system_interface.xacro" />
12
+ <!-- joint limits via yaml -->
13
+ <xacro : property name =" joint_limits_path"
14
+ value =" $(find lbr_description)/urdf/iiwa14/joint_limits.yaml" />
15
+ <xacro : property name =" joint_limits" value =" ${xacro.load_yaml(joint_limits_path)}" />
28
16
29
- <!-- robot as extracted via https://github.com/syuntoku14/fusion2urdf -->
30
- <xacro : macro name =" iiwa14"
31
- params =" robot_name:=^|lbr port_id:=^|30200 sim:=^|true" >
17
+ <!-- system parameters via yaml -->
18
+ <xacro : property name =" system_parameters"
19
+ value =" ${xacro.load_yaml(system_parameters_path)}" />
20
+
21
+ <!-- constants -->
22
+ <xacro : property name =" PI" value =" 3.1415926535897931" />
23
+ <xacro : property name =" joint_damping" value =" 10.0" />
24
+ <xacro : property name =" joint_friction" value =" 0.1" />
25
+
26
+ <!-- macros for simulation and real hardware -->
27
+ <xacro : lbr_gazebo robot_name =" ${robot_name}" />
28
+ <xacro : lbr_system_interface
29
+ sim =" ${sim}"
30
+ joint_limits =" ${joint_limits}"
31
+ system_parameters =" ${system_parameters}" />
32
32
33
33
<link name =" link_0" >
34
34
<inertial >
56
56
<parent link =" link_0" />
57
57
<child link =" link_1" />
58
58
<axis xyz =" 0.0 0.0 1.0" />
59
- <limit effort =" ${effort_limit}" lower =" ${-A1_position_limit * PI / 180}"
60
- upper =" ${A1_position_limit * PI / 180}"
61
- velocity =" ${A1_velocity_limit * PI / 180}" />
59
+ <limit
60
+ effort =" ${joint_limits['A1']['effort']}"
61
+ lower =" ${joint_limits['A1']['lower'] * PI / 180}"
62
+ upper =" ${joint_limits['A1']['upper'] * PI / 180}"
63
+ velocity =" ${joint_limits['A1']['velocity'] * PI / 180}" />
62
64
<dynamics damping =" ${joint_damping}" friction =" ${joint_friction}" />
63
65
</joint >
64
66
88
90
<parent link =" link_1" />
89
91
<child link =" link_2" />
90
92
<axis xyz =" 0.0 1.0 0.0" />
91
- <limit effort =" ${effort_limit}" lower =" ${-A2_position_limit * PI / 180}"
92
- upper =" ${A2_position_limit * PI / 180}"
93
- velocity =" ${A2_velocity_limit * PI / 180}" />
93
+ <limit
94
+ effort =" ${joint_limits['A2']['effort']}"
95
+ lower =" ${joint_limits['A2']['lower'] * PI / 180}"
96
+ upper =" ${joint_limits['A2']['upper'] * PI / 180}"
97
+ velocity =" ${joint_limits['A2']['velocity'] * PI / 180}" />
94
98
<dynamics damping =" ${joint_damping}" friction =" ${joint_friction}" />
95
99
</joint >
96
100
120
124
<parent link =" link_2" />
121
125
<child link =" link_3" />
122
126
<axis xyz =" 0.0 0.0 1.0" />
123
- <limit effort =" ${effort_limit}" lower =" ${-A3_position_limit * PI / 180}"
124
- upper =" ${A3_position_limit * PI / 180}"
125
- velocity =" ${A3_velocity_limit * PI / 180}" />
127
+ <limit
128
+ effort =" ${joint_limits['A3']['effort']}"
129
+ lower =" ${joint_limits['A3']['lower'] * PI / 180}"
130
+ upper =" ${joint_limits['A3']['upper'] * PI / 180}"
131
+ velocity =" ${joint_limits['A3']['velocity'] * PI / 180}" />
126
132
<dynamics damping =" ${joint_damping}" friction =" ${joint_friction}" />
127
133
</joint >
128
134
152
158
<parent link =" link_3" />
153
159
<child link =" link_4" />
154
160
<axis xyz =" 0.0 -1.0 0.0" />
155
- <limit effort =" ${effort_limit}" lower =" ${-A4_position_limit * PI / 180}"
156
- upper =" ${A4_position_limit * PI / 180}"
157
- velocity =" ${A4_velocity_limit * PI / 180}" />
161
+ <limit
162
+ effort =" ${joint_limits['A4']['effort']}"
163
+ lower =" ${joint_limits['A4']['lower'] * PI / 180}"
164
+ upper =" ${joint_limits['A4']['upper'] * PI / 180}"
165
+ velocity =" ${joint_limits['A4']['velocity'] * PI / 180}" />
158
166
<dynamics damping =" ${joint_damping}" friction =" ${joint_friction}" />
159
167
</joint >
160
168
184
192
<parent link =" link_4" />
185
193
<child link =" link_5" />
186
194
<axis xyz =" 0.0 0.0 1.0" />
187
- <limit effort =" ${effort_limit}" lower =" ${-A5_position_limit * PI / 180}"
188
- upper =" ${A5_position_limit * PI / 180}"
189
- velocity =" ${A5_velocity_limit * PI / 180}" />
195
+ <limit
196
+ effort =" ${joint_limits['A5']['effort']}"
197
+ lower =" ${joint_limits['A5']['lower'] * PI / 180}"
198
+ upper =" ${joint_limits['A5']['upper'] * PI / 180}"
199
+ velocity =" ${joint_limits['A5']['velocity'] * PI / 180}" />
190
200
<dynamics damping =" ${joint_damping}" friction =" ${joint_friction}" />
191
201
</joint >
192
202
216
226
<parent link =" link_5" />
217
227
<child link =" link_6" />
218
228
<axis xyz =" 0.0 1.0 0.0" />
219
- <limit effort =" ${effort_limit}" lower =" ${-A6_position_limit * PI / 180}"
220
- upper =" ${A6_position_limit * PI / 180}"
221
- velocity =" ${A6_velocity_limit * PI / 180}" />
229
+ <limit
230
+ effort =" ${joint_limits['A6']['effort']}"
231
+ lower =" ${joint_limits['A6']['lower'] * PI / 180}"
232
+ upper =" ${joint_limits['A6']['upper'] * PI / 180}"
233
+ velocity =" ${joint_limits['A6']['velocity'] * PI / 180}" />
222
234
<dynamics damping =" ${joint_damping}" friction =" ${joint_friction}" />
223
235
</joint >
224
236
248
260
<parent link =" link_6" />
249
261
<child link =" link_7" />
250
262
<axis xyz =" 0.0 0.0 1.0" />
251
- <limit effort =" ${effort_limit}" lower =" ${-A7_position_limit * PI / 180}"
252
- upper =" ${A7_position_limit * PI / 180}"
253
- velocity =" ${A7_velocity_limit * PI / 180}" />
263
+ <limit
264
+ effort =" ${joint_limits['A7']['effort']}"
265
+ lower =" ${joint_limits['A7']['lower'] * PI / 180}"
266
+ upper =" ${joint_limits['A7']['upper'] * PI / 180}"
267
+ velocity =" ${joint_limits['A7']['velocity'] * PI / 180}" />
254
268
<dynamics damping =" ${joint_damping}" friction =" ${joint_friction}" />
255
269
</joint >
256
270
282
296
283
297
<link name =" link_ee" >
284
298
</link >
285
-
286
- <xacro : lbr_gazebo robot_name =" ${robot_name}" />
287
- <!-- TODO: move modes to args, decouple urdf/gazebo/controls -->
288
- <xacro : lbr_system_interface
289
- A1_position_limit =" ${A1_position_limit * PI / 180}"
290
- A2_position_limit =" ${A2_position_limit * PI / 180}"
291
- A3_position_limit =" ${A3_position_limit * PI / 180}"
292
- A4_position_limit =" ${A4_position_limit * PI / 180}"
293
- A5_position_limit =" ${A5_position_limit * PI / 180}"
294
- A6_position_limit =" ${A6_position_limit * PI / 180}"
295
- A7_position_limit =" ${A7_position_limit * PI / 180}"
296
- A1_velocity_limit =" ${A1_velocity_limit * PI / 180}"
297
- A2_velocity_limit =" ${A2_velocity_limit * PI / 180}"
298
- A3_velocity_limit =" ${A3_velocity_limit * PI / 180}"
299
- A4_velocity_limit =" ${A4_velocity_limit * PI / 180}"
300
- A5_velocity_limit =" ${A5_velocity_limit * PI / 180}"
301
- A6_velocity_limit =" ${A6_velocity_limit * PI / 180}"
302
- A7_velocity_limit =" ${A7_velocity_limit * PI / 180}"
303
- max_torque =" ${effort_limit}"
304
- sim =" ${sim}" remote_host =" INADDR_ANY" port_id =" ${port_id}" />
305
-
306
299
</xacro : macro >
307
300
</robot >
0 commit comments