**Instructor (Oussama Khatib)**:All right. Let’s get started. So today video segment is about a small device called the Hummingbird. The Hummingbird was developed at IBM Watson Research Center, and it was published in the proceeds of ICRA 1992.
Female Speaker:

The Hummingbird mini-positioner is a compact device designed for the ultra high speed positioning of low mass payloads. Developed for a contact and non-contact probing of planar objects, it can probe at over 50 cycles per second with accelerations exceeding 50 Gs The five bar linkage of the mini-positioner covers a 13 millimeter square workspace. To reach larger positions, the entire mini-positioner can be moved. The two main links are driven by high performance moving coil actuators, and the link positions are sensed by low mass optical encoders. Preloaded bearing pairs at the joint provide high stiffness and zero backlash for accurate XY positioning, and a miniature linear servomotor provides 1 mm of Z axis travel. The Hummingbird system can generate peak accelerations of 50 to 100 Gs in all three axes. To avoid shaking the structure holding the mini-positioner, the mechanism is designed to be reactionless during XY motion. The dynamically balanced linkage assembly generates no net XY reaction forces during motion because the net center of gravity of the moving parts remains fixed for all linkage orientations. The net Z-axis reaction torque generated by the two link actuators is actively cancelled by a third rotary actuator, which oscillates only very slightly because of its high rotary inertia. One of many applications for high speed probing is the electrical testing of high-density circuit boards. When driven by a custom multi-transputer servo controller, the Hummingbird can provide such testing at unprecedented rates. At 40 tests per second as shown here, the camera and the human eye are unable to follow the probe motion. The use of a strobe light, however, reveals the three large XY moves and the small Z moves in this repetitive pattern. Here a pattern of smaller moves on a 225-micron grid is being demonstrated at only 10 tests per second. Two quadrants of the grid are probed systematically, while the other quadrants are probed only partially but more randomly. Here that same pattern is being probed at 20 tests per second, and finally, the complete 372 move pattern is performed at a full 50 tests per second. Details of the motion are shown in the high-speed video being replayed 33 times slower than real time. Each probing cycle contains one XY and two Z moves, and takes only 20 milliseconds to complete, yielding a total of 120 distinct moves per second. At this speed, the XY probe placement accuracy is approximately 5 microns. To provide a more familiar size reference, the probe is shown here above some ordinary table salt. The Hummingbird was programmed to contact [inaudible] three selected grains at 49 different locations at a rate of 50 probes per second. The inset shows one of the salt grains after probing and the characters formed by the tip. The letters are about 140 microns tall with a typical [inaudible] spacing of 20 microns.

**Instructor (Oussama Khatib)**:Unbelievable.
Female Speaker:

The Hummingbird mini-positioner resulted from the interdisciplinary team effort of these and many other contributors.

**Instructor (Oussama Khatib)**:So unbelievable, eh?
Well, obviously, when you want to move very fast, you have to make everything very light in order to achieve that. If you have moving structure, it’s going to be impossible to do it. And now integrating all that structure where you can get all the stiffness, avoid vibrations, is not a simple problem.
Okay, well today’s lecture really now is going to take what we have learned about the frame assignment, the descriptions, and take these to a manipulator. What we’re going to do is we’re going to take this manipulator and start by looking at a link, and try to see how we define this link.
And from that description, we’re going to introduce these promised description I mentioned earlier, the DH parameters or the Denavit-Hartenberg notation that will allow us to describe the link and its connections to the next or previous link. This is going to allow us to then precisely define the frames that are going to move with the links, but that will also allow us to connect the base through the structure to the end-effector.
So that will give us the forward kinematics. The forward kinematics is the relationship between the lost frame and the base frame. You remember we talked about these end-effector placed at some location in space connected through those links to the base. So if we have a frame here, if we have a frame at the end-effector, these two rigid objects, in between you have all these links and all of them are moving.
The question is how are we going to define those frames. How are we going to attach frames to the different planes? Obviously, you can go to each of the links and say I’m going to go to the center of mass of the link and put a frame, and you will still have freedom in assigning that frame, but that would be fine. Then you will have to find the relationship between frame on the base, link one with your selected frame, and the next frame, and the next frame.
So if you think about it, let’s say I’m going to put frames at the center of mass. This is just one example. What is going to happen in terms of the relationship between two successive frames? How many parameters are we going to need to describe these two frames? Any idea?
Well, you have the frame, another frame. You have a homogeneous transformation. How many parameters? Six.
All right, now this link we know it moves just with one degree of freedom, and there are restrictions, right? So if we just go and place frames arbitrarily at the center of mass at any other point, we’re not going to take really advantage of the fact that there is some set of constraints associated with this mechanism.
So the purpose of what we’re going to do is really to take advantage of both constraints, and come up with a minimal description that allows us to somehow emphasize this variable, this joint variable that is rotating, and have it explicitly in the description.
So what we’re going to do, we will start with the link description, and then we take a look at the link connection, and form there we identify those parameters, and we will identify the variables are fixed. The length of the link is fixed. The relationship between axes – so if we think about axis I and axis I minus one, there is some fixed relationships between those.
As we move these axes, there are some parameters that are constant. What kind of parameters are constant there? What do you see as constant between these two axes?

