UnderAutomation
Eine Frage?

[email protected]

Kontakt
UnderAutomation
⌘Q
Diese Seite ist nur auf Englisch verfügbar.

Kinematics models and DH parameters

Get the DH parameters of a Yaskawa robot from the catalog of 169 models, from the ALL.PRM file of the controller, or from your own values.

  • DH parameters
  • From the catalog
  • From the controller
  • Your own values
  • Reference
  • What to read next

This page shows the three ways to get the geometry of a Yaskawa Motoman arm for the offline kinematics of the SDK: the catalog of 169 models, the ALL.PRM parameter file of the controller, or your own DH parameters. It also explains the meaning of each parameter.

DH parameters

DhParameters holds the 9 values that change from one 6-axis Yaskawa arm to another. The other values of the Denavit-Hartenberg table are the same for every arm.

The lengths of a GP7, drawn at zero pulse. A1 to A3 and D4 to D6 are in mm. D5 is 0 on a robot with a spherical wrist.The lengths of a GP7, drawn at zero pulse. A1 to A3 and D4 to D6 are in mm. D5 is 0 on a robot with a spherical wrist.
The lengths of a GP7, drawn at zero pulse. A1 to A3 and D4 to D6 are in mm. D5 is 0 on a robot with a spherical wrist.
ParameterMeaningGP7
A1Offset between the S axis and the L axis, along the arm (mm)40
A2Lower arm: L axis to U axis (mm)445
A3Elbow offset: U axis to the forearm axis (mm)40
D4Forearm: U axis to the wrist (mm)440
D5Wrist offset along the B axis (mm). 0 for a spherical wrist0
D6Wrist to flange, along the T axis (mm)80
Theta2DH angle of the L axis at zero pulse (degrees)-90
Theta3DH angle of the U axis at zero pulse (degrees)0
Theta5DH angle of the B axis at zero pulse (degrees)0

The parameters use the modified DH convention (Craig). KinematicsCategory tells which solver is used: Opw when D5 is 0, J5OffsetWrist otherwise.

From the catalog

ArmKinematicModels lists 169 models: GP (33), MH (48), ES (14), SP (14), HC (15), HP (7), AR (6), MS (6), PH (5), MotoMINI and others. FromArmKinematicModel returns their parameters. FromArmKinematicModelName finds a model by its name, and returns null when the name is not known.

static void Main()
{
// From the enumeration: 169 models of the catalog
DhParameters gp7 = DhParameters.FromArmKinematicModel(ArmKinematicModels.GP7);
// From the name of the model, case ignored. Null if the model is not known.
DhParameters hc10 = DhParameters.FromArmKinematicModelName("HC10");
Console.WriteLine(gp7); // A1=40, A2=445, A3=40, D4=440, D5=0, D6=80...
Console.WriteLine(gp7.KinematicsCategory); // Opw
Console.WriteLine(hc10.KinematicsCategory); // J5OffsetWrist
// Every model of the catalog
foreach (ArmKinematicModels model in Enum.GetValues(typeof(ArmKinematicModels)))
Console.WriteLine(model);
}
}
Click to see the full code

Some models have several variants, with the order code in the name (for example HC10DT_1_06VXHC10_B10). Use the variant of the name plate of your robot. Do not store the integer value of the enumeration: new models are added in alphabetical order and shift the values. Store the name.

From the controller

The ALL.PRM file of a controller contains the geometry of its robot. FromPrmFile reads a file saved on the PC, FromPrmContent the text of the file. DX100, DX200, FS100, YRC1000 and YRC1000micro files are supported. The parameters of the first robot (R1) are read.

static void Main()
{
// ALL.PRM saved from the controller, on the PC
DhParameters fromFile = DhParameters.FromPrmFile(@"C:\Backup\ALL.PRM");
// Or downloaded from the controller (1.4 MB, about 13 s on a YRC1000micro)
var parameters = new ConnectParameters("192.168.0.1");
parameters.Ftp.Enable = true;
var robot = new YaskawaRobot();
robot.Connect(parameters);
string content = robot.Ftp.GetFile("ALL.PRM");
DhParameters dh = DhParameters.FromPrmContent(content);
// Joint solutions of the current position (tool 0, robot frame)
var position = robot.HighSpeedEServer.GetRobotCartesianPosition();
foreach (JointsAngles solution in KinematicsUtils.InverseKinematics(position, dh))
Console.WriteLine(solution);
robot.Disconnect();
}
}
Click to see the full code

