RSD-1 6-87 Manipulator Kinematics and the Epsilon Algebra Michael W. Walker Department of Electrical Engineering and Computer Science The University of Michigan Ann Arbor, Michigan 48109 August 1987 Center for Research on Integrated Manufacturing Robot Systems Division College of Engineering The University of Michigan Ann Arbor, Michigan 48109-2110

RSD-TR- 16-87 TABLE OF CONTENTS 1. Introduction............................................... 1 2. The Algebra........................... 4 3. Manipulator Kinematics............................................... 12 4. An Ada Programming Example............................................... 17 5. Conclusion............................................... 20 6. Acknowledgement............................................... 21 7. Appendix A......................................... 21. ARefer ppencesdix A.................................................................................. 22 References........... 22

Manipulator Kinematics and The Epsilon Algebra Michael W. Walker Department of Electrical Engineering and Computer Science University of Michigan Ann Arbor, Michigan Abstract: A new algebra is defined for use in problems of manipulator kinematics. With this algebra the solution to the inverse kinematics problem can be solved for any time derivative of the joint position using the same program by simply chancing the order of the algebra. An example computer program written in Ada is used for illustration. 1. Introduction The position of a manipulator can be expressed either in joint coordinates or in Cartesian coordinates. Manipulator task are more easily specified in Cartesian coordinates. However, controllers usually control the positions of the joints. Therefore, the transformation from one coordinate system to another is an important task. We denote these transformations with the following equations. y = f(0) (I) and the inverse function: 0 = g(y) = f-1(y) (2) In the study of manipulator kinematics v would be a vector that represents the position and orientation of the end-effector and 0 would be a vector of joint positions.

Equation 1 is a statement of the forward kinematics problem of manipulators. That is, given the joint positions 0 calculate the position and orientation of the endeffector, y. Equation 2 is a statement of the inverse kinematics problem of manipulators. That is, given the position and orientation of the end-effector, y, calculate the joint positions 0. The forward kinematics problem has a simple solution. The procedure is to start at the base of the manipulator and successively compute the position and orientation of each link out to the' end-effector. Homogeneous transforms [1] are often used to specify the position and orientation of each link. The inverse kinematics problem is not as simple. If fact a closed form solution to equation 2 for the general case is not known at this time. One of the fundamental results was given by Pieper [2] who showed that any manipulator in which the wrist axes intersect has a closed form solution. Most manipulators today are designed to satisfy this requirment. Resolved rate control is another problem in kinematics. In this problem one must determine the velocity of the joints given the velocity of the end-effector. From equations 1 and 2 we see that: = 0 (3) and 0 =, =(ae-1 = (4) problem, equation 4 is more difficult. 2 June 5, 1987

Whitney [3,4] presented the formulation of this problem. The joint velocities were obtained by solving the linear equation 3 rather than using equation 4 directly. The advantage is the closed form solution of equation 2 is not needed. If the wrist axes intersect, then a closed form solution of equation 2 can be found. Paul [5] has shown how to obtain an expression for ag/aJ by directly evaluating the partial derivatives from the solution of the inverse kinematics problem obtained from equation 2. Equation 4 can then be used to obtain the joint velocities. Featherstone [6] presented an efficient solution for the joint velocities when the wrist axes intersect. In this case, it is possible to determine the linear velocity of the point of intersection directly from the linear and angular velocity of the end-effector. The first three joint velocities can be obtained from the linear velocity of the point where the wrist axes intersect. Knowing the velocities of the first three joints the velocity of the three wrist axes can be obtained to get the correct angxular velocity of the end-effector. The problem of resolved acceleration [7] can also be greatly simplified if the wrist axes intersect. In this problem one determines the acceleration of the joint positions given the position and velocity of the joints and the position. velocity and acceleration of the end-effector. From equations 3 and 4 we see that: '=-e 0 + t- - 190 (5) and 0 e dt | a9 L dt [e JJ] (6) 3 June 5, 1987