**Student:**The distance?

**Instructor (Oussama Khatib)**:Distance? Basically, these axes are maintaining a distance, right? And in general, these axes are not parallel, so there is a tilt between them, and that tilt is going to be maintained. And there are some offsets that will be introduced. There is an angle that is taking place that we cannot see it with just the axis. We need to assign the frame, and we will start to see that relationship.
So the link description, I’m going to take two axes, and arbitrary axes so that we will not just take the parallel axis case. So axis I minus one and axis I are connected somehow through this link. So if we take a link, at the extremities of the link we have the joint axes.
So what are the things that are constant? So you said distance? How is that going to define the distance between two axes? Come on. Faster.

**Student:**Perpendicular.

**Instructor (Oussama Khatib)**:So perpendicular. Perpendicular to a plane, perpendicular to an axis, but we have two axes, so it is a common perpendicular, right? Something that is perpendicular to both that would measure that distance.

So if we take this common perpendicular to both axes, then we have a sort of – this is going to be unique, right? Except if the axes are parallel. Then you have infinite way of placing that common perpendicular. Okay, you agree with that selection? Does it make sense? We take the common perpendicular, and that will give us this distance. So we call it A – so now you have to pay attention to the notation because we’re going to describe link I minus one with the parameter A I minus one, which is the common perpendicular to those two axes. So I minus one is the common perpendicular between axes I minus one and I. All right. What else do we need to introduce? So if I slide axis I along this common perpendicular, and I come to the intersection, there will be an angle, a twist angle. This angle, you see it? We slide it up to the intersection, and there will be an angle. We call it the link twist, and it is the parameter alpha I minus one, which measures this angle. And what we will do is we measure the angle along the vector A I minus one in the right hand sense. And you’re going to learn how to use your – everyone knows how to measure the angle in the right hand sense? Just make sure you use your right hand. It happens. Okay. So we have two parameters. In fact, we’re going to see that in total we need four parameters. One of them is variable, the joint angle or the joint displacement if it’s a prismatic joint. And now we identify two. Alpha and A are constant all the time, so once you design your robot, these alphas, Alpha 0, Alpha 1, are going to be constant. The same for A. Now if we look at most mechanisms, we’re going to see that the axes are not always apart. Most of the time they are parallel, and sometimes they are intersecting. So if we take the PUMA, we have this first joint axis, and then you have the second one, and they are intersecting here. If you take the wrist, you have three intersecting axes. So when we have intersecting axes, the question is what is the common normal. So you have these axes intersecting here. What is the common normal? So we take the plane formed by I minus one and I, and take a perpendicular to that plane, and that will be a vector perpendicular to both axes. Which direction? So we have this angle, but how do we define it? Because I can take a vector in the plane or out of the plane, and that changes the direction of the angle. So we have sort of a free variable to decide in which direction we’re going to select alpha. Typically what we do is you have the base, and you’re moving toward the end-effector, so you are putting this A – the vector A, you are pointing the A towards the end-effector, so it is very intuitive to create those vectors. And once you have A defined, then you will be able to say well A is in that direction, and now I take the angle on the right hand side, or if it is in this direction, you will take it in the other direction. Okay? That’s for alpha. Now what we’re going to do next is to connect those links. So we defined the link through these two axes, the distance between them, the common normal, and the twist. But if we move further, we’re going to have another link. Now that other link will have another common normal, right? And this common normal will be between axis I and axis I plus one. So that common normal will intersect with axis I, right? It will intersect at some location with axis I. So we know this point where we have this intersection. Now what we need to do is to introduce this to other parameters that define those connections, and obviously this is perpendicular to the axis I, so I don’t know if you see this vector. How can you define this vector with respect to this line A? I used this color. Can you see it? You see this? This vector? Do you see it? And you see this vector? What are the variables that we introduce to define it?