Download ALL.PRM with FTP, HTTP or the High Speed Ethernet Server. The file is about 1.4 MB: FTP and HTTP take about 13 s on a YRC1000micro, the High Speed Ethernet Server about 45 s. Save it once, then use FromPrmFile.

On a MotoMINI, the parameters read from ALL.PRM are equal to ArmKinematicModels.MotoMINI of the catalog. The file is the right choice for a model that is not in the catalog, or to check the model of a robot.

A file of a robot with a structure that is not supported throws a NotSupportedException. See Supported robots.

Your own values

The constructor takes A1, A2, A3, D4, D5, D6 in mm, then Theta2, Theta3, Theta5 in degrees. Two DhParameters with the same values are equal.

static void Main()
{
// A1, A2, A3, D4, D5, D6 in mm, then Theta2, Theta3, Theta5 in degrees
var dh = new DhParameters(40, 445, 40, 440, 0, 80, -90, 0, 0);
// Same values as the catalog: the same geometry
bool sameAsGp7 = dh.Equals(DhParameters.FromArmKinematicModel(ArmKinematicModels.GP7));
// The solver is chosen from the values: D5 = 0 is a spherical wrist
Console.WriteLine(dh.KinematicsCategory); // Opw
}
}
Click to see the full code

DhParameters implements IDhParameters: your own class can also implement this interface and be passed to KinematicsUtils.

Reference

Class
DhParameters
C#Python

Denavit-Hartenberg parameters of a 6-axis Yaskawa arm (axes S, L, U, R, B, T).

MemberTypeDescription
DhParameters()
Constructor
Initializes a new instance of DhParameters with zero lengths and standard home angles (Theta2 = -90, Theta3 = 0, Theta5 = 0).
DhParameters(double, double, double, double, double, double, double, double, double)
Constructor
Initializes a new instance of DhParameters with the specified values.
  • a1 : Offset between the S axis and the L axis (mm).
  • a2 : Lower arm length (mm).
  • a3 : Elbow offset (mm).
  • d4 : Forearm length (mm).
  • d5 : Wrist offset along the B axis (mm).
  • d6 : Distance between the wrist and the flange (mm).
  • theta2 : DH angle of the L axis at zero pulse (degrees).
  • theta3 : DH angle of the U axis at zero pulse (degrees).
  • theta5 : DH angle of the B axis at zero pulse (degrees).
DhParameters(IDhParameters)
Constructor
Initializes a new instance of DhParameters by copying an existing IDhParameters.
  • parameters : The source parameters to copy.
A1
Property
double
Offset between the S axis and the L axis, along the arm (mm).
A2
Property
double
Lower arm length, between the L axis and the U axis (mm).
A3
Property
double
Elbow offset, between the U axis and the forearm axis (mm).
D4
Property
double
Forearm length, between the U axis and the wrist (mm).
D5
Property
double
Wrist offset along the B axis (mm). Zero for a spherical wrist.
D6
Property
double
Distance between the wrist and the flange, along the T axis (mm).
KinematicsCategory
Property
read only
KinematicsCategory
Kinematic structure of the arm: Opw when D5 is 0, J5OffsetWrist otherwise.
Theta2
Property
double
DH angle of the L axis when the L axis is at zero pulse (degrees).
Theta3
Property
double
DH angle of the U axis when the U axis is at zero pulse (degrees).
Theta5
Property
double
DH angle of the B axis when the B axis is at zero pulse (degrees).
Equals(object)
Method
bool
FromArmKinematicModel(ArmKinematicModels)
Method
static
DhParameters
Returns the DH parameters of a known robot model.
  • model : Robot model.
FromArmKinematicModelName(string)
Method
static
DhParameters
Returns the DH parameters of a known robot model, from its name (for example "GP7" or "HC10DTP"). The comparison ignores case.
  • modelName : Robot model name, as given by the description of ArmKinematicModels members.
