# Forward Kinematics/D-H parameters for perpendicular joint axes

I am trying to compute forward kinematics of the Kuka youBot using DH convention:

http://www.youbot-store.com/youbot-developers/software/simulation/kuka-youbot-kinematics-dynamics-and-3d-model

The arm joint 1 and arm joint 5 are revolute and rotate about the world z-axis (pointing to the sky)

But the other 3 joints are all revolute and rotate about x-axis, let's say (points horizontally)

DH convention says the "joint distance" is along the "common normal". But unless I am mistaken, the only common normal is the y-axis, and that is also horizontal, meaning there is no joint distance.

I was thinking I would use link offset for joint1 - joint2, but then I ran into a problem with joint4 - joint5. Link offset is supposed to be along the previous z-axis, and in that case it would point horizontally out to nowhere. But link distance STILL doesn't work either, because that is the common normal distance, and as established the common normal is x-axis, also horizontal. So now I feel very screwed. I am sure there is a simple solution but I can't see it.

So I guess the question is, how do I use the DH convention for the links between 1-2 and 4-5, when the joint rotational axes are perpendicular?

• Don't use DH convention. Learn to use screw coordinate convention from MLS94. It is possible to simplify computation using dual vectors/dual quaternion. – Troy Woo Jan 20 '15 at 15:09

The Denavit-Hartenberg parameters $(r,\alpha,d,\theta)$ (according to here) actually depicts rigid displacement of a directed point-line (i.e. a line with a particular point selected on it, where the origin of the local frame is located) in space, bearing in mind that coordinate frames are set up in such a way that $r,\alpha$ is about x-axis and $d,\theta$ is about the z-axis. In other words, consider the problem of moving the ith joint axis to coincide with the (i+1)th joint axis.

The problem of D-H convention lies in the choice of this particular point on the axis line. When the two adjacent axes are no in parallel, the points on each are chosen as the foot of their common perpendicular. However, when two adjacent axes are in parallel, there is no unique way of picking the particular point on the axis line. Sometimes, it is referred to as parametric discontinuity in the sense the mapping $(r,\alpha,d,\theta)\mapsto\text{line location}$ is no longer one to one, and you may choose parameter $d$ arbitrarily. Besides, it is also cumbersome to deal with prismatic joint. It is true, as the other answer said, there are different conventions of D-H parameters, which added to the difficulties.

I think this is why you should use screw or twist coordinate in the first place. There are 6 numbers in the twist coordinate, obeying 2 constraints. But they are extremely easy to work with both mentally and computationally (probably with the help of dual vector representation). A good source for this much better convention can be found in the book A Mathematical Introduction to Robotic Manipulation (free online). Just go through ch2 and ch3 and you will realize how easy it is work with than the D-H convention, and most importantly it is free of all the problems and limitations of D-H convention.

I would take the chance to advocate embracing the twist coordinate convention. It is much easier to work with, geometrically more intuitive, analytically error-proof and computationally efficient (note that it is easy to bring the whole thing into a geometric algebra framework which the CG community finds much pleasure with).

• I do agree with you screw or twist coordinate is a better choice, this paper presents the kinematics model of an RA- 02 (a 4 DOF) robotic arm. The direct kinematic problem is addressed using both the Denavit-Hartenberg (DH) convention and the product of exponential formula, which is based on the screw theory. you my check it out. – AlFagera Oct 15 '16 at 5:44

This YouTube video by TekkotsuRobotics does a great job at explaining how to specify DH parameters, including what to do when you have parallel axes of rotation. Also note that different textbooks have slightly different notations regarding which joint and link the parameters apply to. So you should stick with the convention of your professor, school, textbook, etc. This paper: "Lipkin 2005: A Note on Denavit-Hartenberg Notation in Robotics" explains the 3 main DH parameter conventions and how they differ.

You can find a lot of material on the DH convention. If you are only interested in the youBot, then check thes out:

http://www.kuka-robotics.com/NR/rdonlyres/5E66A5D6-F30F-46BE-B9CF-6820C55FCE91/0/Armtutorial2.pdf

Sorry if this is the same what you alredy have, but the link you specified is broken...