**Student:**I assume the angle between the two.

**Instructor (Oussama Khatib)**:Yeah. There is an angle between the two. That’s correct. And this angle can be found if we slide this vector through the plane. We will find it. This is going to be – so when the link, that following link is rotating, we will see this axis rotating with it and that angle increases and decreases.

And there is one more parameter, which is the distance, this offset.

So what we will do is we will project this vector on that intersection point, and then we can measure the distance DI. And now you can see the angle. So DI is defined by as the link offset, and this D I is going to be constant for revolute joints. But for prismatic joints, it’s really the direction along which the joint is going to affect the motion of the following link. So DI will be viable if the joint is prismatic. So for a revolute joint, theta is the variable. So if like in this figure this is a revolute joint as in here, this theta will be the variable. So theta I is called the joint angle, and it’s variable for resolute joints. Basically, now we have everything that we need for each of the links. And if we identify alpha, A, D, and theta, we will be able to go from one frame to the next as we attach frames here, frames there, and propagate. So here is a short movie segment if we could put the light a little bit up, please? Lower the light. So we have this manipulator, and it was designed to show you different properties about different angles, and you’ll see the end-effector moving, carrying an object. So we see axes of Joint 2, Joint 3, 4, 5, 6. So you have all these axes of rotation, and now the last joint. So let’s go and go back to the beginning so we have one axis here. We have another axis there. And you see this distance, this common normal? Do you see it? This is the common normal. So as we move this is fixed, but basically – and this is the angle between the axes. So what we’re going to do is along this first axis, we’re going to attach a frame. We will see that in more detail. And along the X direction, along the common normal, we put the X-axis. So now here is a case of common normal between two parallel axes. There are many possibilities, but we are not going to make the commitment of the assignment until we place the next joint. You see, there is this point, and we don’t want to introduce this route, so we will move the common normal there. So these are the rules that we will see in our frame assignment. Now that we decided this, that will decide the rest, and little by little we build that structure that would allow us to do the frame assignment. So now we are assigning the frames, and the frames are assigned along the Z-axis, most of the time at the intersection between axes or along the common normals. So this is the frame assigned here for this joint, and when we rotate the next joint, you have this angle, so you have another frame. When you rotate about this – so all these frames are assigned with the same origin. This is the three intersecting axes. You see that? Now there is always an additional frame that goes for the object, and often we assign it depending on the task or the need. So you end up with a structure like this, basically these frames, and each of them is rotating just with one variable. And from there you can go and then build your connection from the base to the end-effector, and as your end-effector is moving, it’s covering the space. So in the – just coming here, you can start to see the workspace of the robot. This is what we call the workspace of the robot, the space where the end-effector can be positioned, given the joint limits, given the structure of the robot. There are areas inside of this that will not be reachable because there are joint limits on the different joints, and you cannot be able to access all these points. So the workspace is the volume of this space where we can position the end-effector, and we will discuss this later more precisely about the definitions of the workspace, but this is basically what is going to happen in terms of how you defined the workspace, where are these configurations that are not reachable because of the joint limits, and because of the different length you have on your structure. So this is an example of the workspace that we need to study in order to position the base of the robot so that the end-effector of the robot can reach in different areas. Okay. Let’s go back to the links. So now that we discussed those intermediate links and their connections, we need to be a little bit concerned about how we define the beginning of the structure that is the frame attached to the base, and how we deal also with the last links. There is a lot of freedom there. This freedom comes from the fact that those frames can be assigned and moved as long as you are able to find a frame that is fixed with respect to that rigid body. So we saw that for axis I, axis I plus one, we are taking the common normals, we are taking those twist angles. And if we think about it, this AI and alpha I are depending on I and I plus one. So when we say AI, the definition of AI and alpha I is going to depend on axis I and axis I plus one, which means that from one to N, having those axes will determine A1 to AN minus one and Alpha 1 to alpha N minus one. Then now we have to somehow decide about what is A0 and AN, what Alpha 0 and alpha N, and that comes from the way we define the frame attached to the last link and the first link. So there are many different conventions, and those conventions can vary following your task and requirement, but essentially what we try to do is to carry in the forward kinematics the maximum number of zero parameters because when you put an alpha angle of 30 or 40 or whatever, you need to compute the cosine and sine, and that introduces more constants. So what you need to do is try to select your frame in a way that makes A0 – AN equal to zero. That will simplify the forward kinematics, alpha 0 and alpha N to be equal to zero. And we can do it here. So this is Axis 1, and we have Axis 2, and 3, etc. So for Axis 0, Axis 0 is essentially connected to the base. It sticks with respect to the base, but it has the freedom of being defined, so what you can do is you actually can move this axis and make it parallel to Axis 1, and you can even make it coincident with Axis 1. And now you can by putting them along the same axis, you are setting A0 and Alpha 0 to zero. So that simplifies the numbers you are carrying in your forward kinematics. Obviously, you might need a different frame, but that different frame can be computed with respect to this frame that you are introducing by a constant transformation, and you can do that separately. You don’t have to carry it in the forward kinematics. So for the end-effector, the problem of the end-effector is that your end-effector is doing many different things. You are carrying a tool, and now you need to compute the forward kinematics to this point. Your tool can change. You are carrying just this, and your task is to control this point. Or you are carrying a glass and your description is really related to this object. So ultimately, you will need an imposed frame by the task itself, but in the forward kinematics, the frame N can be simply – most of the time, can be obtained simply by going to the intersection point associated with the wrist. And there you get the simplest form of that description. Well, this is not all the time the case. Sometimes, we give you specify well I need this frame, and I want you to find that transformation to that frame, so you can do it that way. But in general, this frame that is associated with the tool, with origin ON plus one that is frame N plus one can be arbitrarily placed with respect that last rigid body, and it depends on the tool you’re carrying, or the object you’re handling. So for the last link that is for frame N and axis N, what we’re going to do is we’re going to remove this frame in the same way and make it coincident with axis N, which means that we will have AN and alpha N equal to zero. And that simplifies again the forward kinematics. So this the summary that we are really moving all these frames, and we are putting the frames for alpha and A, the first one and the last one to zero. We still have to decide also about the theta and the D because theta I and DI depend on I minus one and I, and that means essentially that now we define theta to theta N minus one, and D2 to DN minus one. So we have Theta 1, D1, theta N, and DN, and those will be fixed once we decide those other axes. So the convention again is you remember theta I and DI, one of the two is constant. Theta I could be the variable. The angle theta I, theta angle would be the variable if it is a revolute joint. So in that case, DI is constant – DN, basically. So what you want to do is to set the constant parameter theta I or DI to be zero. The variable ahs to be variable. So that means if the variable is D1, then we make Theta 1 equal to zero, and if theta is the variable, we make D1 equal to zero. So here is an example for the first link. What we will do is we selected the axis, we reduced those parameters alpha and A, but now what we will do, we will move the point that will become the origin of the frame. We will move it to the same point of the intersection, reducing this D1 so there is no more D1 and D1 becomes zero. So this is by moving the axis, or actually orienting that axis so to make Theta 1 equal to zero. For the last link, we are going to do the same thing. We are going to reduce alpha and A, and make the selection of the point of that axis to reduce either DN or theta N by selecting the direction of that last frame because the last frame associated with that virtual axis N plus one is not yet defined, so when you define it, you define that axis. So the result is DN or theta N becomes equal to zero. So with this convention and those four parameters, now we can essentially – basically, we defined the DH parameters because the Denavit-Hartenberg parameters are in fact those four parameters that we just saw. That is alpha I, AI, DI, and theta I. You have four parameters defining each of the links, and each of – three of those parameters are going to be constant. One of them is variable. So in the case of prismatic joints, theta I will be the variable. In the case of revolute joints, DI will be the variable. The first parameter D1 will be set to – if we have a revolute joint, D1 will be set to what? Zero. If it is a prismatic joint, Theta 1 will be set to zero. It’s the same thing for DN by the type of the joint. So as I said, three fixed link parameters, and joint variable. And this variable is either theta I or DI – theta I for the revolute case, and DI for the prismatic case. So as we said, the first two of those parameters, alpha and A, are describing the link because we have the link and we have the two axes, and the distance AI, alpha I, describe that link. What about the D and theta? What do they do?