Hollerbach and Sahar [8] presented the wrist partitioned resolved acceleration solution to this problem which is an extension Featherstones method. In this paper an algebra is presented which in effect combines the results of Paul, Featherstone, Hollerbach and Sahar. With this algebra one can program the solution to the kinematics in position problems, Eq 1 and 2, and use this same program to solve for the kinematics problems in velocity, Eq 3 and 4, and acceleration, Eq 5 and 6. In fact, the inverse kinematics part of the program can be used to obtain any order time derivative of the joint positions. We begin by introducting the algebra in the next section. We show some of the properties of the algebra and then define functions of the elements of the alcebra. Next, the solution to the forward and inverse kinematics problem is presented. Then, the use of the Ada programming language is discussed. Finally,. we conclude the paper by making some observations on the results. 2. The Algebra In this section we define the algebra used. We begin by discussing some of the properties of the algebra and finish with a discussion of functions. 2.1. Properties of the E-Algebra The elements in the e-algebra are ordered sets of n+l real numbers. We call these e-numbers and the order of the algebra is the integer n. Thus, we will denote the algebra by stating that it is an s!")-algebra if the elements are ordered sets of n+l real numbers or ~(")-numbers. We could denote these ~(")-numbers by listing their elements. For example, an ~(2)-number is x=(4.2,-2). However, the following notation 4 June 5, 1987

is more convenient. X= —2)4 + ei2)22- _12)2 Thus, the order of the real numbers are denoted by the subscript on the epsilon and order of the algebra is denoted by the superscript. Symbols having a hat over them denote e-numbers. The operations of addition and multiplication are now easily defined. Addition of two e-numbers are accomplished by adding the corresponding real number components. For example, let x and f be e(2)-numbers. x= -')4 + ~i2)2 - ()2 and V "'j + Ef2 1 + E~2 Then..+ 2 3) + (2)(4+3 (21) + 2)()( 2 +)=() + 42) + 5(2)0 Clearly, the E-algebra satisfies the commutative and associative laus of addition, there exist a zero, and each s-number has an additive inverse. To multiply two E-numbers together, we simply multiply them together as if the c's were ordinary real numbers and then reduce products of E's until a single a or zero results. Reduction of the s's is performed using the following formula. (i +j)! /(n 1i!!j! if i+j < n 0 otherwise For example, multiplying the x and y defined above gives: x*v = (5.2)4 + ~ (22 - ~ 2)2XE52)3 + E s2)1 + ~22)2) 5 June 5, 1987

