enter image description here

There is a rotating base joint #1 with z/joint axis pointing up and atop sits and arm with 3 z/joint axis facing away from the viewer.

The elbow joint F2 has a kink before it of 90 degrees measuring 25.4mm

The upper arm length between joint F1 and F2 is not as the diagram says 163.2 but actually 137.8

My question is am I using twist offset and length parameters correctly? Because I can't seem to orient the input parameters to reflect the arms various extensions.

I calculate using simple addition that the maximum length upward should be about 500 upward, or horizontally the reach is about 400 and the height is less the 100

This question is a request am I plugging the numbers in correctly?

If I model the green section as a angled joint that protrudes at 10.4 degrees from the base at a length of 140.1mm that helps

DH Params


1 Answer 1


Started this as a comment, but moved it here to an answer because (1) it's much longer than a typical comment and (2) hopefully it's got some helpful hints in here to get you started.

Welcome to Robotics, Ddefin Orsstt. I think it would be helpful if you could label your frames and explain why you're choosing the particular values on your table. Typically I've seen z- or y-axes as the "up" axis, but you're stating that the maximum length should be X 503.12, Y 0, Z close to 0. The only way I get 503.12 is if the arm is straight up, which again I would expect to be y- or z-value readings.

The maximum z-value (if z is up) I could calculate would be the F0 to F1 offset (J1) of 101.32 mm, plus the "crook" just before the joint 3 at F3 of 25.4; this give (101.32 + 25.4) = 126.72. My issue with looking at it from this point of view is that then the maximum x/horizontal reach is not the 503.12 anymore, but the "upper arm" length of 137.8, the "forearm" length 163.2, and the end effector length 100.8, or (137.8 + 163.2 + 100.8) = 401.8.

It's also not clear to me what you're using in a particular transform; you should consider including the joint angles in your DH parameter table. I would expect a zero-length transform between an F0 frame ("world origin") and F1, where the output of joint 1 is located, if joint 1's output is coincident with your world origin.

Right now, it's looking like you've got 6 joints, by your DH table, but I'm only counting 4 (or 5?) in your picture:

  1. Joint 1, at the bottom,
  2. Joint 2, 101.32 up from Joint 1,
  3. Joint 3, 137.8 (shown as 163.2) up AND 25.4 over from Joint 2,
  4. Joint 4, 163.2 over from Joint 3.

After joint 4, you have two dimensions: 50.8, to something (can't tell if it's a joint or not), and 100.8, to the tip of the end effector.

The DH parameters should define one actuator relative to the previous actuator in the arm/chain. You've got joint 3 split out as two actuators in your DH table, which is incorrect, and it looks like maybe you've got something at the end of your DH table to (I'm guessing) correct the orientation of the end effector?

Start with a simple drawing of your arm. Put an "F0" where the base of this would be screwed to a table, then start putting new frames (F1, F2, ..., etc.) at the output of each actuator. Put a frame at the end effector in whatever orientation you want to use for that end effector.

This should be your starting point for making your DH parameters. Try making this drawing and, if you're still having trouble, please edit your question to post that drawing here.


This is the video I always refer people to when asking about DH Parameters. Going through the video and referring to your diagram, if the joints at F1, F2, and F3 are all oriented in the same direction, then your $d$ vector, the vector of distances along the previous joint's z-axis, is:

$$ d = \left[\begin{matrix} 101.32 \\ 0 \\ 0 \\ 0 \\ \end{matrix}\right] $$

... but, as you continue to follow along with the video, you can see that the rest of the parameters depend on your frame definitions, especially the base. This is where it becomes really important to have a drawing that shows what your robot arm looks like when all the joints are set to zero.

Generally speaking, though, it looks like all your numbers are probably correct, but you're not using the "standard" terms of $d, a, \alpha, \theta$, so I think it's possible that, especially if you're getting wrong numbers, you could be entering your values into the incorrect vectors in a DH solver (i.e., swapping $d$ and $a$ and/or swapping $\alpha$ and $\theta$). Also, your polarities could be wrong. I personally try to define everything as right-handed. Right-handed rotations can be visualized by putting the thumb of your right hand along the z-axis of a joint; the fingers of your right hand then naturally curl in the direction of positive rotation.

You're still asking if you've plugged the numbers in correctly, but I don't know what you're plugging them into and there's no update on what your software/algorithm is expecting or outputting.

  • $\begingroup$ Thanks @Chuck♦, I have made the changes to the question removing the wrong bits and I appear to have made progress. I'd appreciate your take on it $\endgroup$ Apr 2, 2020 at 20:03
  • $\begingroup$ @DdefinOrsstt - Sorry for not replying earlier; yesterday was my wife's birthday! Added content to the answer, hope it helps! $\endgroup$
    – Chuck
    Apr 3, 2020 at 12:56
  • $\begingroup$ ♦ The figures are apparently correct so far. I am trying inverse kinematics on this robot now and haven't found a readily digestible resource for this yet so please point me onto something if you know one. Thank you and 🎉 $\endgroup$ Apr 3, 2020 at 19:56
  • $\begingroup$ @DdefinOrsstt - Did you watch the video I linked? It's short and really great; it's the best video I've seen on DH parameters. $\endgroup$
    – Chuck
    Apr 3, 2020 at 20:14
  • $\begingroup$ ♦ I watched the video - it may be the best but I don't find it great for me. I'm still curious how you would set up the DH parameters table, possibly differently than I've done, with better output! $\endgroup$ Apr 10, 2020 at 20:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.