**Student:**Describe the joint?

**Instructor (Oussama Khatib)**:Basically, describe how a link is connected to the next one. So you have one link, and D will give you this translation between them. If this is a prismatic joint, you have one link, you have the other link, and you are describing the translation through D. If it is a revolute link, it is going to be this angle. So DI and theta I describe the link’s connection that as we go from one link to the next, and how we connect them. It is really through this DI or theta I. One of them is variable.
Okay. Now you know the DH parameters? Good. So actually our task and probably the homework will involve computing finding these DH parameters. So you take a link, and you go and find alpha I, AI, DI, theta I, and you go through all the links, and once you have them, basically you need to use them to compute your transformation. So we need somehow to use those parameters in our definition of the frames that we are going to attach so that when we go from one frame to the next, we are able to describe the relationship using those parameters.
So the frame attachment is a very – it will become for you very simple once you did a few examples, but it’s very important because the way you attach your frames, you will simplify or make it more complex, and we are going to very carefully look at this problem and make sure that as we attach the frame, we are going to use these parameters in the homogeneous transformation describing the relationship between two successive frames. And then we will be able to have that transformation, and then we propagate transformations, and we can compute the end-effector with respect to the base frame by multiplying out all these homogeneous transformations.
So how do we proceed with the frame attachment? Any help? What should we do? Where should we start? Okay. Take a look. Frames – what is a frame? What is the most critical thing about the frame? Origin. Someone said origin.
So we really need to decide a rule about how we select the origin of those frames. And we also need to decide something about the axes. A frame is the origin and the axes, so you have X, Y, and Z. And have to make some decision also about the axes, so any good ideas? What selection you would do for your X-axis, or Y-axis, or Z-axis? What convention you’re going to – you need to do something systematic.
So if you noticed what we did, we selected I minus one and I, and we said these are the axes, and we are looking at the distance between them, and the offset between them. So these axes have a very important role. You want your frame to be aligned with those axes. So you want these joint axes to be the axes that define one of the vectors, basically – X, Y or Z. So let’s quickly pick one. X, Y, or Z, which one?
Okay, now all together? Z, yes. So what we will do is – it’s really simple. You have built your mechanism. You’ve designed it. Now you have joint axes. Just along this axis, I’m going to pick the Z-axis, all right? So we already made a big decision that if we pick the Z-axis now, the rest – once you pick the Z-axis, and if you pick the X-axis, their intersection is the origin, or you think about where the origin has to be, then you have a little bit of freedom, but basically you almost don’t.
So the Z-axis is very interesting along the joint angle. Why? Because later, when you are going to rotate for instance about a joint, immediately you measure the angle theta about that axis, and that is your joint angle, and that’s going to be very simple. And if the axes are well selected, you’ll end up with just one transformation.
So we are going to take the origins as you suggested, and this origin has to again make use of the information we just displayed with those parameters. What is unique about those parameters? Well, we said we are using the common normal. This point of intersection with the common normal is very important.
So now we’re going to take the origin of our frames at the intersection with the common normal. This is the frame that will be assigned along I minus one, and this intersection point is very important.
Where is the next important point? I know you cannot point because you don’t have any pointer, but just try to describe it to me. Yeah?