FromPrmContent(string)
Method
static
DhParameters
Reads the DH parameters of robot group 1 from the text content of an ALL.PRM parameter file. DX100, DX200, FS100, YRC1000 and YRC1000micro files are supported.
  • content : Text content of the .prm file.
FromPrmFile(string)
Method
static
DhParameters
Reads the DH parameters of robot group 1 from an ALL.PRM parameter file saved from a controller. DX100, DX200, FS100, YRC1000 and YRC1000micro files are supported.
  • path : Path of the .prm file.
GetHashCode()
Method
int
ToString()
Method
string
Interface
IDhParameters
C#Python

Denavit-Hartenberg parameters of a 6-axis Yaskawa arm (axes S, L, U, R, B, T).

MemberTypeDescription
A1
Property
read only
double
Offset between the S axis and the L axis, along the arm (mm).
A2
Property
read only
double
Lower arm length, between the L axis and the U axis (mm).
A3
Property
read only
double
Elbow offset, between the U axis and the forearm axis (mm).
D4
Property
read only
double
Forearm length, between the U axis and the wrist (mm).
D5
Property
read only
double
Wrist offset along the B axis (mm). Zero for a spherical wrist.
D6
Property
read only
double
Distance between the wrist and the flange, along the T axis (mm).
Theta2
Property
read only
double
DH angle of the L axis when the L axis is at zero pulse (degrees).
Theta3
Property
read only
double
DH angle of the U axis when the U axis is at zero pulse (degrees).
Theta5
Property
read only
double
DH angle of the B axis when the B axis is at zero pulse (degrees).
Enum
ArmKinematicModels
C#Python

Yaskawa Robot Known Arm Models

