Skip to content

Commit a6d23da

Browse files
authored
Merge pull request #363 from compas-dev/fix-e-series-ik
Fix UR3e and UR10e DH params
2 parents 85ec408 + 1f68e4e commit a6d23da

File tree

2 files changed

+69
-50
lines changed

2 files changed

+69
-50
lines changed

CHANGELOG.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Unreleased
1616

1717
**Fixed**
1818

19+
* Fixed DH params for analytical IK solver of UR3e and UR10e.
20+
1921
**Deprecated**
2022

2123
**Removed**

src/compas_fab/backends/kinematics/solvers/offset_wrist_kinematics.py

Lines changed: 67 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,64 @@
44
# The following parameters for UR robots are taken from the following website:
55
# https://www.universal-robots.com/articles/ur/application-installation/dh-parameters-for-calculations-of-kinematics-and-dynamics/
66

7-
UR10_PARAMS = {'d1': 0.1273,
8-
'a2': -0.612,
9-
'a3': -0.5723,
10-
'd4': 0.163941,
11-
'd5': 0.1157,
12-
'd6': 0.0922}
13-
14-
UR10e_PARAMS = {'d1': 0.1807,
15-
'a2': -0.6127,
16-
'a3': -0.57155,
17-
'd4': 0.17415,
18-
'd5': 0.11985,
19-
'd6': 0.11655}
20-
21-
UR5_PARAMS = {'d1': 0.089159,
22-
'a2': -0.42500,
23-
'a3': -0.39225,
24-
'd4': 0.10915,
25-
'd5': 0.09465,
26-
'd6': 0.0823}
27-
28-
UR5e_PARAMS = {'d1': 0.1625,
29-
'a2': -0.425,
30-
'a3': -0.3922,
31-
'd4': 0.1333,
32-
'd5': 0.0997,
33-
'd6': 0.0996}
34-
35-
36-
UR3_PARAMS = {'d1': 0.1519,
37-
'a2': -0.24365,
38-
'a3': -0.21325,
39-
'd4': 0.11235,
40-
'd5': 0.08535,
41-
'd6': 0.0819}
42-
43-
UR3e_PARAMS = {'d1': 0.15185,
44-
'a2': -0.24355,
45-
'a3': -0.2132,
46-
'd4': 0.13105,
47-
'd5': 0.08535,
48-
'd6': 0.0921}
7+
UR10_PARAMS = {
8+
"d1": 0.1273,
9+
"a2": -0.612,
10+
"a3": -0.5723,
11+
"d4": 0.163941,
12+
"d5": 0.1157,
13+
"d6": 0.0922,
14+
}
15+
16+
UR10e_PARAMS = {
17+
"d1": 0.1807,
18+
"a2": -0.6127,
19+
"a3": -0.57155,
20+
"d4": 0.17415,
21+
"d5": 0.11985,
22+
"d6": 0.11655,
23+
}
24+
25+
UR5_PARAMS = {
26+
"d1": 0.089159,
27+
"a2": -0.42500,
28+
"a3": -0.39225,
29+
"d4": 0.10915,
30+
"d5": 0.09465,
31+
"d6": 0.0823,
32+
}
33+
34+
UR5e_PARAMS = {
35+
"d1": 0.1625,
36+
"a2": -0.425,
37+
"a3": -0.3922,
38+
"d4": 0.1333,
39+
"d5": 0.0997,
40+
"d6": 0.0996,
41+
}
42+
43+
44+
UR3_PARAMS = {
45+
"d1": 0.1519,
46+
"a2": -0.24365,
47+
"a3": -0.21325,
48+
"d4": 0.11235,
49+
"d5": 0.08535,
50+
"d6": 0.0819,
51+
}
52+
53+
UR3e_PARAMS = {
54+
"d1": 0.15185,
55+
"a2": -0.24355,
56+
"a3": -0.2132,
57+
"d4": 0.13105,
58+
"d5": 0.08535,
59+
"d6": 0.0921,
60+
}
4961

5062

5163
class OffsetWristKinematics(object):
52-
"""
53-
"""
64+
""" """
5465

5566
def __init__(self, params):
5667
self.params = params
@@ -64,41 +75,47 @@ def inverse(self, frame_rcf):
6475

6576
class UR3Kinematics(OffsetWristKinematics):
6677
"""Analytical IK solver for UR3 robots."""
78+
6779
def __init__(self):
68-
params = [UR3_PARAMS[k] for k in ['d1', 'a2', 'a3', 'd4', 'd5', 'd6']]
80+
params = [UR3_PARAMS[k] for k in ["d1", "a2", "a3", "d4", "d5", "d6"]]
6981
super(UR3Kinematics, self).__init__(params)
7082

7183

7284
class UR3eKinematics(OffsetWristKinematics):
7385
"""Analytical IK solver for UR3 e-Series robots."""
86+
7487
def __init__(self):
75-
params = [UR3_PARAMS[k] for k in ['d1', 'a2', 'a3', 'd4', 'd5', 'd6']]
88+
params = [UR3e_PARAMS[k] for k in ["d1", "a2", "a3", "d4", "d5", "d6"]]
7689
super(UR3eKinematics, self).__init__(params)
7790

7891

7992
class UR5Kinematics(OffsetWristKinematics):
8093
"""Analytical IK solver for UR5 robots."""
94+
8195
def __init__(self):
82-
params = [UR5_PARAMS[k] for k in ['d1', 'a2', 'a3', 'd4', 'd5', 'd6']]
96+
params = [UR5_PARAMS[k] for k in ["d1", "a2", "a3", "d4", "d5", "d6"]]
8397
super(UR5Kinematics, self).__init__(params)
8498

8599

86100
class UR5eKinematics(OffsetWristKinematics):
87101
"""Analytical IK solver for UR5 e-Series robots."""
102+
88103
def __init__(self):
89-
params = [UR5e_PARAMS[k] for k in ['d1', 'a2', 'a3', 'd4', 'd5', 'd6']]
104+
params = [UR5e_PARAMS[k] for k in ["d1", "a2", "a3", "d4", "d5", "d6"]]
90105
super(UR5eKinematics, self).__init__(params)
91106

92107

93108
class UR10Kinematics(OffsetWristKinematics):
94109
"""Analytical IK solver for UR10 e-Series robots."""
110+
95111
def __init__(self):
96-
params = [UR10_PARAMS[k] for k in ['d1', 'a2', 'a3', 'd4', 'd5', 'd6']]
112+
params = [UR10_PARAMS[k] for k in ["d1", "a2", "a3", "d4", "d5", "d6"]]
97113
super(UR10Kinematics, self).__init__(params)
98114

99115

100116
class UR10eKinematics(OffsetWristKinematics):
101117
"""Analytical IK solver for UR10 e-Series robots."""
118+
102119
def __init__(self):
103-
params = [UR10_PARAMS[k] for k in ['d1', 'a2', 'a3', 'd4', 'd5', 'd6']]
120+
params = [UR10e_PARAMS[k] for k in ["d1", "a2", "a3", "d4", "d5", "d6"]]
104121
super(UR10eKinematics, self).__init__(params)

0 commit comments

Comments
 (0)