**Student:**Somewhere along the X-axis?

**Instructor (Oussama Khatib)**:Oh, no, no. I said this is the first origin of this frame. Now there is another frame toward the next joint. Where the origin is going to be?

**Student:**[Inaudible] about that where [inaudible].

**Instructor (Oussama Khatib)**:Here? At the intersection of the common normal with this point. Right on it. Okay, if you understand this, yeah. But it’s very important. Sometimes if you selected down there, you run into a lot of other problems. You’re not using the DI parameter properly, and everything becomes – so okay.
We take the intersection of the common normal with each of the axes and pick that point as the origin. Simple? You’ll remember that? Okay.
Then we take the Z-axis to be along the joint axis. That’s also simple. So ZI minus one will be defined along axis I minus one. And the other one obviously is here. Okay? Good.
So what is left to define the frame? X-axis. So what do we do with that X-axis? So we know the origin, and we’re going to say the X-axis has to be somehow orthogonal to Z. And you are proposing to take this orthogonal to be along A minus one because this axis A minus one is orthogonal to Z – I minus one because it is the axis orthogonal to the joint anyway.
So we take, and we take it in this direction. I think our problem is solved now because we assigned – we picked the origin. We picked the Z. We picked the X. The Y is defined in the right hand rule, so in this case, where is Y? Y minus one? It is inside the plane. Okay? X, Y, Z. Right? You know this rule? Like this?
You have to use your hand. Otherwise, if you end up with the opposite frame, all your transformation is going to be wrong. Okay. Good. And XI is along there.
Now we need to verify that we can go from ZI minus one to ZI using these four parameters. Do you think this is possible? So we have two frames. We assign two frames, and we should be able to describe this frame with respect to this. That is the homogeneous transformation uniquely using these parameters. And we will do it just shortly, but there is no problem. We should be able to do it.
Okay. This simple illustration of the frame assignment is much more complicated because there are all these special cases where you have intersecting axes, you have parallel axes, and you have that last frame that is still not defined, so you have to see where to define it, and you have freedom that is added, and you have to make your selection. And that’s why the convention of always reducing, getting zero parameters – so when you’re doing the assignment, you’re going to run into a lot of special cases. Hopefully, we will span them in your homework, midterm, and finals, so you’ll be mastering that problem.
So always remember this right hand rule. It’s very important, and try to practice with it if you’re not familiar with it.
So the summary for the frame attachment is the following. We pick the normals. Okay? You have the axes. You pick the normals. Take the intersection, and pick the origins. Along the origins, you place your axes. And then you defined the X-axis along the common normals. And that’s it.
So you have these four steps: finding the normals, the common normals, finding the origin of their intersection, taking the Z-axis along the joint axis from the point of the origins you selected, and then placing the X-axis. Okay. Now here is the X-axis which are placed from the intersection point toward the next link.
So let’s see the case of intersecting joint axes, which happens very often in the beginning and the end of the mechanism. In the beginning, usually Joint 1 and 2 are intersecting, and Joint 4, 5, and 6 are intersecting.
I mean in six degree of freedom manipulators because we use wrists with the three intersecting joints. The mechanics of that is well understood and it’s quite easy to build. And also, there are a lot of advantages in terms of the workspace and the freedom, except they have problems with respect to singularities, as we will see later when we study the jacobian that essentially we’re going to run into this case.
So we know this point, and what we said is that we picked the intersection – we picked the origin. And now this is the origin for frame I, and we place the Z-axis, that the question is where do you select your X direction, and that defines your – so if you place your XI in this direction, your twist angle will be measured about that. So it will be in this sense in this direction, and if you place it in the opposite direction – so this is one direction. If you place it there, you get a different definition of your alpha I.
And that is fine because whatever you do, you have this freedom. Once you’ve placed XI, you’ve defined your alpha, and you are going to carry that transformation through the propagation, and this will be captured in your homogeneous transformation, and because you are going to find the next transformation between XI to the next one, everything will work out.
So that freedom will be accounted for. You can come up with a description that uses the minus sign or the plus sign, and that will work out with the next joint. The next joint will account for it, and everything will work out.
You had a question? Okay.
So this direction and the sign of alpha depends on your picking of X.
So here is an example of the first link. I’m taking a revolute link. What we would like to do for a revolute link – if the first joint is revolute like in the case of the PUMA, what you would like to do is to almost say that the fixed frame and the moving frame are identical when theta is equal to zero. So you are really setting A alpha to be zero, and D1 equal to zero for the revolute joint, and the only variable is theta, and the zero of theta is when the two frames are identical.
And that gives you the simplest form. So as you rotate about this joint, you are measuring theta from zero to the value of theta. Okay?
For a prismatic joint, what you are saying is I’m going to take the two frames to be identical. This is imposed. This is your selection of the base frame, and you are placing the frame so that when these two are identical, D1, the prismatic joint – so you have a translation up and down measured by this variable, and when D1 is equal to zero, you have the two frames coincident. So the Frame 0 and the Frame 1 are identical when the D1 is equal to zero, your variable is equal to zero. All right?
For the last link, if we have a revolute link, we are going to select the frame that DN equal to zero, which depends on the following frame. That is we are saying DN equal to zero, and that frame just measures the angle theta N. And when theta N equals to zero, basically we have XN, and N minus one and XN align. Theta measures this angle between the X-axes basically, as you rotate.
And for the prismatic joint, we do the same thing to set theta N to zero. That is we have when DN equal to zero, XN comes down to be aligned with XN minus one.
So these are the conventions that you are going to try to enforce in your frame assignment. And using these, you will end up with the simplest form of the forward kinematics, but then as I said again, the tool frame that you will add – you will add one more frame that will account for your task. And what is nice is once you have all this relation between the base frame and N frame, all the other transformations are constant. That is the next transformation will only involve constant parameters, so it is a very simple transformation.
Okay. Let’s see the total summary now. So what we said is we need to introduce for each joint – we need to introduce these four parameters, AI, alpha I, theta I, and DI.
And what AI is doing, AI is measuring the distance between a frame’s ZI – I’m sorry, between axis ZI and axis ZI plus one along the XI axis.
Alpha I measures the angle between axis ZI and ZI plus one about the XI axis in the right hand sense.
DI measures the distance between the X-axis, XI minus one, and XI along the ZI axis.
And theta I measures the angle between the X-axis about ZI.
Now this summary is very useful. Make a copy of this and keep it next to you. You’re going to be confused about the Is you are using and about the definition of these. Make sure that you have copy of those definitions not far away, and you will see that this is very useful.
So in these definitions, we have two distances and two angles. A and D are distances. A measure distances between the Z-axes. D measure distances between the X-axes along the opposite axes. Okay?
Alpha and theta measure angles between the Z-axes and the X-axes about the other axes.
Now what is important is to notice the fact that we’re looking at ZI, I plus one, and here we’re looking at XI minus one, XI for the DI. So be careful with which I we’re talking about.
You’re confused enough to make a copy of it, right? Yeah. Keep a copy. I think it is really useful.
All right. So let’s take an example, a very simple example. I’m going to take a planar robot, and this planar robot is just a set of three revolute joints. So we are talking about Theta 1, Theta 2, and Theta 3. So where are the joint axes?
Someone made a sign I think I understood, but everyone – do you see the joint axes? So the joint axes are coming perpendicular to the plane. Okay.
So how do we pick the origins? In order to pick the origins – so you see three parallel axes. So how do we pick the origins? What do you need to do? You need the common normals, right? So you have between parallel axes many possible common normals, but because this in the plane, we are going to use the common normals in that plane, which is the plane of this screen. So where are the common normals from this axis to the next one to the next one? Do you see it?
Basically, this is the first common normal, the second common normal, and if there was a frame there, that would be along – so you know the common normals directly from here. So if you have the common normal, the common normal are intersecting at this point. So the common normal is intersecting here, intersecting there, there, and this will become the origin of those frames that we are going to assign.
So for Frame 1, the common normal is intersecting here. The Z1 will be out of the page. X1 is along the common normal. And Y1 complete the direct frame, so basically you have this as the first frame. Right? Any question about this? Really simple.
Okay. Do you agree with this second one? X2 is along the common normal, and Z2 is coming out of the plane, and Y2 completes the frame. And we are placing the last frame. We have the Z3, and we are placing the origin, so X3 is taking along the direction perpendicular to the Z-axis, and along the direction to L3, and that measures the angle Theta 3.
So between these frames, the only variables that you’re going to see is Theta 1, Theta 2, Theta 3, and now you need to introduce the first frame. So for the first frame, we said we are going to simplify. We are not going to select a Z0 in an arbitrary direction. We select Z0 along Z1.
So this way, we will select the X0 to be coincident with X1 when Theta 1 is equal to zero. And Theta 1 is measured from here, so X0 will be along this direction. It’s too simple.
All right. So with this frame assignment, what we’re going to have is the following. We defined for each of the joint those parameters, and now we have to identify those parameters, and make sure for 1, 2, 3, 4, 6, whatever number of degrees of freedom, step by step we are writing down these parameters, so we form a table.
And this table is like this. You have alpha I minus one, AI minus one that describe the links, DI and theta I that describe the connection of this link with this one, and we say joint I1. So for joint I, Alpha 0 is equal to 0. There is no angle between Z0 and Z1. No distance between the two. It’s zero. No offset – zero. And the only variable is Theta 1.
So we’re going to go through this one by one, and because of the fact that in this case the only variables that are going to be introduced are due to L1, L2 – so L1 measures what? Which variable is measured by L1? The A. And that means A1 is going to be L1, and A2 is going to be L2. And basically now, we have the description and the connection of each of the joints, so we build this table.
Now you have to note this. Something very important is that alpha – we set the value of alpha. Zero. A, we set the value. These are constant. D – in this case, it’s all revolute joints, so we set the values. But for theta, I didn’t go and measure this is 32 degrees and put Theta 1, replace it with 32 degrees because this is going to move. So in this table, I’m setting the variable. If the second joint was prismatic joint, the D will not appear as a zero, but it will appear as a variable. So theta or D will be a variable depending on the type of the joint.
Usually, we add one more column – the column where we say configurations shown. In the configurations shown, you set the value of the variable. So Theta 1 in the configurations shown is equal to 32 degrees. You put 32 degrees in that column if needed. And sometimes, we ask you to measure that variable.
But now with those four parameters and this table, we should be able to describe the forward kinematics. That is we should be able to describe the position and orientation of the end-effector.
Yes?