= (2)A)12 + 2)E2)4 + 2)E2)8) + (ei2)E626 + tf2)~i2)2 + cf2)E~2)4) - (E<2>2)6 + E~2)Ef2)2 + ~2)~~2)4) Using the reduction formula gives: x*y = (r42)12 + ~t2)4 + ~~2)8) + (~f2)6 + E~2)4 + 0) - (2)6 + + 0) = (62)12 + ef2)10 + ~(2)6) To show that the associative law for multiplication holds. (x ')2t= x). v we note that the product of the three e-numbers will result in a sum of products of three ~'s. Thus. if one of the terms of the product on the left is of the form, ( EznJ" )E;' the corresponding term on the right side of the equation will be of the form, ~Ek(E )~n)V,)). Therefore, to show that the associative law holds for multiplication we only need to showv that: (nl) )R)~n (n) = ~ (n'i}( (ri, ME fn If i+j+k>n then this equation is true since both sides are equal to zero. If i +j +k n then: j k -.~ ~ (i+j)~ (E.i'~)";)~~ ) = < (i j: ' ~ k+)~( ' - (i+j,+k)! (n) Similarly, (E (n )E(n )> =- (n ) ( '+k )! ~n; 6 June 5. 1987

(i +j +k )! i!j!k! '+J + Thus, (Ei(" )E (n ))EFn)- =fn)(F(n)E In)) Therefore, the associative law for multiplication holds. To show that the distributive law holds, (a (b+c-)=a b +acJ, and (b+c )a = ba +ca), for ~-numbers we express the product of two (") -numnbers, xi and y, in a different form: n n x*v E V;(f)~j)(fx \k ) j=+ =o = o J j +k! J(nI. x )'k ) Making a change of variables, i=j+k- gives: '=i =j i Chanzing the order of summation gives: x*V = JX /(n ~( _ xy_; )) (7) i=O j=J where [ ] is the binomial coeficient. If we let x=a and ^=b+c- then it is easy to show that the distributive law holds using this formula for products. Note, that I is the unity 1 e-number. Equation 7 is also useful to show that the conmmutitive law for multiplication. x*y = y*x, is satisfied. If when deriving equation 7 we had substituted j =i -k instead 1 For not;aiioaI convienance we denote S-numbers of the form Sb")a ff~lf*)O..+Es,)O where a is a real number simply as a. 7 June 5, 1987

of k =i-j we would have obtained the formula: x*y = XL ( h)( k [- ' kxi-k)) i=O k= J which is the same product obtained by using equation 7 and evaluating Y*xA. Therefore, x*y = y*x. We have shown that the s-algebra satisfies the commutative and associative laws of addition and multiplication, there exist a zero and a unity, and each element has an additive inverse. We conclude that the s-algebra is a commutitive ring with unity. The reader may notice that the first order s-algebra is identical to the dual number algebb bra is the bases of the screw theory which is used in the kinematic and dynamic analysis of mechanisms. In this theory [9] real 3x1 vectors are replaced by dual 3x1 vectors. That is, a dual 3x1 vector is composed of two real 3xl vectors. The advantantage of using dual vectors is in the simple notation and geometrical insight they provide. For example, a force vector and moment vector acting on a beam can be represented by a single vector. The first real vector component is the real force vector and the second real vector component is the moment vector. The advantage of the s-algebra over the dual number algebra is in determining the time derivatives of functions. The next section shows how any order time derivative of a function can be evaluated by simply using the corresponding order s-algebra during the function's evaluation. 8 June 5. 1987

2.2. Functions of c-numbers In this section we define a class of functions of c-numbers. Specifically. we are interested in functions which can be expressed in the form of a Taylor series. We begin by proving the following theorem. Theorem 1: Let x be a real function of time and let a be any real number. Define the (n")-number x to be: oi+ cf" dx __ = X + + + En dt Then, (x-a )m = n)(x-a )m + ~ ') d(x-a) ) d (x-a)' +. - ~n+n'E dt dtn where m is a positive integer. Proof: )We use mathematical induction as the method of proof. Since a is a constant. the statement is true for m =1. If it is true for some integer m, we will show it is also true for m+1 and therefore, for all m. Define Ym = (x-a ) Denote the components of vYm as: Vm = 4n")., O', + Einr)'m, 1+ * + E.m,n Using the formula for products of c-numbers, Eq. 7, gives: Ym+1 = YI = -, (.)I (Y 1jm,i- j ) Using the formula in appendix A for derivative of products, letting y 1.o=uO and Ym.o= o, gives: 9 June 5. 1987

Ym+1 = IC d; (Y1,Ym,O) = =Cd" C(Ym+1O) i=O dti i= O dt i) Therefore, Ax-m dn (x -a )m+l (x-a)m+l = En)(xa )m+l + ~n)d(X —)m+l. dt dt' Because of the intended application of e-numbers we can restrict our discussion only to special functions. We consider all of those functions which can be represented in a Taylor series. That is, if v is a function of x then we can write v in the following form: y = x (f(a (8) where a is a particular value of x and f (a )(m) denotes the m-th derivative with repect to x. If x is a function of time then we can use the above formula for determinin2 the i-th time derivative of f (x). It is: d4f (x) f(a )(m) di(x -a (9) drt m=O m! dtI We define f (x) as the value of the Taylor series when x is substituted in for x and E(")-algebra is used to carry out the indicated computations. That is, (.fc) ~ f (a)) )m Pv) =, 'a (; a)' m=O m Many of the problems concerning convergence are avoided by restricting the domain of x. Let x be a continuous function of time, t. Let it be continuously differentiable and let: 10 June 5. 1987