NameValueDescription
AR1440
0
AR1440
AR1730
1
AR1730
AR2010
2
AR2010
AR3120
3
AR3120
AR700
4
AR700
AR900
5
AR900
DX1350D
6
DX1350D
EP4000D
7
EP4000D
EPH130D
8
EPH130D
EPH400D
9
EPH400D
EPX1250
10
EPX1250
ES0165D_A00
11
ES0165D-A00
ES0165D_A10
12
ES0165D-A10
ES0165D_B00
13
ES0165D-B00
ES0165D_B10
14
ES0165D-B10
ES0165D_Z10
15
ES0165D-Z10
ES0200D
16
ES0200D
ES0280D
17
ES0280D
ES165RD
18
ES165RD
ES200D
19
ES200D
ES200RD_A00_Proto
20
ES200RD-A00-Proto
ES200RD_A10
21
ES200RD-A10
ES200RD_J00
22
ES200RD-J00
ES200RD_Pack_Proto
23
ES200RD-Pack-Proto
ES280D
24
ES280D
GA50
25
GA50
GG250
26
GG250
GP110
27
GP110
GP110H
28
GP110H
GP12
29
GP12
GP165R
30
GP165R
GP180
31
GP180
GP180H
32
GP180H
GP180_120
33
GP180-120
GP200R
34
GP200R
GP200S
35
GP200S
GP20HL
36
GP20HL
GP215
37
GP215
GP225
38
GP225
GP225H
39
GP225H
GP25
40
GP25
GP250
41
GP250
GP25SV
42
GP25SV
GP25_12
43
GP25-12
GP280
44
GP280
GP280L
45
GP280L
GP300R
46
GP300R
GP35H
47
GP35H
GP35L
48
GP35L
GP360
49
GP360
GP4
50
GP4
GP400
51
GP400
GP400R
52
GP400R
GP50
53
GP50
GP600
54
GP600
GP7
55
GP7
GP70L
56
GP70L
GP8
57
GP8
GP88
58
GP88
GP8L
59
GP8L
HC10
60
HC10
HC10DTF
61
HC10DTF
HC10DTFP
62
HC10DTFP
HC10DTP
63
HC10DTP
HC10DT_1_06VXHC10_A10
64
HC10DT_1-06VXHC10-A10
HC10DT_1_06VXHC10_B10
65
HC10DT_1-06VXHC10-B10
HC10DT_1_06VXHC10_B11
66
HC10DT_1-06VXHC10-B11
HC10DT_1_06VXHC10_B12
67
HC10DT_1-06VXHC10-B12
HC10DT_1_06VXHC10_C11
68
HC10DT_1-06VXHC10-C11
HC10SDTP
69
HC10SDTP
HC20DT
70
HC20DT
HC20DTP
71
HC20DTP
HC20SDT
72
HC20SDT
HC20SDTP
73
HC20SDTP
HC30PL
74
HC30PL
HP0020D_A00
75
HP0020D-A00
HP0020D_A10
76
HP0020D-A10
HP0020D_B00
77
HP0020D-B00
HP0020D_B10
78
HP0020D-B10
HP0020F
79
HP0020F
HP0165D
80
HP0165D
HP020RD
81
HP020RD
MA02010
82
MA02010
MA03120
83
MA03120
MA1440
84
MA1440
MC02000
85
MC02000
MCL0020
86
MCL0020
MCL020F
87
MCL020F
MH00005
88
MH00005
MH00006_A00
89
MH00006-A00
MH00006_A30
90
MH00006-A30
MH00006_B00
91
MH00006-B00
MH00006_B30
92
MH00006-B30
MH00006_C00
93
MH00006-C00
MH0000J
94
MH0000J
MH00024_A00
95
MH00024-A00
MH00024_A10
96
MH00024-A10
MH00024_Z00_Proto
97
MH00024-Z00-Proto
MH0003F
98
MH0003F
MH00050_A00
99
MH00050-A00
MH00050_A10
100
MH00050-A10
MH00050_A20
101
MH00050-A20
MH00050_B00
102
MH00050-B00
MH00050_B10
103
MH00050-B10
MH00050_B20
104
MH00050-B20
MH00050_J00
105
MH00050-J00
MH00050_J10
106
MH00050-J10
MH00050_J20
107
MH00050-J20
MH00050_Z00
108
MH00050-Z00
MH0005F
109
MH0005F
MH0005L
110
MH0005L
MH0005S
111
MH0005S
MH0006F
112
MH0006F
MH0006S
113
MH0006S
MH00080
114
MH00080
MH00165_A00
115
MH00165-A00
MH00165_A10
116
MH00165-A10
MH00165_B00
117
MH00165-B00
MH00200
118
MH00200
MH00215
119
MH00215
MH00250
120
MH00250
MH00280
121
MH00280
MH003BM
122
MH003BM
MH00400
123
MH00400
MH005BM
124
MH005BM
MH005LF
125
MH005LF
MH005LS
126
MH005LS
MH00600
127
MH00600
MH006SF
128
MH006SF
MH00900
129
MH00900
MH110
130
MH110
MH12
131
MH12
MH180_A00
132
MH180-A00
MH180_A10
133
MH180-A10
MH180_C00
134
MH180-C00
MH225
135
MH225
MHP045L
136
MHP045L
MPL0080
137
MPL0080
MPX1150
138
MPX1150
MPX1400
139
MPX1400
MPX1950
140
MPX1950
MS00080
141
MS00080
MS00120
142
MS00120
MS0080W
143
MS0080W
MS100
144
MS100
MS165
145
MS165
MS210
146
MS210
MotoMINI
147
MotoMINI
PH130F
148
PH130F
PH130RF
149
PH130RF
PH13RLD
150
PH13RLD
PH200R
151
PH200R
PH200RF
152
PH200RF
SP100
153
SP100
SP110H
154
SP110H
SP130
155
SP130
SP150R
156
SP150R
SP165
157
SP165
SP165_105
158
SP165-105
SP180H
159
SP180H
SP180H_110
160
SP180H-110
SP185R
161
SP185R
SP210
162
SP210
SP225H
163
SP225H
SP225H_135
164
SP225H-135
SP235
165
SP235
SP80
166
SP80
UP0350D
167
UP0350D
UP400RD
168
UP400RD

What to read next

  • Offline kinematics: forward and inverse kinematics.
  • FTP file transfers: download ALL.PRM and the other files of the controller.

Integrieren Sie Roboter von Universal Robots, Fanuc, Yaskawa, ABB oder Staubli ganz einfach in Ihre .NET-, Python-, LabVIEW- oder Matlab-Anwendungen

UnderAutomation
KontaktLegal

© All rights reserved.