**Student:**How do you get the position of the end-effector if L3 is this?

**Instructor (Oussama Khatib)**:Yeah. Right now, I’m going to Frame 3. Now the transformation from Frame 3 to that point, that blue point, involves another transformation, and sometimes we assign a Frame 4, and we put 4 here, and then you can find that transformation.
But for now, we are just looking at the wrist point. This is the wrist point, and the variable is already in the wrist point. The only thing is a translation that is constant. Okay.
We’re ready. We’re going now to find the transformation between the two frames, and once we’ve found one transformation using these parameters, we will generalize it, and we will multiply out all the transformations and find the forward kinematics.
I see everyone ready. Let’s go. So here is a frame I, and I’m going to compute the transformation from I minus one to frame I. And we have these four parameters. And you’re going to help me to do it. We need four transformations, four parameters. I’m going to use – I mean I can do it directly, but I’m going to use four transformations. I will do one at a time.
So I think about DI as an operator, and now if I use this DI as an operator, I basically slide frame I to some other frame that just use this transformation from here to here. So this would be a frame here. Then I rotate this frame by theta, then slide it by A, and then [inaudible] it by alpha, and I have four transformations, four simple transformations that will give me the total transformation. Do you agree? Very easy.
So let’s do it. So first transformation I’m going to call this transformation that takes me from I down to P, ZP, and then we introduce ZQ rotating to this, and then we go here to ZR, and then we take ZR to ZI minus one. So basically, the way we’re going to do it, we will move from this frame to this frame to this frame Q to this frame, and slide it up, and reach this one.
And the transformation between each of them involves only one operator. So what is the operator between ZI and ZP? You remember those operators that I think we called Q of the vector? So this Q is along the Z-axis with a distance DI. The second one is a rotation about the Z-axis with an angle theta. The next one is a translation about the X-axis. The next one is a rotation about the X-axis, and that will lead us to –
So if I find the transformation from I to P, P to Q, Q to R, R to I minus one, then the total transformation between my transformation and this is the most important thing you have. Once you have this expressed in term of the As, Ds, alphas, and thetas, then you have a general transformation that you can use in all your frames, and then you can build your forward kinematics.
So this one as I said is a translation about the Z-axis with DI. This one is a rotation about the Z-axis with theta I. This one a translation along the X-axis with A minus one, and this one is a rotation about the X-axis with alpha I minus one. Just multiply them out. You get your transformation, and we’re done.
And this transformation is simply this. So you have the answer. You don’t have to do it. I have the answer. Look. I to I minus one is given as a function of AI minus one, alpha I minus one, DI, and theta. That’s it.
So we have this homogeneous transformation between this first frame and that final frame, and now we can apply it. Once we have these parameters, that is once we form this table, we apply this transformation. We know those parameters. We have the homogeneous transformation. Correct?
Once you have one of those transformation, you can go and multiply transformation between frames. You start from frame N, and you go all the way to Frame 0, and you have your homogeneous transformation from N to 0, which is now a function of the parameters that are constant of the links, the As, and alphas, and D or thetas, and the variables D or theta.
And with that, you have this information about the position of the end-effector which is contained in this transformation, the last vector. Remember? The last vector of this transformation contain X, Y, and Z, and the rotation matrix in this transformation contains the orientation of the frame with respect to the first frame, so you have your forward kinematics.
Great. Do we have a homework today? So you’re going to – we have something about frame – great. Good. So you’re going to have fun this weekend. All right. See you next Monday.

[End of Audio]

Duration: 72 minutes