I am studying the Denavit Hartenberg and to practice I am using the following manipulator:

enter image description here

I have been able to assign some of the frames almost correctly, but i did some mistakes I cannot understand. First of all, the correct solution for this manipulator is:

enter image description here

now, in my attemps, I did some mistakes, which are the following.

In the first place, I did not use the frame zero as the frame of the prismatic joint, which is the first joint, bit I decided to define a frame 1 for it, but this is wrong apparently, but why? , to me it seemed natural to define this additional frame.

Another mistake I have done is to not let coincede frame 1 with frame 2, but also in this case I defined an additional frame, which is wrong.

So, I have a problem understanding how to say when I can define two frames in the same point and when not.

How do I understand when to to this?

So, to be as clear as possible, my question is:

How do I assign the origin of the frames in the Denavit Hartenberg convention and how do I know if two frames have the same origin?


There is not one correct DH Frame assignment, but there are many. Even if you do not get the same results, you might still have a correct frame assignment.

The first, base frame at the root of the robot, sometimes called robroot frame is the reference frame, relative to this are the TCP coordinates defined, this is why it is needed. A this is a frame relative to which the TCP coordinates are defined, in many cases it is application dependent, not necessarily DH dependent. If the application does not specify it, then you are free to define it as you prefer. In this case the best practice is at the base of the robot, with z pointing up, against gravity.

Adding a frame with no joint variable is generally not practiced in DH. An additional atomic transformation, included in an additional frame, can be also added as an offset to the joint variable and the effect would be the same. E.g. a pure transformation matrix on the z axis is the same as adding a z offset to the next DH frame. Generally an absolute minimum amount of matrices and as many 0 valued DH parameters as possible should be preferred.

Generally, when you can express two frames with the same origin it is preferred. If you can do this or not depends on the joint configuration. If the joints are collinear you probably can express them using the same origin.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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