Skip to content

Commit 8745ab4

Browse files
authored
UR20 description and meshes (#94)
The UR20 meshes are added under Universal Robots A/S’ Terms and Conditions for Use of Graphical Documentation
1 parent 379beee commit 8745ab4

25 files changed

+4230
-5
lines changed

.pre-commit-config.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,16 @@
1313
#
1414
# See https://github.com/pre-commit/pre-commit
1515

16+
# This need to be a one to one copy from the Universal Robots legal no matter trailing spaces or not
17+
exclude: 'meshes/ur20/LICENSE.txt'
18+
1619
repos:
1720
# Standard hooks
1821
- repo: https://github.com/pre-commit/pre-commit-hooks
1922
rev: v4.4.0
2023
hooks:
2124
- id: check-added-large-files
25+
args: ['--maxkb=1500']
2226
- id: check-ast
2327
- id: check-case-conflict
2428
- id: check-docstring-first

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ Note that for ROS2 **Foxy** the description is in the [driver's
1919
repository](https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/tree/foxy). Please do
2020
not clone this repository into a Foxy workspace.
2121

22+
## License
23+
The majority of this repository is licensed under the BSD-3-Clause license. However, the **UR20
24+
meshes** are licensed under Universal Robots A/S’ Terms and Conditions for Use of Graphical Documentation. See the separate
25+
[LICENSE.txt](/meshes/ur20/LICENSE.txt) file for details. If you have any questions regarding the
26+
license or the license doesn't fit you use-case, please contact [[email protected]](mailto:[email protected]).
27+
2228
## Structure of the repository
2329

2430
The most relevant files are:
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
kinematics:
2+
shoulder:
3+
x: 0
4+
y: 0
5+
z: 0.23630000000000001
6+
roll: -0
7+
pitch: 0
8+
yaw: -0
9+
upper_arm:
10+
x: 0
11+
y: 0
12+
z: 0
13+
roll: 1.570796327
14+
pitch: 0
15+
yaw: -0
16+
forearm:
17+
x: -0.86199999999999999
18+
y: 0
19+
z: 0
20+
roll: -0
21+
pitch: 0
22+
yaw: -0
23+
wrist_1:
24+
x: -0.72870000000000001
25+
y: 0
26+
z: 0.20100000000000001
27+
roll: -0
28+
pitch: 0
29+
yaw: -0
30+
wrist_2:
31+
x: 0
32+
y: -0.1593
33+
z: -3.2672976162492252e-11
34+
roll: 1.570796327
35+
pitch: 0
36+
yaw: -0
37+
wrist_3:
38+
x: 0
39+
y: 0.15429999999999999
40+
z: -3.1647459019915597e-11
41+
roll: 1.5707963265897931
42+
pitch: 3.1415926535897931
43+
yaw: 3.1415926535897931
44+
hash: calib_4890363623803256388

config/ur20/joint_limits.yaml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Joints limits
2+
#
3+
# Sources:
4+
#
5+
# - Universal Robots e-Series, User Manual, UR16e, Version 5.8
6+
# https://s3-eu-west-1.amazonaws.com/ur-support-site/69187/99473_UR16e_User_Manual_en_Global.pdf
7+
# - Support > Articles > UR articles > Max. joint torques
8+
# https://www.universal-robots.com/articles/ur-articles/max-joint-torques
9+
# retrieved: 2020-06-16, last modified: 2020-06-09
10+
joint_limits:
11+
shoulder_pan_joint:
12+
# acceleration limits are not publicly available
13+
has_acceleration_limits: false
14+
has_effort_limits: true
15+
has_position_limits: true
16+
has_velocity_limits: true
17+
max_effort: 330.0
18+
max_position: !degrees 360.0
19+
max_velocity: !degrees 130.0
20+
min_position: !degrees -360.0
21+
shoulder_lift_joint:
22+
# acceleration limits are not publicly available
23+
has_acceleration_limits: false
24+
has_effort_limits: true
25+
has_position_limits: true
26+
has_velocity_limits: true
27+
max_effort: 330.0
28+
max_position: !degrees 360.0
29+
max_velocity: !degrees 130.0
30+
min_position: !degrees -360.0
31+
elbow_joint:
32+
# acceleration limits are not publicly available
33+
has_acceleration_limits: false
34+
has_effort_limits: true
35+
has_position_limits: true
36+
has_velocity_limits: true
37+
max_effort: 150.0
38+
# we artificially limit this joint to half its actual joint position limit
39+
# to avoid (MoveIt/OMPL) planning problems, as due to the physical
40+
# construction of the robot, it's impossible to rotate the 'elbow_joint'
41+
# over more than approx +- 1 pi (the shoulder lift joint gets in the way).
42+
#
43+
# This leads to planning problems as the search space will be divided into
44+
# two sections, with no connections from one to the other.
45+
#
46+
# Refer to https://github.com/ros-industrial/universal_robot/issues/265 for
47+
# more information.
48+
max_position: !degrees 180.0
49+
max_velocity: !degrees 160.0
50+
min_position: !degrees -180.0
51+
wrist_1_joint:
52+
# acceleration limits are not publicly available
53+
has_acceleration_limits: false
54+
has_effort_limits: true
55+
has_position_limits: true
56+
has_velocity_limits: true
57+
max_effort: 56.0
58+
max_position: !degrees 360.0
59+
max_velocity: !degrees 220.0
60+
min_position: !degrees -360.0
61+
wrist_2_joint:
62+
# acceleration limits are not publicly available
63+
has_acceleration_limits: false
64+
has_effort_limits: true
65+
has_position_limits: true
66+
has_velocity_limits: true
67+
max_effort: 56.0
68+
max_position: !degrees 360.0
69+
max_velocity: !degrees 220.0
70+
min_position: !degrees -360.0
71+
wrist_3_joint:
72+
# acceleration limits are not publicly available
73+
has_acceleration_limits: false
74+
has_effort_limits: true
75+
has_position_limits: true
76+
has_velocity_limits: true
77+
max_effort: 56.0
78+
max_position: !degrees 360.0
79+
max_velocity: !degrees 220.0
80+
min_position: !degrees -360.0
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Physical parameters
2+
3+
# from https://www.universal-robots.com/how-tos-and-faqs/faq/ur-faq/parameters-for-calculations-of-kinematics-and-dynamics-45257/
4+
dh_parameters:
5+
d1: 0.2363
6+
a2: -0.8620
7+
a3: -0.7287
8+
d4: 0.201
9+
d5: 0.1593
10+
d6: 0.1543
11+
12+
offsets:
13+
shoulder_offset: 0.260 # measured from model
14+
elbow_offset: 0.043 # measured from model
15+
16+
inertia_parameters:
17+
# taken from https://www.universal-robots.com/how-tos-and-faqs/faq/ur-faq/parameters-for-calculations-of-kinematics-and-dynamics-45257/
18+
base_mass: 4.0 # This mass might be incorrect
19+
shoulder_mass: 16.343
20+
upper_arm_mass: 29.632
21+
upper_arm_inertia_offset: 0.275 # measured from model
22+
forearm_mass: 7.879
23+
wrist_1_mass: 3.054
24+
wrist_2_mass: 3.126
25+
wrist_3_mass: 0.846
26+
27+
shoulder_radius: x0.060 # FROM UR5 CURRENTLY NOT USED ANYMORE
28+
upper_arm_radius: x0.054 # FROM UR5 CURRENTLY NOT USED ANYMORE
29+
elbow_radius: x0.060 # FROM UR5 CURRENTLY NOT USED ANYMORE
30+
forearm_radius: x0.040 # FROM UR5 CURRENTLY NOT USED ANYMORE
31+
wrist_radius: x0.045 # FROM UR5 CURRENTLY NOT USED ANYMORE
32+
33+
links:
34+
base:
35+
radius: 0.075
36+
length: 0.038
37+
shoulder:
38+
radius: 0.075
39+
length: 0.178
40+
upperarm:
41+
radius: 0.075
42+
length: 0.852
43+
forearm:
44+
radius: 0.075
45+
length: 0.7287
46+
wrist_1:
47+
radius: 0.075
48+
length: 0.12
49+
wrist_2:
50+
radius: 0.075
51+
length: 0.12
52+
wrist_3:
53+
radius: 0.045
54+
length: 0.05
55+
56+
center_of_mass: # Adjusted manually
57+
shoulder_cog:
58+
x: 0.0
59+
y: 0.00244
60+
z: -0.037
61+
upper_arm_cog:
62+
x: 0.00001
63+
y: 0.15061
64+
z: 0.48757
65+
forearm_cog:
66+
x: -0.00012
67+
y: 0.06112
68+
z: 0.2984
69+
wrist_1_cog:
70+
x: -0.00021
71+
y: -0.00112
72+
z: 0.02269
73+
wrist_2_cog:
74+
x: -0.00021
75+
y: 0.00112
76+
z: 0.002269
77+
wrist_3_cog:
78+
x: 0.0
79+
y: -0.001156
80+
z: -0.00149

config/ur20/visual_parameters.yaml

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Visualisation
2+
3+
mesh_files:
4+
base:
5+
visual:
6+
mesh:
7+
package: ur_description
8+
path: meshes/ur20/visual/base.dae
9+
material:
10+
name: "LightGrey"
11+
color: "0.7 0.7 0.7 1.0"
12+
collision:
13+
mesh:
14+
package: ur_description
15+
path: meshes/ur20/collision/base.stl
16+
17+
shoulder:
18+
visual:
19+
mesh:
20+
package: ur_description
21+
path: meshes/ur20/visual/shoulder.dae
22+
material:
23+
name: "LightGrey"
24+
color: "0.7 0.7 0.7 1.0"
25+
collision:
26+
mesh:
27+
package: ur_description
28+
path: meshes/ur20/collision/shoulder.stl
29+
30+
upper_arm:
31+
visual:
32+
mesh:
33+
package: ur_description
34+
path: meshes/ur20/visual/upperarm.dae
35+
material:
36+
name: "LightGrey"
37+
color: "0.7 0.7 0.7 1.0"
38+
collision:
39+
mesh:
40+
package: ur_description
41+
path: meshes/ur20/collision/upperarm.stl
42+
mesh_files:
43+
44+
forearm:
45+
visual:
46+
mesh:
47+
package: ur_description
48+
path: meshes/ur20/visual/forearm.dae
49+
material:
50+
name: "LightGrey"
51+
color: "0.7 0.7 0.7 1.0"
52+
collision:
53+
mesh:
54+
package: ur_description
55+
path: meshes/ur20/collision/forearm.stl
56+
57+
wrist_1:
58+
visual:
59+
mesh:
60+
package: ur_description
61+
path: meshes/ur20/visual/wrist1.dae
62+
material:
63+
name: "LightGrey"
64+
color: "0.7 0.7 0.7 1.0"
65+
collision:
66+
mesh:
67+
package: ur_description
68+
path: meshes/ur20/collision/wrist1.stl
69+
visual_offset: -0.0775
70+
71+
wrist_2:
72+
visual:
73+
mesh:
74+
package: ur_description
75+
path: meshes/ur20/visual/wrist2.dae
76+
material:
77+
name: "LightGrey"
78+
color: "0.7 0.7 0.7 1.0"
79+
collision:
80+
mesh:
81+
package: ur_description
82+
path: meshes/ur20/collision/wrist2.stl
83+
visual_offset: -0.0749
84+
85+
wrist_3:
86+
visual:
87+
mesh:
88+
package: ur_description
89+
path: meshes/ur20/visual/wrist3.dae
90+
material:
91+
name: "LightGrey"
92+
color: "0.7 0.7 0.7 1.0"
93+
collision:
94+
mesh:
95+
package: ur_description
96+
path: meshes/ur20/collision/wrist3.stl
97+
visual_offset: -0.07

launch/view_ur.launch.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,9 @@ def generate_launch_description():
4242
DeclareLaunchArgument(
4343
"ur_type",
4444
description="Type/series of used UR robot.",
45-
choices=["ur3", "ur3e", "ur5", "ur5e", "ur10", "ur10e", "ur16e"],
45+
choices=["ur3", "ur3e", "ur5", "ur5e", "ur10", "ur10e", "ur16e", "ur20"],
4646
)
4747
)
48-
# TODO(anyone): enable this when added into ROS2-foxy
49-
# choices=['ur3', 'ur3e', 'ur5', 'ur5e', 'ur10', 'ur10e', 'ur16e']))
5048
declared_arguments.append(
5149
DeclareLaunchArgument(
5250
"safety_limits",

0 commit comments

Comments
 (0)