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.
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.
| Parameter | Meaning | GP7 |
|---|---|---|
A1 | Offset between the S axis and the L axis, along the arm (mm) | 40 |
A2 | Lower arm: L axis to U axis (mm) | 445 |
A3 | Elbow offset: U axis to the forearm axis (mm) | 40 |
D4 | Forearm: U axis to the wrist (mm) | 440 |
D5 | Wrist offset along the B axis (mm). 0 for a spherical wrist | 0 |
D6 | Wrist to flange, along the T axis (mm) | 80 |
Theta2 | DH angle of the L axis at zero pulse (degrees) | -90 |
Theta3 | DH angle of the U axis at zero pulse (degrees) | 0 |
Theta5 | DH 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 catalogDhParameters 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); // OpwConsole.WriteLine(hc10.KinematicsCategory); // J5OffsetWrist// Every model of the catalogforeach (ArmKinematicModels model in Enum.GetValues(typeof(ArmKinematicModels)))Console.WriteLine(model);}}
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 PCDhParameters 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();}}
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 degreesvar dh = new DhParameters(40, 445, 40, 440, 0, 80, -90, 0, 0);// Same values as the catalog: the same geometrybool sameAsGp7 = dh.Equals(DhParameters.FromArmKinematicModel(ArmKinematicModels.GP7));// The solver is chosen from the values: D5 = 0 is a spherical wristConsole.WriteLine(dh.KinematicsCategory); // Opw}}
DhParameters implements IDhParameters: your own class can also implement this interface and be passed to KinematicsUtils.
Reference
Denavit-Hartenberg parameters of a 6-axis Yaskawa arm (axes S, L, U, R, B, T).
| Member | Type | Description |
|---|---|---|
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.
| |
DhParameters(IDhParameters) Constructor | Initializes a new instance of DhParameters by copying an existing IDhParameters.
| |
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.
|
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.
|
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.
|
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.
|
GetHashCode() Method | int | |
ToString() Method | string |
Denavit-Hartenberg parameters of a 6-axis Yaskawa arm (axes S, L, U, R, B, T).
| Member | Type | Description |
|---|---|---|
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). |
Yaskawa Robot Known Arm Models
| Name | Value | Description |
|---|---|---|
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.PRMand the other files of the controller.