Modify FANUC DH Parameters

  • Hello all,
    I am trying to modify my robot's DH parameters in order to optimize the robot's accuracy within a specific volume. The Robot is an LR Mate 200iD running on an R30iB controller.


    I have located system variables that modify the DH length parameters: $PARAM_GROUP[1].$DH_D and $PARAM_GROUP[1].$DH_A. I can change these values, cold start the controller, and then the robot's joint-position relationship is changed as expected. I have having difficulty changing the angle parameters, alpha and theta. There are system variables that look correct: $PARAM_GROUP[1].$DH_THETA0, and $PARAM_GROUP[1].$DH_ALPHA


    To further complicate matters, there are several other system variables that look like they refer to DH parameters. For example:
    $PARAM_GROUP[1].$SV_DH_D
    $PARAM_GROUP[1].$DH_VD
    $PARAM_GROUP[1].$DH_HD
    $PARAM_GROUP[1].$DH_OD
    These are just the D-parameters. There are equivalents for a, alpha, and theta.


    Does anyone know what these other variables control, if anything? Also, does anyone know how to modify the theta and alpha parameters? I could modify theta via mastering if I had to, but I am confused about how to modify alpha.


    Thanks for your help!

  • Hi, I found also those parameters but I've never tried to change them. I guess those additional parameters define a constant angle that is added to the joint position values: At master position link 2 is vertical and link 3 is horizontal and both joint angles are zero. But when you calculate the direct kinematics you will notice that J2 and J3 are actually different to what the position screen shows, those constants are thus added to compute the real J2,J3 angles. I just been assuming because of course nothing of these is documented. The DH values actually matched the robot dimensions shown in the catalogs and I always wondered if they are manufactured that precisely. What are you going to use to adjust the values? Are you measuring the arm with a laser tracker of another instrument?

  • I am calculating new DH parameters using a machine tool probe and a reference cube. There was a paper that described this process called "Non-kinematic calibration of a six-axis serial robot using planar constraints" by Ahmed Joubair and Ilian A. Bonev in 2015. Their method doesn't calculate the correct DH values, it actually calculates an optimal set of DH values. I simulated their process and was able to successfully improve position accuracy during the simulation. This works well for me because I need better accuracy of the tool position, but only use a very small envelope of the robot's working volume.


    You are right about the displayed joint values not working directly in the forward kinematic model. If you take the joint angles off of the controller, you need to update J3=J2+J3 and J2 = -J2. Then, if you run through the standard forward kinematic model, you will calculate the pose that the controller specifies.

  • I talked about that with one of my colleagues some time ago. He's been working for Fanuc for a few years and told me, that Fanuc used these variables OP posted to calibrate robots for "extreme absolute accuracy" if they were ordered as such. But the idea was given up (or changed) and these variables do nothing...


    Not sure if 100% true (never tested it).

Advertising from our partners