X = En )X + I)_d'x +.. + d dt dt" With this value of x we can use Theorem 1 to evaluate f (x). f(A)= f('")(a) i(,,di(x -a)m m =O m! Li =o d t i Changing the order of summation gives: f (a )(r) di (x —a m f (A) = ~~i(F) I E i==O )M Jka0 d'(dt' Substituting in equations 8 and 9 gives: f () = ")O f ( x) + "df (x) +... + d10) dt Thus, given a continuous function, f (x), and an E(_)-nunber. x. whose components are the time derivatives of x, then the function f (x) evaluates to an ~(" -number whose components are the time derivatives of f (x). It is this property we use in solving the forward and inverse kinematics problem. Equation 10 provides a simple method of evaluating functions of E(7'-numbers. Table 1 list the functions we will need in solving kinematics problems using E - algebra. Note that only those E-numbers whose first real component, xo, is not zero have a multiplicative inverse. 11 June 5, 1987

Functions sin (x) = ~2)sin(xo) + tf2Ix 1cos (xo) + EA2)(-sin (xo)x +x 2cos(xo)) cos(x) = E2)cos(xo) - (2)x sin (x) + E 2I(-cos(xO)x -x2sin(Xo)) atan 2(yr ) = ~~2)aran 2(vOX0o) + E 2)(X YV 1-x ly) + E2)(XoY2-x 'o) X = Z62)0+ 2 + ) 2)(12X x-1 = ~-2)X' -~ f2)X 2x 1 + F~2)(23 X 2x —X 2x 2) Identities sin2(x) + cos2(x) = 1 sin (x + ) = sin (x )cos (v )+cos (x )sin (~ ) cos (x) = co (x ) = cos ( )cos (y )-sin (x )sin (y ) 1.. Table 1: Functions of E~()-numbers which are used in this paper. x 2- ( 0x 1 + 42X and =' + ~2)) + ~x and v = 3. Manipulator Kinematics One of the basic problems in manipulator control is the forward and inverse kinematics problem. The forward kinematics problem is to compute the position and orientation of the end-effector, given the position of the joint variables. TI-ds problem is typically solved using the Hartenburg-Denavit notation for the manipulator kinematics. The procedure is to affix a coordinate system to each link. The position and orienation of the coordinate systems are defined using homogeneous transformation matrices. These homogeneous transforms are paramerernzed using four parameters defined by Hartenburg and Denivit. The transformation from link i-1 to link i is 12 June 5, 1987

usually denoted by the matrix A,_1. To determine the transformation from one link to the next we simply multiply the transformations together. Thus, the transformation from link six coordinates to link 0 coordinates is given by: A6(q 1,q2,.,q 6) = A (q 1)A (q2) A5 (q6) Usually. there is a tool attached to the end-effector whose position and orientation with respect to link six coordinates is given by the constant homogeneous transformation matrix T. A path planning routine determines the desired homogeneous transform of the tool with respect to the link 0 coordinates based upon the desired task. We call this matrix Tb. The objective of the controller is to drive the positions of the joints so that the following equation is always satisfied. Ao(q 1,q 2,.-,q 6)T = Tb For the controller to do this it must determined the desired position of the joint variabies based on this equation. This is the inverse kinematics problem. That is, determine the qi given the matrix Tb. The following two sections present the solution to the forward and inverse kinematics problems using the ~-algebra. 3.1. Forward Kinematics Problem From the above it is seen that the forward kinematics problem is a relatively simple problem. It only involves the multiplication of a few well defined matrices together. What we are interested in here is to use the same equations as above, but to obtain not only the homogeneous transform of the tool with respect to the base coordinates but also its time derivatives. To do this, we use the ~-algebra defined above. 13 June 5, 1987

For example, to determine Tb and its first and second time derivatives we use the E(2)-algebra. Define the e(2) joint position to be: q4-=-2)q + ct2)q + E 2)q The e(2) homogeneous transform of link i coordinates with respect to link i-i coordinates is defined the same as A.'1 except that qi is changed to qi and all computations are done with.:2)-algebra. From the above discussion, we know the result will be equal to: A' 21 + (2)* 1 = sES2)A/...+ I2A + If we use c(2) homogeneous transforms Ai_1 in the equation for calculating Tb, the result is an ~(2) homogeneous transform Tb whose value is: b = Aq q1 (q 2)- &(q6)T = = yl-Ob + I 6Tb + ~2Tb ll) 3.2. Inverse Kinematics Problem The inverse kinematics problem is well known and there are many excellent sources [5, 10, 11, 12, 13] for reference. Although the approach in each reference may be slightly different, the ~-algebra is equally applicable to all. Since the purpose of this section is to illustrate the use of e-algebra in the inverse kinematics problem, most of the details of the inverse kinematics solution will be left out and only those results which pertain to the use of ~-algebra will be presented. The inverse kinematics solution is composed of two parts. The first part is to compute the position of the point of intersection of the wrist axes. This position is only a function of the first three joint variables. Hence, we have three equations and three unknowns from which we can solve for the first three joint positions. 14 June 5. 1987

