Introduction

The aim of this project was to design the software that would enable the user to calibrate any three-link manipulator regardless of its joint configuration. In other words, the output of this application was initially going to be the lengths of the links, the alpha angles, and the linear offset for every rotational joint or the angular offset for every prismatic joint. The input that would be the most applicable to the majority of the users would be the position of the end-effector with the corresponding readings of the joint parameters.

In order for user to understand how to arrange the input data there needs to be a certain convention. This program is implemented using the Denavit-Hartenberg standard which is a series of steps how to label the manipulator's parameters (please, refer to the conventions section).

In addition, this program was to be accessible in a form of a web page through the World Wide Web. This was the primary reason for choosing Java as a programming language. Java is a new programming language very much like C++. Its main strength is that its applications can be run on different platforms. More importantly for this project, its applets (web applications) can be viewed in most of the modern web browsers just like any standard applications regardless of the hardware platform.

Theory

As mentioned earlier, the algorithm is based on Denavit-Hartenberg forward kinematics model. As the manipulator has three links, the standard transformation matrix needs to be multiplied three times for the three corresponding links (joints). The new matrix obtained would contain the equations for calculating the position and orientation of the end-effector. This particular algorithm is only concerned with the positional equations. The three equations that correspond to the x, y, and z coordinate are located in the first three elements of the fourth column, respectively. The idea is to solve these positional equations symbolically, using the x, y, and z as well as the joint readings as the known parameters, for all the unknown parameters a1, a2, a3, alpha1, alpha2, alpha3, and theta for every prismatic joint or d for every revolute joint.

All together this results in nine unknowns. Solving for these nine unknowns, requires nine equations that are obtained by using three distinct positions (each having three coordinates). When the equations are solved then they are to be inserted into the source code of the program.

Practice

After the matrix multiplication is done the following equations are obtained:

It is apparent from the matrix multiplication that alpha angle of the third link is not a part of any of the three positional equations. Therefore, this (position-based) algorithm cannot possibly be used for finding the size of the alpha angle for the third link.

Also, the equations need to be linear. To make them linear, first of all I introduced two parameters for every theta and every alpha angle - one being Cosine of the angle and the other being Sine of the angle. Then I grouped all the unknown parameters that are being multiplied by each other together. Finally, I went through equation and separated the reoccurring groups of parameters in order to simplify the final system of now linear equations. However, even after the simplification, the simplest (RRR) configuration was still to big to be solved.

Then, I tried using only the simplest equation, the one that determines the Z coordinate. This required more positions because I was only taking one of the three coordinates for every position of the end-effector. This only gives solutions for the few unknowns. The rest of the unknowns are found by substituting the values of the unknowns that are found using the "Z equation" into the other two equations along with their corresponding X and Y coordinates and joint readings. This method gave the symbolic solution for all the unknowns but that solution proved to be inaccurate probably due to the loss of some roots of the equation.

Considering that alpha angles of most of the manipulators are either 0, 90, or -90 degrees it can be left to the user to find which one of the three angles to assign to which alpha by simply using the Denavit-Hartenberg Convention. The same applies to the theta angles for the prismatic joints. This assumption reduces the number of unknowns to the lengths of the links a1, a2, a3, and the lengths of the offsets d for every revolute joint. These new equations are all linear and there symbolic solutions can be obtained without losing any roots. as shown in the equation section.

Finally, the user needs to find the positions for which there would be only one solution (if possible). Also, the positions should be distinct from each other in terms of having only one solution for every unknown. In other words, just like the inverse kinematics, these equations can also have multiple solutions.

This is an example of a three link manipulator whose specific offsets (d1, d2, d3) cannot be found using these equations regardless of how many distinct position-samples are taken.


Back to the Page of Contents

Back to the Robotics Lab Homepage

Back to My Homepage