The next part of the problem is to determine the positions of the last three joint variables which gives the correct orientation of the end-effector. We start by modeling the kinematics of the manipulator. The Hartenburg-Denivit parameters for our example manipulator, the PUMA, are listed in Table A.1 in the appendix. Using the parameters in Table A.1, we write the algebraic equations for.A3 and A6 A3. They are: c1c23 -51 C 23 a2c c2+a 3cc23-d2s 1 S1C3 - 1 S1 S 3 aS1C 2-+-a3 s1 C +d 2c1.3.... o0 s O C -a 2sc-a, s; O 0 0 1 C4C5C6-s4s6 -C4C5s6-s4C6 c4s5 d6c4S5 S4C5C6+C4S6 -S4C5S6+C4C6 S4S5 d6s4s5 3j[6 S 5S6 C5 d 4 A3~-S5C65556 c d6c5+d4 0 0 0 1 The desired value of the matrix Tb is input to the inverse kinematics routine. Sinrce the matrix T is a constant we can use equation 11 to numerically determine the desired value,~. "6 T~l o; =T^,TT1 For notational convienance we give names to the columns of AO. ^6 n s a p Ag= 0 0 1 We can now compute the value of the position vector, r, where the wrist axes tntersect. It is: 15 June 5. 1987

rX r = p = -dry Next, we compute the following functions. r d2+a3; r2= r + r3 =r+r d2; r4 = rx +r +r-d2 ' 3 y cos(31) = -; sin(1) = - r4 r4 9,,9 2 a +r d 4-a 3 cos(12) - sin (13) = N'1-cos"(32) 2a 2r4 2, ^2 COS (33) a +r 1 sin (3) = \ 1-cos2(133) 2a2rl I a3 d4 cos (34)= —; sin (4) = - rl rl From these we can compute the sine and cosine of 01, 80, and 03. sin(0).=..rr -rxd r; r3 +r. d sin (81); cos(81);2 r2 sin (02) = sin(bl)cos(<2)+cos (13)sin (12); cos (0,) = cos(pl)cos(132)-sin (Pi)sin (P32) sin (03) = sin(O3)cos(34) —cos (3)sin (4); cos (83) = cos(O3)cos(34)+sin (3 )sin (14) The joint variables 01. 82, and 83 can now be computed using the atan 2 function. which returns the angle given both the sine and the cosine of the angle: 81 = atan 2(sc1) 8 atan,) 83 = a) 2 = atan 2(3,) Since 81. 02, and 03 are now known, we can compute;A and use this to solve for the numerical value of A6. 16 June 5. 1987

A3=A()-Tb= o0 0 o 1 The sine and cosine of 04, 05, and 86 are now computed in the following order: cos(85) = d; sin(5) = l-cos2(85) os (84) = dr/sin (058); sin(84)= dy/sin(85) cos(06) = -b, Isin (); in(6) =.Isin (85) where b. is the z component of b, etc. The joint variables 04, 05, and 06 can now be computed using the atan 2 function: Q8 = atan 2(4,c4) 85 = atan2(s5,c5) 6 = atan 2(n6iC6) 4. An.Ada Programming Example A proeram was written in Ada [14,15] to illustrate the method. First the forward kinematics problem was programmed. The output of this program was the Ehomogeneous transform of the tool coordinates. This output was then used as input to the inverse kinematics program. The algebra used was of order 2 so that joint positions, velocities. and accelerations would be obtained. Ada was choosen as the programming language because of the overloading feature of the language. The overloading feature of Ada allows two procedures or two functions to have identical names in the same scope provide that their profiles are different. The profile is the ordered list of the base types of the parameters and, for functions, the base type of the result as well. This feature applies not only to subprogram names but also to standard operators, such as '+', '-', '/', and '*'. For example. '*' is used to multiply two e-homogeneous transforms and also to multiply two E-numbers. 17 June 5,. 1987

The algebra was defined in a package called ALGEBRA. There are two parts of this package, the specification part and the body part. A portion of the specification part is shown below: package ALGEBRA is subtype index is INTEGER range O..INTEGER'LAST; type epsilon is array(index range <>) of REAL; function "+" (x,y: in epsilon) return epsilon; function "*" (x,y: in epsilon) return epsilon; end ALGEBRA; The implementation of each function or procedure defined in the specification part of the package is defined in the body part of the package. For example, the two functions defined above were implemented with the following body. package body ALGEBRA is function "+" (x,y: in epsilon) return epsilon is order: constant INTEGER:= x'LENGTH - 1; w: epsilon(O..order); begin for i in O..order loop w(i):= x(i) + y(i); end loop; return w; end "+"; function "*" (x,y: in epsilon) return epsilon is order: constant INTEGER:= x'LENGTH -1; w: epsilon(0..order); prod: REAL; begin w(0):= x(O)*y(O); for i in l..order loop prod:= x(0)*y(i); for j in I..i-1 loop prod:= prod + binomial(i,j)*x(j)*y(i-j); end loop; w(i):= prod + x(i)*y(0); end loop; return w; 18 June 5. 1987

end "*". end ALGEBRA; Note, binomial() in the function "*" is a precomputed array of the binomial coeficients. After the algebra was implemented the functions listed in Table 1 were programmed. Finally, the forward and inverse kinematics solutions were programmed using the same equations as contained in the above sections. The package ALGEBRA was written so that more than one order of algebra can use the same routines. The order of the algebra is determined by the LENGTH attribute of the input array variables. In the multiplication routine the order of the algebra is limited by the dimension of the predefined array binomial(). The homogeneous transforms used by the program were defined as 4x4 arrays of e-numbers. A general function for multiplying two homogeneous transforms that would work for any order algebra was not possible, since the dimension of the Enumbers must be declared when the homogeneous transform is defined. That is, "*" was defined for homogeneous transforms in the following way package kinematics is type homogeneous is array (1..4,1..4) of epsilon (0..2): function "*" (x,y: in homogeneous) return homogeneous: end kinematics; The inverse kinematics section of code is written exactly as if one were solving only for position. For example, the code for solving for 01 was: s(l):= (ry*r3 - d2*rx)/r2; -- compute sine of 01 c(l):= (rx*r3 - d2*ry)/r2; -- compute cosine of 01 theta(l):= atan2(s(l1),c(1)); -- compute 01 where rx, ry, r2, r3, s(l), c(l), and theta(l) are E-numbers and d2 is a real variable. 19 June 5. 1987

Note that "*" in d2*rx is another overload of the operator "*" which returns an Enumber. Singular points are always an issue in the inverse kinematics problem. The problems which arise using the e-algebra are similar to those encountered with real algebra. For example, evaluation of the square root of a negative number and division by zero. 5. Conclusion A new algebra was defined for the use in solving the forward and inverse kinematics problem of manipulator control. The properties of the algebra were investigated and functions of an ~-numbers were defined. The fundamental result was that if f (xA) is a continuous function of the real variable x, and if x is a continuous function of time, and if we let the components of x be the time derivatives of x, then f (X) evaluates to an ~-number whose components are the time derivatives of f (x). It was this property that was used in the formulation and solution to the forward and inverse kinematics problem of manipulators. Although any language could be used, the Ada language was used for illustration because of the ease of programming. The program was written as if only the forward and inverse problems in position were being solved. However, the same program can be used to solve for any time derivative of end-effector position for the forward kinematics problem or any time derivative of joint positions for the inverse kinematics problem, by simply changing the order of the algebra used by the program. The use of the s-algebra provides a simple method of solving the forward and inverse kinematics problem for manipulators. It is felt that the algebra is a useful tool 20 June 5. 1987

for the analysis of manipulator kinematics. 6. Acknowledgement This work was supported under a TRW Fellowship Grant to the Universit) of Michigan. 7. Appendix A The following is an identity used in this paper. Let uo and v'0 be continuous functions of time and define: dive d';d d1 diV0 U =-; I Vi-' dt' dti Then: di i] -. (uovo0) j- I uv. -j dt';=o where i[ 1=!(Vj)!t the binomial coefficient, i non-negative integer and 1. The Hartenburg-Denivit parameters for the PUMA manipulator are listed in the following table. i Joint i 8i ai a | d | Range 1 var -90.0 0.0 0.0 -160 to +160 2 var 0.0 431.8mm 149.09mm -225 to +45 3 var 90.0 -20.33mm 0 -45 to +225 4 var -90.0 0.0 433.07mm -110 to +170 5 var 90.0 0.0 0.0 -100 to +100 6 var 0.0 0.0 56.25mm -266 to +266 Table A.1: PUMA Manipulator Link Coordinate Parameters (var denotes variable) 21 June 5. 1987

8. References [1] J. Denavit, R.. Hartenberg, "A Kinematic Notation for Lower-Pair Mechanisms Based on Matrices," AME Journal of Applied Mechanics, pp. 215-221, June 1955. [2] D.L. Pieper, "The Kinematics of Manipulators under Computer Control," Ph.D. Thesis,, 1968. [3] D.E. Whitney, "Resolved motion rate control of manipulators and human prostheses," IEEE Trans. Man-Machine Systems, vol. MM-10, pp. 4743, 1969. [4] D.E. Vhritney, "The mathematics of coordinated control of prostheses and manipulators," J. Dynamicystems, Measurement. and Control, pp. 303-309, Dec. 1972. [5] R.P. Paul, Robot Manipulators. Mathematics, Programming and Control. Cambridge, Mass: MIT Press, 1981. [6] R. Featherstone, "Position and velocity transformations between robot end effector coordinates and joint angles," Int. J. Robotics Research, vol. 2, pp. 35-45. June, 1983. [7] J.Y.. Luh, M.W. Walker, R.P. Paul, "Resolved Acceleration Control of a Mechanical Manipulator,"' IEEE Trans. Automatic Control, vol. 25, pp. 468 -474, 1980. [8] J.M. Hollerbach, G. Sahar, "Wrist-Partitioned Inverse Kinematic Accelerations and Manipulator Dv-namics," International Conference on Robotics, pp. 152-161, March 13-15, 1984. [9] G.R. Pennock, A.T. Yang, "Application of Dual-Number Matrices to the Inverse Kinematics Problem of Robot Manipulators," A.S.M.E J. Mech., Trans., & Auto. in Design, vol. 107,2, 1985. [10] Wesley E. Snyder, Industrial Robots. Computer Interfacing and Control. Englewood Cliffs, NJ: Prentice-Hall, 1985. 22 June 5, 1987

[11] Shimon Y. Nof, Handbook of Industrial Robotics. New York, NY: John Wiley & Sons, 1985. [12] A.J. Critchlow, Introduction to Robotics. New York, NY: Macmillan, 1985. [13] H. Asada, J.E. Slotine, Robot Analysis and Control. New York, NY: Wiley, 1986. [14] A.N. Haberrnann, D.E. Perry, Ada for Experienced Programmers. Reading, Mass.: Addison-Wesley, 1983. [15] Ada Language Reference Manual. Pittsburgh, Penn: Gensoft Corporation, Feb. 17, 1983. 23 June 5. 1987

UNIVERSITY OF MICHIGAN 39015 03 2752299