21
Pergamon 0094-114X(95)0004~8 Mech. Mach. Theory Vol. 31, No. 1, pp. 23-43, 1996 Copyright © 1995 Elsevier Science Ltd Printed in Great Britain. All rights reserved 0094-114X/95 $9.50 + 0.00 A NEW COMPUTATIONAL ALGORITHM FOR 7R SPATIAL MECHANISMS BLAISE MORTON and MICHAEL ELGERSMA Honeywell TechnologyCenter, 3660 TechnologyDrive, Minneapolis, MN 55418, U.S.A. (Received I August 1994; in revisedform 16 March 1995; receivedfor publication 5 June 1995) Abstract--This paper describes a new computational technique for the analysis of general 1-DOF, 7R spatial-mechanisms. The problem is first formulated in standard notation, using 4 x 4-matrices to represent Euclidean motions. A different mathematical notation is then introduced by which Euclidean motions are representedby pairs ofquaternions. Basicquaternion facts are reviewed,and the fundamental system of equations is defined. Special techniques required to solve the fundamental system are then presented and applied to an example. 1. INTRODUCTION One extensively studied problem in spatial-mechanism geometry is the analysis of the general 1-DOF, 7R mechanism [1-7]. A general 1-DOF, 7R mechanism consists of seven rigid bodies connected by revolute joints. Two joints are associated with each body, and the seven bodies are connected to form a single loop. A figure from a typical example taken from [4] is shown in Fig. 1. This problem has recently been solved [8-15]. Further work on this and related problems can be found in [16-20]. In this paper we present an alternative algebraic approach for solving this problem. We have worked out most of the theory needed to justify the procedure, but some interesting theoretical issues remain. As we encounter these issues in our presentation we identify them and state our current beliefs as conjectures. These conjectures are based on results obtained from a coded algorithm that solves the problem in every case we have tried, including 7R mechanisms with randomly generated parameters. The technical presentation begins in Section 2 with a review of the problem and standard notation. In the first step of our procedure we use a special quaternion-pair representation of the Euclidean group, described in Section 3. The reader familiar with Clifford's bi-quaternion notation is warned that our quaternion-pair notation is different. In Section 4 we show how the quaternion-pair representation leads to a set of multi-affine equations, the generation of which is the second step of our procedure. The system of multi-afline equations is converted into a generalized eigenvalue problem in Section 5 (step 3). The generalized eigenproblem is rank-deficient for all values of the "eigenvalue" so it cannot be solved directly. In Section 6 (step 4) one variable is eliminated to form a smaller dimensional eigenproblem. This smaller eigenproblem is again rank-deficient for all values of the "eigenvalue" so it cannot be solved directly. In Section 7 (step 5), we show how to compute the kernel of the rank-deficient matrix obtained in Section 6. In Section 8 (step 6) the kernel is used to obtain the final 16 x 16 eigenproblem which has 16 finite eigenvalues. The eigenvalues give all 16 values for one of the joint angles, while the eigenvectors give the 16 values for each of the other joint angles. Section 9 gives estimates of computation time for the algorithm. In Section 10 we present some example problems that were solved by our computer program. The computer code developed in conjunction with the algorithm was a vital part of the research effort. More than once, when we thought we had the final solution, we found there was more work to do after looking at examples. In several cases we do not yet understand why the numbers work out as the computations show they do. These computational surprises underlie the outstanding theoretical issues mentioned in the first paragraph above. MMT 31/L~" 23

A new computational algorithm for 7R spatial mechanisms

Embed Size (px)

Citation preview

Page 1: A new computational algorithm for 7R spatial mechanisms

Pergamon 0094-114X(95)0004~8

Mech. Mach. Theory Vol. 31, No. 1, pp. 23-43, 1996 Copyright © 1995 Elsevier Science Ltd

Printed in Great Britain. All rights reserved 0094-114X/95 $9.50 + 0.00

A NEW COMPUTATIONAL ALGORITHM FOR 7R SPATIAL MECHANISMS

BLAISE M O R T O N and MICHAEL ELGERSMA Honeywell Technology Center, 3660 Technology Drive, Minneapolis, MN 55418, U.S.A.

(Received I August 1994; in revised form 16 March 1995; received for publication 5 June 1995)

Abstract--This paper describes a new computational technique for the analysis of general 1-DOF, 7R spatial-mechanisms. The problem is first formulated in standard notation, using 4 x 4-matrices to represent Euclidean motions. A different mathematical notation is then introduced by which Euclidean motions are represented by pairs ofquaternions. Basic quaternion facts are reviewed, and the fundamental system of equations is defined. Special techniques required to solve the fundamental system are then presented and applied to an example.

1. I N T R O D U C T I O N

One extensively studied problem in spatial-mechanism geometry is the analysis of the general 1-DOF, 7R mechanism [1-7]. A general 1-DOF, 7R mechanism consists of seven rigid bodies connected by revolute joints. Two joints are associated with each body, and the seven bodies are connected to form a single loop. A figure from a typical example taken from [4] is shown in Fig. 1. This problem has recently been solved [8-15]. Further work on this and related problems can be found in [16-20].

In this paper we present an alternative algebraic approach for solving this problem. We have worked out most of the theory needed to justify the procedure, but some interesting theoretical issues remain. As we encounter these issues in our presentation we identify them and state our current beliefs as conjectures. These conjectures are based on results obtained from a coded algorithm that solves the problem in every case we have tried, including 7R mechanisms with randomly generated parameters.

The technical presentation begins in Section 2 with a review of the problem and standard notation. In the first step of our procedure we use a special quaternion-pair representation of the Euclidean group, described in Section 3. The reader familiar with Clifford's bi-quaternion notation is warned that our quaternion-pair notation is different. In Section 4 we show how the quaternion-pair representation leads to a set of multi-affine equations, the generation of which is the second step of our procedure.

The system of multi-afline equations is converted into a generalized eigenvalue problem in Section 5 (step 3). The generalized eigenproblem is rank-deficient for all values of the "eigenvalue" so it cannot be solved directly. In Section 6 (step 4) one variable is eliminated to form a smaller dimensional eigenproblem. This smaller eigenproblem is again rank-deficient for all values of the "eigenvalue" so it cannot be solved directly. In Section 7 (step 5), we show how to compute the kernel of the rank-deficient matrix obtained in Section 6. In Section 8 (step 6) the kernel is used to obtain the final 16 x 16 eigenproblem which has 16 finite eigenvalues. The eigenvalues give all 16 values for one of the joint angles, while the eigenvectors give the 16 values for each of the other joint angles. Section 9 gives estimates of computation time for the algorithm. In Section 10 we present some example problems that were solved by our computer program.

The computer code developed in conjunction with the algorithm was a vital part of the research effort. More than once, when we thought we had the final solution, we found there was more work to do after looking at examples. In several cases we do not yet understand why the numbers work out as the computations show they do. These computational surprises underlie the outstanding theoretical issues mentioned in the first paragraph above.

MMT 31/L~" 23

Page 2: A new computational algorithm for 7R spatial mechanisms

24 Blaise Morton and Michael Elgersma

Though the presentation here is moderately abstract, the reader familiar with Duffy's work should see some familiar features in the algebra. In the early stages of this analysis, while looking for the right approach, we found the book [3] a continual source of inspiration. In some respects we view our approach as a generalization of Duffy's technqiue. Many of the computational results described here are new, in need of further theoretical development and practical testing, but we expect they will find effective application in analyses of other mechanisms. We intend to keep working along these lines, and we invite comments and questions from interested readers. We hope the experimentally inclined reader will find it possible to use these techniques on his own problems and enjoy the solution process as much as we have.

We would like to thank the reviewers of our original manuscript for their suggested improve- ments. As one of the reviewers mentioned, the principal contributions of the approach presented here are the notation leading to the multi-affine equations and the numerical methods and matrix algebra used to solve a rank-deficient eigenvalue problem. We agree with the reviewer and we wish to emphasize this point to the reader. We would also like to thank Stephen C. Nelson from the University of Minnesota for an idea that improved the proof of the quaternion-pair lemma in Section 3.

2. PROBLEM STATEMENT AND NOTATION

A general I-DOF, 7R mechanism consists of seven rigid bodies connected by revolute joints. Two joints are associated with each body, and the seven bodies are connected to form a single loop. A typical example is shown in Fig. 1.

To define a mechanism of this kind we must specify the hinge-line geometry on each of the seven bodies and say how the hinges are paired and oriented to form joints. A specific format for representing this geometric data is presented in Section 2.1 below. We will assume, unless the contrary is specifically stated, that the mechanism has a one-parameter family of configurations associated with a single degree of freedom. This assumption is valid for generic mechanisms of this type, but there are many special cases where it is not. This assumption is not valid, for example, when all seven bodies lie in a single plane and all hinge lines are perpendicular to that plane.

Given a generic mechanism, we consider its one-parameter set of configurations. Each configuration is determined by the values of the joint angles 0~ . . . . . 07 of the seven hinges, where each angle is measured relative to some arbitrary, fixed reference position. The problem is to compute all possible sets of values for these seven joint angles.

The first step toward solving the problem is to analyze the sub-problem where one of the joint angles, say 07, is fixed at an arbitrary value. With 07 fixed the mechanism has zero degrees of freedom, so the problem reduces to computing the finite set of possible values for the angles O~ .. . . . 06. In general, for each value 07, more than one solution is possible for 0~,..., 06. The relations among the angles arise from the loop closure equations (LCEs) described in Section 2.2.

The primary goal of the research described in this paper is to find a one-parameter family of polynomials in a single variable, parametrized by 07, whose roots yield the finite set of possible solutions 0~ . . . . . 06. For both practical and aesthetic reasons, we want to construct such a family of polynomials of minimal degree in the single variable.

In the remainder of this section we establish notation for the reference coordinate systems and we derive the loop closure equations. The notation used in this section is standard.

2.1. Reference coordinate systems For a given 7R mechanism, each of the seven rigid bodies has its own reference coordinate

system. For a kinematic viewpoint, the role of the body coordinate system is to allow specification of the geometric relation (separation, relative orientation in space) between the two hinges on that body. The information contained in a body's coordinate chart is a subset of the data that would be required by a machinist to build it. Within each coordinate chart a three-dimensional coordinate system is specified, and the coordinates of salient parts of the body are identified, In the following we will use the notation Uj to denote the coordinate chart of body j, and (xi, yj, zj) to denote the coordinate functions in U~. When discussing properties that hold for a general chart we often omit the subscript j.

Page 3: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism

f "k0,

25

0 6

04

Fig. 1. 7R mechanism.

0 5 C9~546-03

We are free to position the jth body however we please within its reference coordinate system. One convenient choice of coordinates for a rigid body with a revolute joint at each end is shown in Fig. 2. The choice of coordinates is completely determined by placing some point on the first

w

Fig. 2. Body coordinate system.

Page 4: A new computational algorithm for 7R spatial mechanisms

26 Blaise Morton and Michael Elgersma

hinge axis of the jth at the origin, then giving the body an arbitrary angular orientation. Using this coordinate system on the jth body, define the following three vectors :

(1) vj unit vector starts at the origin and is parallel to the first hinge axis (2) aj starts at the origin and ends anywhere on the second hinge axis (3) wj unit vector starts at the end of the _aj vector and is parallel to the second hinge axis

These three vectors in R 3 describe the jth body using a total of 9 scalar parameters. An alternate parameterization is used in [4] and [8-15]. They use a minimal parameterization involving only the three scalar parameters shown in Fig. 3:

~f--the angle between the two hinge lines on the jth body d/f--the minimum distance between the two hinge lines on the jth body

dhF-the distance along the hinge line connecting body j and body j + 1 between the shortest lines connecting that hinge to the 2 adjacent hinges

The transformation from ~j, d/j, dhj = dkj+ l - dnj to [vq, _wj, _aj] is given by:

i cos(- j) [vq, wj, _aj] = Qj sin(-~j)

0

dkj + dnj cos(-- ~J)l dnj s in( - (j) i

dl~ J

(1)

with arbitrary length dkj, as well as an arbitrary rotation matrix Qj.

~¢V¢+1 X j+l , ~¢Vj X j , ~ j - 1 t

$ dlj I ! t

: 1 / dlj+] dhj !

. . . . _~ . . . . . I

anj

/ aj+l I

I

i !

! I " t

I t !

t

Fig. 3. Coordinates [v_, _w, #] vs ~, dl, dh.

Page 5: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 27

The transformation from [_v, _w, a] to (, d/, dh could be obtained by doing a QR factorization (Q orthogonal, R upper triangular) on the [_vj, wj, qj] matrix to obtain (j, dlj, dkj, dnj, then set dhj = dkj+ ~-dnj . This gives the same result as:

( j= -tan-l(ll_vj x w j II/_vT_wj)

dlj = (~j x _wj)rqj II#j x wj II

dhj = dk j +, - dnj (2)

where

1 cos(¢j ) dkj ,

2.2. Loop closure equations

We introduce the notion of transition functions in terms of the coordinate charts described in Section 2.1. Roughly speaking, a transition function is a mapping from one coordinate chart to another that identifies those points that are joined together in the assembled mechanism. In the next paragraph we clarify this notion.

Two bodies directly adjacent in the assembled mechanism share a hinge line. That hinge line is associated with a specified line in each of the coordinate charts of the two bodies. By convention, we assume that the hinge line through the tip of the _aj vector in coordinate chart Uj is mapped to the line through _0 in chart Uj+~. Let vq+~ denote the unit vector at 0_ in Uj+~, and _wj denote the unit vector at qj in Uj. A general function from Uj to Uj+I will be denoted (kj+ Lj. To be a transition function, the mapping ~bj+ I.j must satisfy:

(1) ~j+ l.Aaj) = 0 (2) ~j+,.,(aj + wj) = ~j+, (3) ~bj+ lj is a Euclidean transformation from Uj to Uj+ j.

By Euclidean transformation we mean an aftine map (linear + constant vector translation) that preserves distance and sense of orientation. Transition functions from Uj+ ~ to Uj are, by definition, the inverse mappings of transition functions from Uj to Uj+ ~. To accommodate wrap-around, we let the subscripts take all integer values and identify quantities with the same indices rood 7 (so, for example, body 7 is the same as body 0).

From the above three conditions it is a simple matter to derive an explicit form for a transition function. First we recall some basic notation. Let 80(3) denote the special orthogonal group of real orthogonal matrices of determinant 1. The Euclidean group E(3) is the group of all mappings (~ from R 3 to R 3 of the form:

~(x) = Ax + b (4)

where A is in SO(3) and b is in R 3. The Euclidean group E(3) is a group because it contains the identity transformation and is closed under composition and inverse transformations. It is standard to represent E(3) as a subgroup of the 4 x 4 matrices by the mapping p defined as follows:

- , : I o ,,) where 4~, A and b are as in equation (4). The value of the transformation 4~ applied to the three-vector x is realized by identifying x with the four-vector x', where

x,_-[: 1 and computing the usual matrix product

[q~ (x)]' = p (~b)x' (7)

We now return to the derivation of the general expression for the transition functions.

Page 6: A new computational algorithm for 7R spatial mechanisms

28 Blaise Morton and Michael Elgersma

Recall the relations:

ej+ i,Aaj) = _0 er + ,,Aa_r + _wr) -- _vr +, (8)

Using the 4 x 4 matrix notation, the set of Euclidean motions ~br+ ij satisfying these two equations are of the form:

~,~,.,~(0,,,_ [~,(o0~, .,;0,,o,] (9, where the Rr(O:) rotation matrix (see Fig. 4) is of the form:

[i 0 °7 Rj(Or) = [_vr+l, v~+,] cos(0r) -sin(0s) [_wj, w~] T (10)

sin(0r) cos(0:)J

for 0: an arbitrary angle, v~- an orthonormal 3 x 2 complement to _v r and ~ an orthonormal 3 x 2 complement to Yr" Figure 4 shows neighboring bodies and the associated rotation matrices.

The matrix R:(Oi) in equation (10) is a matrix in SO(3) parametrized by the angle 0 s. It is easy to check that the transformations 4~r+ ij(0s) in equation (9) are the most general Euclidean motions that satisfy equations (8).

Now that the transition functions have been defined it is an easy matter to write down the loop-closure equations (LeEs). The loop-closure equations are obtained by taking the composition of transition functions around a closed loop. Starting, say, in coordinate chart Ui, pick a general

Ii ° R~(V~.,, o,,_wj)--[v~., x~.,'] coso, -Sin0j

smoj [w, _w/]" coso, j

RJ

RjRj.I = [Vj+. Vj÷t l] CSj -SOj

soil[w, wj±] T co~j

R•I llw_ , w_. / -SO~.l COs.,

B~yj

RS.I

Fig. 4. Revolute joint rotation matrices.

Page 7: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 29

point xt. A point in a coordinate chart is a vector of coordinates on a geometric point in space. Any transition function ~21 (01) maps x~ to its image x2 in the coordinate chart U2 (change of coordinates). The point x2 is mapped in turn to x3 in U 3 by a transition function t#32(02) , and so on, until finally the point x7 in U7 is mapped by the function ~bt7(07) to y~ in the original chart U~. When the angle-parameters 0j . . . . . 07 of the transition functions are the angles one would measure on the mechanism in a realizable configuration, the compatibility relation y~ = x~ is satisfied. Because the point x~ is general, the composition of the transition functions around the loop must be the identity transformation. This compatibility relation is a loop closure equation. For a realizable configuration, the compatibility relation must hold for the following geometric reason. Viewing the transition functions as changes of coordinates associated with the different bodies, we see that yt and Xl are the coordinates of the same geometric point in the same coordinate chart Ut, so they are equal.

Because the mechanism we are concerned with has only a single loop, all loop equations have the form:

¢#j+ 7,j+6(Oj+6)~l~j+6,j+ 5(Oj+ 5) " " " ~t~j+ i,j(Oj) = identity (11)

where the subscripts are evaluated mod 7, as usual. As an example, one of these equations in terms of the 4 × 4 matrices is:

ERT(007) --RT:07)-a71.- .JR2 (002) -R2102)a-2][R'(oO') - R ' l O ' ) a - ' ] = I (12) where I is the 4 x 4 identity matrix and Rj(Oj) is given by equation (10).

3. THE Q U A T E R N I O N - P A I R R E P R E S E N T A T I O N

Quaternions [21] are often used in kinematic analysis, so the mechanism community is familiar with their properties. Even so, it appears that the quaternion-based approach we use here has not been exploited in mechanism analysis. Our approach should not be confused with the bi-quaternion notation, originally developed by Clifford, that has been applied to mechanism kinematics.

The point of introducing quaternions is to transform the loop closure equations (LCEs) derived in Section 2 into a simpler form. The simplification is not merely cosmetic, it is a basic reduction of the system of equations into an equivalent but more tractable form.

We start with a review of quaternion basics in Section 3.1, leading up to the quaternion-pair group structure. We then introduce a geometric lemma in Section 3.2 as a first step in the algebraic reduction. The full power of the quaternion-pair notation introduced in this section will be apparent when the LCEs are rewritten in Section 4.

3.1. Review o f quaternion basics

In the standard notation, the set of quaternions is identified with R 4. The quaternion q has the form:

q = qo + ql i + qz] + q3k (13)

where qo, ql, qz, q3 are real numbers, i 2 = j 2 = k Z = _ 1 and /j = k, etc. One special susbset of interest is the set Q (1) of unit quaternions, which is geometrically the unit sphere S 3 in R 4. Another special subset of interest is the linear subspace T of quaternions such that q0 = 0: these are called pure quaternions.

Analogous to the notion of complex conjugation of complex numbers is the quaternion conjugation operation *. The conjugate of the quaternion q in equation (13) is, by definition:

q* = qo - ql i - qz] - q3k (14)

The *-operation has several useful properties. First, observe that

q q , q2 ° .q_ 2 2 2 = q t + q 2 + q 3 (15)

and the inner-product (p, q ) of two quaternions is:

(p, q ) = Re(pq *) = Re(qp *) (16)

Page 8: A new computational algorithm for 7R spatial mechanisms

30 Blaise Morton and Michael Elgersma

where Re denotes real part. The norm of the quaternion q is the function:

IIq II = x/qq* (17)

Other basic facts are:

(1) (q~q2)* = q 'q* . (2) liq, q211 = liar II Ilq2[I. (3) a quaternion q is in T if and only if q * = - q . (4) all nonzero quaternions are invertible: q - i = (q*/llq II 2)

3.1.I. Unit quaternions and S0(3). There is a well-known covering map from the unit quater- nions Q(1) to the group of rotation matrices SO(3). This brief section reviews that construction and some of its immediate corollaries.

Let p be a nonzero quaternion. Then pwp* is a pure quaternion if and only if w is a pure quaternion. By the mapping w ~pwp* each nonzero quaternion p defines an invertible linear transformation S(p) of T. We will primarily consider this transformation in the special case where p is a unit quaternion, in which case S(p) is in SO(3). Relative to the basis {i,j, k} of T (which we tacitly assume in the sequel), the matrix S(p) associated with q has the form:

S(po,Pl ,P2,P3) = 2[ p,p2 +POP3 P2o +P~ P2P3 - l • (18)

LPtp3 - PoP2 P2P3 + PoPl Pg + P~ I 0

The mapping q ~S(q) projects the unit quaternions Q(1) onto the rotation matrices SO(3). For each matrix K in SO(3) there are two quaternions, q and - q , such that S(q)= S ( - q ) - - K . Furthermore, S(q2ql) = S(q2)S(ql).

The geometric link between rotation matrices and their associated unit quaternions is easily derived. Specifically, any unit quaternion has the form:

q = cos(?) + sin(7)w (19)

where w is a unit-length, pure quaternion. The matrix S(q) is a rotation by the angle 27 about the axis in the w-direction. To see this, first note that

qwq* = (cos ? + sin(?)w)w(cos(v) + sin(?)w*)

= cos2(v)w + cos(7)sin(7)[w 2 + ww*] + sin2(7)w(ww *) = w (20)

so w is the rotation axis of S(q). Second, because the trace of a rotation matrix is 1 + 2 cos(~) where is the angle of rotation, from equation (18) we find that

1 + 2 cos(~) = 6 cos2(7) + 2 sin2(7) - 3 (21)

from which cos(~)= cos(27) follows immediately. 3.1.2. The quaternion-pair group. Now we turn attention to a special group defined by

quaternion pairs. Specifically, we will look at the set Q (1) x T of ordered pairs of quaternions (q, w) and define a group structure on this set. Let ql, q2 be unit quaternions and w~, w 2 be pure quaternions. Define the product:

(q2, w2)(qt, wl) = (q2ql, w2 + q2wlq*) (22)

Observe that the product is well-defined in Q(1) x T. Note that (1, 0) is the identity element, and

(q, w)-I = (q., _ q *wq) (23)

The set Q (1) x T with this product forms a group, which we call the quaternion-pair group. It turns out that the quaternion-pair group is a covering group of the Euclidean group E(3) (in fact, it is the universal covering group). The full power of the covering space structure is not needed for our application, all we need is the definition of the mapping. Therefore, we construct the covering map below, but we do not verify its topological properties.

Page 9: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 31

The covering map from the quaternion-pair group to E(3) is closely related to the map S defined in Section 3.1.1 that maps Q(1) onto SO(3). Let ~b~, ~b2 be two elements of E(3) and suppose for j = 1,2:

Pick qj such that S(qj) = Rj, and let wj be the pure quaternion

wj = aj.~ i + aj, zj + aj.3k (25)

where aj= (aj.~, aj.2, aj,3). If we define the map S,[(qj , WE) ] = ~bj, an easy computation shows that

S . [(q2, w2)(q,, Wl )] = ~2~)1 (26)

The mapping S , is clearly onto, it is a two-to-one mapping like S.

3.2. Transition functions in quaternion-pair form

The primary goal of this subsection is to determine a quaternion-pair form for transition functions equivalent to the expression in equation (9), Section 2. The idea is to represent the transition function q~j+ lj(Oj) by a quaternion pair:

~(c~j+ v(Oj)) = (qj(Oj), wj(Oj)) (27)

where qg is a unit quaternion and wj is a pure quaternion. As a first step, take the expression in equation (9) and, for the moment, ignore the subscript and

0 dependence. Let ~b denote 4~21 (0). Select q, one of the two quaternions such that S(q) = p (ok) and let a be the pure quaternion associated with the vector a. The results of the previous subsection suggest that we use

a(ck ) = (q, qotq* ) (28)

for the quaternion pair representing ~b. Furthermore, if ~b~ and 42 are two transition functions corresponding to (q~, q ~ q * ) and (q2,q2~2q*), then the composition map is the product [see equation (22)]:

a(c~2dPl ) = (qzql, q2o~2q * + q2qt o~1 q ' q * ) (29)

A vital step in the quaternion-pair representation is to include the 0-dependence. That part of the construction is handled next.

Lemma: Let R(O) be the one-parameter family of rotation matrices defined in equation (10). There is a pair of unit quaternions (p, q), with p orthogonal to q, such that the set C~ in Q(1) defined by

C~ = {cos(~)p + sin(~)q 10 -<< ~' ~< 2~} (30)

is mapped by S onto the circle C2 in SO(3) defined by

C2 = {R(0) l0 ~< 0 ~< 2r~} (31)

Explicitly, we have the following identity

S(cos(7)p + sin(7)q) = R(27) (32)

that is, 0 = 2y.

Proof."

First recall the form of R(O) in equation (10):

l li 0 Rj(Oj) = [Vj+ i , ~ J + l ] C O S ( 0 j )

sin(0j)

--siOn(oj) ][Wj, w_~ ] T cos(0j)J

(33)

Page 10: A new computational algorithm for 7R spatial mechanisms

32 Blaise Morton and Michael Elgersma

The right hand side is the product of the three rotation matrices, the first and third of which are

constant. Pick any pair of unit quaternions atj+ i, flj such that

S(~j+ 1) = [_vj+ ~, v_:+, ] e SO (3) (34)

S(flj) [w_j, w_) l ~ SO (3) (35)

It is easy to check that

(0))[i 0 01 S cos + i sm -~ = cos(0:) -sin(0:) (36)

sin(0:) cos(0j)J

Therefore

R(0j) = S(~j+l)S(cos(~)+i sin(~))S(f l j )

0j 0j = S ( ~ j + , ( c o s ( ~ ) + , sm(~) ) ( f l j ) )

. . 0j = S(~tj+, flj c o s ( ~ ) + ~j+ ,/flj s l n ( ~ ) ) (37)

Defining the unit quaternions p, q:

p = o~:+ ,~: q = o~y+ ,iflj (38)

and the angle ? = Off2 we find that

S(cos(?)q + sin((?)p) = R(Oj) (39)

From the definitions o f p and q it is easy to show that the real part o fpq* is zero, from which we conclude that p and q are orthogonal.

The proof is complete.

Remark: The set C~ corresponds, geometrically, to a great circle on the unit three-sphere Q(1). The lemma says that the set of rotations allowed by the revolute joint are covered 2-1 by the points on the great circle C~. For this reason we sometimes refer to this lemma as the circle lemma. As we shall see in the next section, the circle lemma allows us to write the loop closure equations in a convenient multi-affine form.

For computational purposoes, p_ and _q were computed directly from v_ and _w as follows:

Let

then

_vk + l + w_k (40) _xk = [l_vk+ ~ + _wk[[

q_k = (0, _xk) and P_k = ((-Xk, -Wk>, -Xk X Wk) (41)

4 . T H E M U L T I - A F F I N E E Q U A T I O N S

In Section 2 we derived the loop closure equations (LCEs) for a general 7R mechanism, and in Section 3 we introduced the quaternion-pair representation. In this section we use the quaternion- pair coordinates to convert the LCEs into a system of multi-affine equations.

4.1. Rewriting the equations Recall the general form of the LCEs in equation (1 l) from Section 2:

(~]+ 7,j+ 6(0j+ 6)(~j + 6,j+5 (Oj+ 5 ) ' ' ' ~)j+ l,j(Oj) ~" identity (42)

In the quaternion-pair notation, each of the transition functions Ok+~(Ok) is replaced by a quaternion pair (rk(?k), rk(~k)Wkrkgk)*) where:

rk(?k) = COS(?k)pk + sin(?k)qk (43)

Page 11: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 33

and wk is a constant pure quaternion for each index k, an integer mod 7. Recall the link between the physical joint angle 0k and the quaternion parameter ?k:

Ok ?k = ~- (44)

To simplify notation, we omit the functional dependence of r k on its argument ?k. Making the substitution in equation (42) we find expressions of the form (e.g. j = 1):

(r7, r7w7r~)(r6, r6w6r* ) ' " "(rl, rl Wl r*) = (1, 0) (45)

o r

where

(rTr6 • • • rl , H( r , w)) = (1, 0) (46)

n ( r , w) = rTw7r* q- rTr6w6r*r* -k . . . -k r7r6 .. . rl w l r* . . • r 6. r 7. (47)

Because the quaternions are not commutative, the LCE,

(rt, rl wl r*)(r7, r T w T r * ) " " (r2, r2w2r*) = (1, 0) (48)

is not equivalent to the LCE in equation (45). In all, there are 7 different forms of the LCEs depending on which subscript appears at the far left of the equation.

We divide the LCEs into two classes:

Rota t ion Equat ions: Those of the form

rk+7rk+6"" " rk+ I = 1 (49)

Translat ion Equat ions: Those of the form

Hk(r, w) r* * r* rk+7Wk+7 k+7"Jr rk+7rk+6Wk+6rk+6 k+7

. . . . . r* • * * = 0 (50) "~-" AI-rk+7rk+6 rk+lWk+l k+l "'rk+6rk+7

4.2. Convert ing the equations to the mult i -af f ine f o r m

Both classes of equations contribute to the multi-affine system. We begin with the rotation equations.

Consider the pure quaternion part of equation (49):

QU(rk+7rk+6"'" rk+ 1) = 0 (51)

Replacing each r m by its expression in equation (43), equation (51) becomes:

Qu ((cos (?k + ~)pk + 6 + sin(?k + 6)qk + 6 ) " " (COS(?k)pk + sin(?Dqk)) = 0 (52)

Note that equation (52) is homogeneous, of degree 7 in the variables cos(?j), sin(?j). Divide this equation by the product of cos(?t)cos(?:) . . , cos(?7) and define

zj = tan(?j) (53)

For each k, the result is a set of three real, multi-afline equations in the variables Zl . . . . . z7:

a + bzl + cz2 + • • • + gzl z2" • • z7 = 0 (54)

In all, the rotation equations contribute 21 equations of this form. Next, we consider the translation equations. If we multiply equation (50) on the right by the left

hand side of equation (49), the result is:

rk+7Wk+7rk+6"''rk+l-~-rk+Trk+6Wk+6"''rk+l~-''''~-rk+7rk+6"''rk+lWk+l-~-O (55)

Note that this expression will also be mutli-afline in the variables zj when divided by cos(?~) • • • cos(?7). This time there are four such equations for each k, giving rise to a total of 28 multi-affine equations.

Page 12: A new computational algorithm for 7R spatial mechanisms

34 Blaise Morton and Michael Elgersma

In fact, more than 28 multi-aftine equations can be generated from the translation equations. The reason is that every term of the sum in equation (55) has a left-factor of rk+ 7 . Dividing by this common factor, the result is another 28 multi-affine equations.

The reader is invited to compare the system of equations generated here with those in [3]. Like Duffy, we generate a system of polynomial equations in the tangents of the half-angles of the joints. From our perspective, these polynomial equations appear when the LCEs are lifted to the universal cover of the Euclidean group.

The multi-affine equations generated this way are not all independent. For computational purposes one would like to know the maximum number of independent equations that can be generated this way. Deriving that number theoretically from the mathematical construction is an interesting and important problem that we have not yet solved. Our method for skirting this problem is described in the next section.

Simplifications

Note that by choosing coordinates on each body such that

_v = _w--- -sin({) (56)

then choosing orthogonal complements so that

[v_, v z] = 1 [_w, _w ±] =

0

cos(~)sin(~) i l - sin(~)cos(~)

0 0

we get a simplified version of the rotation matrix in equation (10).

[ i 0 0 ] [ c.o2(~ ) sin(~) R(0)= cos(0) -sin(0) - s (()

sin(0) cos(0)

This simplifies the rotation quaternion in equation (43).

where

r(0) = cos(0/2)p_ + sin(0/2)q_

i]T (57)

(58)

(59)

p = cos((/2) - k sin(ff/2)

_q = i cos((/2) - j sin((/2) (60)

When multiplying the various components within the rotation and translation equations, the following identities are useful:

P(~2)P(~1) = P ( ~ + ~2) q(~2)q(~) = - P ( ~ 2 - (i)

P((2)q((,) = q((t + (2) q(~2)P(~) = q(~2 - (~) (61)

5. A D E G E N E R A T E E I G E N V A L U E P R O B L E M

In Section 4 we showed that the loop closure equations (LCEs) give rise to a system of multi-affine equations in the variables zj equal to the tangents of the half-angles of the joint rotation angles. For reasons that will soon be explained we write these equations in the form:

[Moo + zeMt0 + ZvMoI + z6z7MII]U_5(z5, z4, z3, z2, Zl) = 0 (62)

where _u~(zs, z4, z3, z2, zl ) is a 32 dimensional vector defined by:

[--] E [--] [-.,] [,] ~5 = ~ 4 ~--~ ~3 = _U2 = _Ul = (63) z5 -u4 g4 -U3 g3 -u2 z2 -ul zi

T h e express ions M u are 77 x 32 matr ices o f coeff ic ients .

Page 13: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 35

The 7R mechanism has one degree of freedom, let us pick z7 as a coordinate of the mechanism motion. For each fixed value of z7 we would like to determine how many different solutions are possible for the remaining values Zl '"z6. So, defining the matrices Mo and Ml by:

M0 = Moo + ZTM01 Ml = Mi0 + Z7Mll (64)

we consider the associated problem:

[M0 + z6 M, ]u s = _0 (65)

There are many more rows than the 32 columns in the matrices M0 and Mr, so we might hope to find a 32 × 32 submatrix M(26) of M 0 W z6MI having rank 32 for all but finitely many values of z6. Given such a matrix function, we could numerically solve the generalized eigenvalue problem:

M(z6)_us = _0 (66)

to obtain 32 values of z6 with their associated null-space vectors _us. If we scale _us so that its top entry is 1, the values of the other parameters zt . . . . . z5 could be read directly from appropriate rows of -us (i.e. rows 2, 3, 5, 9, 17). But this would lead to 32 solutions, while the actual number of solutions is 16 as shown in [8]. This issue was resolved when the first numerical example was computed. Let

M6(26) = go + 26M1 (67)

In the examples we have checked, the rank of M6(z6) is 30 for all but finitely many exceptional values of z 6. At the exceptional values the rank of Mr(zr) is less than 30. These exceptional values complicate the picture, but it appears they are not associated with solutions to the system of equations. The mathematical significnce of these special values can be explained using the theory of invariant factors and the Smith Decomposition (see [22]), but we choose not to delve into that theory here.

As mentioned at the end of the previous section, it would be nice to have a theoretical analysis of this system of equations telling how many independent relations should appear, but after trying many examples we simply chose to accept the rank-30 condition for z6 as a generic result. For lack of proof, we state this numerically computed fact as a conjecture:

CONJECTURE 1: For generic problem data, the Mr(zr) matrix is rank less than or equal to 30 for all values of z 6. The equation (65) has no solution us in the form of equations (63) at the exceptional values of z 6 where the rank is less than 30.

For generic examples, only some of the exceptional values of z6 where rank(Me(zr)) < 30 occur at z 6 = + x ~ - 1. We have found special examples (highly symmetric mechanisms) where the matrix e o + z 6 M l is always lower tank, but never one where the rank was higher than 30.

Given the result of this conjecture, we can compute the kernel of this low rank matrix. In the next sections, we will compute the kernel and use the structure of the kernel to find a new eigenvalue problem that is size 16 x 16.

6. R E D U C I N G T H E D I M E N S I O N OF T H E E I G E N V A L U E P R O B L E M

In Section 5 we showed how the loop closure equations could be transformed into a system of multi-affine equations (65). The matrix M6(z6)= Mo + z6M~ will now be assumed to be rank 30 for all values of z6. The problem is to find all solutions of equation (65) subject to this condition.

Since the matrix Mt(zt) has 32 columns and has rank 30, it has a 2-dimensional kernel. The kernel will also be a polynomial in z 6 [22]. Let X6(z6) be the 32 x 2 matrix polynomial kernel of M(z6) , so

g 6 ( z 6 ) X 6 ( z 6 ) ~- 0 for all values of z6 (68)

The matrix Xr(zr) can be written as a polynomial whose coefficients Xrj are 32 x 2 constant matrices.

L Xt(zt) = ~ X6jzJ6 (69)

j=0

Page 14: A new computational algorithm for 7R spatial mechanisms

36 Blaise Morton and Michael Eigersma

In a later section we will show how to directly compute the kernel of a polynomial matrix. In this section we can avoid computing the coefficients Xr.j by proceeding as follows. Let z 6 take on several distinct numerical values bj. Then

Mr(bj)Xr(b/) = 0 j = O, 1, 2 . . . . , L (70)

where Xr(bj) is the numerically computed kernel of the matrix Mr(bj). Using Lagrange interp- olation, we can change basis on the Xr(z6) polynomial.

L

I-I bk) k f O , k # L

L

I-I ( b t - b k ) k=O,k # L

= [X6(bL),..., X6(bo)]

L

,~ ~ (z6 -- bk ) = X X (bJ)k= "j

j=o I-] (b i - b k ) k = O,k # j

(71)

and recall from equations (63) that

-us = zs-u4

Using equations (76) and (77) in equation (75) gives:

0_ M¢o,U_ s [Ms.0, Ms.,] z

Define the 16 x 16 matrix Ms(zs) to be:

Ms(zs) -- [Ms.o + zsMs,t]

then equation (78) can be written as a (rank deficient) 16 x 16 eigenproblem.

Ms (zs)-u4 = 0

(77)

(78)

(79)

(80)

L

FI (Z--bk) k = 0 , k # 0

L

[-[ (bo-bk) k=0,k #0

If Mr(zr) had no other structure other than having 32 columns and being rank 30, the 32 x (2*(L + 1)) matrix [Xr(bL) . . . . . Xr(b0)] would be rank 32, for L >/15. However, numerical experimentation has led us to the following conjecture:

C O N J E C T U R E 2: For generic data, and L 1> 7, rank[Xr(bL) . . . . . Xr(b0)] = 16. Given the result of this conjecture, we can find a 16 x 32 constant matrix, M~o, that has the rank

16 matrix [Xr(bL) . . . . . Xr(b0) ] as its kernel.

Moon = [Xr(bL),-.., Xr(b0)] ~ (72)

Mco,[Xr(bL) . . . . . Xr(b0)] = 0 (73)

Combining equations (71) and (73) gives:

M c o n X r ( Z 6 ) = 0 (74)

So the constant matrix M~o~ has the same kernel as the polynomial matrix Mr(zr) for generic values of z6. Recall from equation (65) that _us is in the kernel of Mr(zr), so that is must also be in the kernel of M~o~.

O_ = Moon-us (75)

To get a 16 x 16 eigenproblem, define Ms.0 and Ms.L to be the left and right halves of Mco..

[Ms,o, Ms,L] = M¢on (76)

Page 15: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 37

Numerical experiments show that the 16 x 16 matrix Ms(zs) is rank 12 for generic values of zs.

CONJECTURE 3: For generic problem data, the Ms(z5) matrix is rank less than or equal to 12 for all values of zs. The equation (80) has no solution u4 in the form of equations (63) at the exceptional values of z5 where the rank is less than 12.

This means that Ms(zs) has a 4-dimensional kernel for generic values ofzs. Let Xs(zs) be a 16 x 4 matrix polynomial whose columns span the kernel of Ms(zs).

Ms(z5)Xs(zs) = 0 (81)

Since _u4 is in the kernel of Ms(zs), it must be of the form:

_U4(Z4, Z3,-72, ZI) = ,e~5 (ZS) ~ (82)

where _e is a 4-dimensional vector. In the next section, we will compute Xs(zs) and use it to form the final eigenproblem.

7. CALCULATING THE KERNEL OF A POLYNOMIAL MATRIX

A technique for constructing the kernel of a matrix polynomial such as M5 (Zs) is given in Ref. [22].

kernel[Ms (zs)] = )(5 (Zs)_C (83)

where _c is a vector of free coordinates on the kernel, and Xs(zs) is a matrix polynomial.

3 Xs(z,) = ~, X,.,z~ (84)

i=0

To determine the 16 × 4 )(5.; matrices, note that the polynomial equation:

Ms (z5))(5 (zs) = 0 (85)

is equivalent to setting each coefficient in the product polynomial polynomial to zero:

M, 5: 0 0 0 ]

] Ms, o Ms, i 0 0

0 M5,o Ms, 0

0 0 Ms,o Ms,,

0 0 0 Ms,o

X5'2 = 0 X[,

(86)

in the following equation:

Ms, t 0

Ms,0 M5,,

Ms.0 0

0 Fx , l

0 o

M~., LXs0j g5,o

CONJECTURE 4: For generic problem data, the polynomial degree of Xs(z5) is 2. Conjecture 3 and conjecture 4 are related. The fact that Xs(z5) can always be degree 2, instead

of degree 3, is related to the number of exceptional values of z5 that give rank (Ms(z5)) < 12. Details of this relationship can be found in [22].

Solving (87) for the Xsj coefficients then gives us the X~(zs) polynomial needed in (82).

(87)

Note that the above equation implicitly assumes the degree of Xs(z5) to be three. This gives the large banded matrix the proper dimensions to get a 4-dimensional kernel. Each [Ms.0, Ms j] submatrix is rank 12, so we expected the above large matrix to have 5"12 = 60 independent rows and 4"16 = 64 columns, giving a 6 4 - 60 = 4 dimensional kernel as required.

In fact, there must be additional structure to the Ms(zs) matrix because numerical experiments show that the large matrix in equation (86) has a much larger dimensional kernel. If we instead assume the degree of X5 (zs) to be two, we get a 4-dimensional kernel for the 64 x 48 banded matrix

Page 16: A new computational algorithm for 7R spatial mechanisms

38 Blaise Morton and Michael Elgersma

8. T H E F I N A L E I G E N V A L U E P R O B L E M

Equation (82) contains the new variables, c, however the variables (z~, z 2, z3) can be eliminated from equation (82). This can be done by finding a polynomial matrix, N(z4), that anihilates the left-hand side of equation (82):

N(z4)-u4(zl, z2, z3,z4) = 0 for all zl, z2, z3, z4 (88)

From equations (63), we see that

u_4=[ g3 ] LZ4 _u3 J

and _u3 is an 8-dimensional vector. We can choose N(z4) to be an 8 x 16 matrix, affine in z4:

N(z4) = No + z4N, (89)

where

No = [08, I8] Nt = [ - I 8 , 0 8 ] (90)

Multiplying equation (82) by N(z4) gives:

O=N(z4)Xs(zs)c=[NINo][Xs~z5) 0 1[-z4c1 (91) - - ' x s ( z s ) / L J

Since Xs(zs) is a 2nd order polynomial matrix, we can define the following 8 x 8 2nd order matrix:

j=0 Xs(zs) = [-xS'°p(zs)'x~'b°t(zs)] (92)

where Xs.top(Zs) is the top 8 rows of Xs(zs), and Xs.bot(zs) is the bottom 8 rows of Xs(zs). Then equation (91) can be written as:

0 = M,(zs )[z:_c] (93)

Equation (93) is an 8 x 8 second-order eigenproblem that can be embedded in a 16 × 16 first-order eigenproblem. This eigenproblem has 16 isolated solutions.

Fzsz4e-~ 0_=[(M4; %4"°)+zs(M4'2 0i)] [ zsc | (94)

Eigenvalues give z s while eigenvectors give the corresponding values of z4 and _c. Then zl, z2, and z3 can be obtained from equations (63) and (82) by dividing entries 2, 3, and 5 of _u4 by the 1 st entry of _u4. Finally, use equations (63) to obtain _us, then solve any row of equation (62) to obtain Z 6 •

9. COMPUTATIONAL COMPLEXITY

The matrices Moo, M~o, Mo~ and MT~ are computed once for each mechanism. Then for each value of the free joint angle, z7, we must repeat the following calculations:

(1) Assign Mo = Moo + z7Mol and MI = Ml0 + z7Ml! (2) For 8 random complex values of z6 = bk, k = 0-7, assign M6(bj) to be any 30 independent rows

of M0 + bk MI

Modifications to improve numerical accuracy:

(2a) Numerical experience shows that we can choose 30 independent rows by taking the 3 pure-quaternion components of the translation and shifted translation equations, starting the loop equations at any 5 of the 7 bodies. Choosing more than 30 rows cannot increase the rank above 30, however choosing more than 30 rows can prevent the rank from dropping below 30 for some, but not all, special values of z6. Choosing all 77 rows gives the fewest number of exceptional values

Page 17: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 39

of 26 (where the rank drops below 30), but is numerically expensive. We compromised by keeping 36 rows consisting of the 3 pure-quaternion components of the translation and shifted equations, starting the loop equations at any 6 of the 7 bodies.

(2b) Choosing 9 (instead of 8) values for z6 does not decrease the dimension of the kernel computed in step 4, but it significantly improves the accuracy of the numerically computed kernel. The dimension of the kernel is known to be 16, so the kernel consists of the last 16 right singular vectors associated with the 16 zero valued (to numerical precision) singular values of the matrix. (3) Compute the kernel of 9 36 x 32 rank 30 matrices: Xr(bk)= kernel[M6(bk) ] k = 0-8. (4) Compute the kernel of an 18 x 32 rank 16 matrix: Moon = (kernel[X6(bs) . . . . , Xr(b0)r]) x (5) Define Ms(zs) using the left and right halves of Mco n.

(6) Compute the kernel of a 64 × 48 matrix (rank 44)

[ x~.2]

xs,0_l

M5,1 0

= kernel M~,o Ms,~ 0 Ms,0 0 0

M5,1

Ms,o _]

(7) Define the 8 x 8 2nd-order matrix polynomial: Ma(zs)= [-Xs.top(Zs), Xs.bot(Zs)] (8) Compute the eigenvalues and eigenvectors of the 16 × 16 matrix:

I - inv(M4.2 )M4, I - - inv(M4,2 )M4,oq I8 08 J

The number of floating point operations (FLOPS) required in the above steps is dominated by the kernel computations in steps 3, 4, 6, and the eigensystem computations in step 8. Reference [23] contains a good explanation of the numerical algorithms and associated FLOP counts. References [24-26] contain a brief explanation of the algorithms as well as the actual code for computing kernels and eigenvalues of matrices. Reference [27] describes general eigensystem techniques, including the conversion of an N x N order L polynomial eigensystem into an LN x LN first-order eigensystem.

Computing the kernel of an n x m matrix takes approximately 4*n*m*m FLOPS. Computing the eigenvalues and eigenvectors of an n × n matrix takes approximately 8*n *n*n FLOPS. The cost of the dominant steps are:

(3) 9*[4*36*32*32] = 1,327,104 FLOPS (4) 4"18"32"32 = 73,728 FLOPS (6) 4*64*48*48 = 589,824 FLOPS (8) 8"16"16"16 = 32,768 FLOPS

The total number of FLOPS is approx. 2.2 million. A 100 MFLOP computer could perform these computations in 0.022 second for each new value of the independent joint angle, z7.

Note that in Ref. [28], eigensystem techniques were introduced to solve the system of equations developed in [14, 15]. The total FLOP count of that approach is most likely less than what we get, since our step 3 and step 6 are quite expensive.

10. E X A M P L E

An example 7R mechanism was used to validate the algorithm described in earlier sections. The parameters given below were chosen to give a mechanism that would have real values for all 16 solution of 0~ through 06 for some range of 07. The first example that we found having 16 real solutions had so much symmetry that the Ok vs 07 plot and the 07_ ~ vs 07 plots looked the same. We then perturbed the parameters describing the bodies and hinges to get six distinct plots for Ok vs 07. Below is the data describing the two hinges, _Vk and _w k on each of the seven bodies, and the vectors, _a k connecting hinge _v k to hinge _wk on body k. To the right of each data matrix is the earlier value that led to the symmetric example.

MMT 3H--D

Page 18: A new computational algorithm for 7R spatial mechanisms

40 Blaise Morton and Michael Elgersma

The first hinge vector, _vk, on body k is given by the k-th column of the V matrix:

V = O 0 0 0 0 0 ~ 0 0 0 0 0 0 0 0 0 0 0 .9998] 0 0 0 0 0

(95)

The second hinge vector, _wk, on body k is given by the k-th column of the W matrix;

[.72~8 .7452 .7317 .7179 .7038 .0182 i ] W= .6 9 .6669 .6816 .6961 .7104 0

0 0 0 0 .9998

.7071 .7071 .7071 .7071 .7071 0 i ]

.7071 .7071 .7071 .7071 .7071 0 0 0 0 0 0 1

(96)

where .7071 ,,~ cos(n/4) = sin(rt/4). The vector, _ak connecting hinge _Vk to hinge _w k on body k is given by the k-th column of the A

matrix.

L.o, .07.09.0 li ° ° ° ° ° il A = 0 0 0 0 0 0 ~ 0 0 0 0 0 1 2 1.1 2.1 1.2 1.1 1.1J 2 1 2 1 1

(97)

The quaternion pair for the k-th body is given by

rk (Ok/2) = COS(0k/2)P_k + sin(0k/2)q~ (98)

where Pk and qk are orthonormal. The Pk and qk unit quaternions for the k-th body are computed from _w k_ t and _v k as described in Section 3.2 (indices shifted by 1, so O k index shifted by 1 in Fig. 5).

Using the above data for V and W, we get the following P and Q matrices, were pk is the k-th column of P, and qk is the k-th column of Q.

p = 9287 oO 9341 oO 9305 oO 9268 oO 9230 oO il

0 .3709 .3569 .3663 .3756 .3848

I i .923900 .923900 .923900 .923900 .923900 ~]

0 .3827 .3827 .3827 .3827 .3827

and

Q = Ii ° .9287 .3809

0

0 0 0 0 .9341 .9305 .9268 .9230 .3569 .3663 .3756 .3848

0 0 0 0

0 0 0 0 .9239 .9239 .9239 .9239 .3827 .3827 .3827 .3827

0 0 0 0

0 0 1 .9239 0 .3827 0 0

where cos(n/8) ~ .9239 and sin(n/8) ~ .3827. Figure 5 shows Ok plotted vs 07 for k = 1-6.

(99)

o / .0~82

.9998 A (lOO)

Page 19: A new computational algorithm for 7R spatial mechanisms

3

2

1

0

-1

-2

-3

3

2

I

0

-1

-2

-3

3

2

1

0

-1

-2

-3

Algorithm for 7R spatial mechanism

7R Mechanism, theta(1) vs theta(7)

7R Mechanism, theta(2) vs theta(7)

i , , , . i

7R Mechanism, theta(3) vs theta(7)

:. :

0 0.2 0.4 0.6 0.8 1.0 1.2 1.d- 1.6 1.8 2.0 0

7R Mechanism, theta(6) vs theta(7)

7R Mechanism, theta(5) vs theta(7)

7R Mechanism, theta(4) vs theta(7)

i

0.2

41

0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0

Fig. 5. 7R mechanism solution set.

Improving numerical accuracy:

In Section 4.2, each equat ion containing

_rk(0k/2) ---- COS(0k/2)pk + sin(Ok/2)qk

was divided by CoS(Ok~2) giving

r_k(Ok/2) cos(0k/2) = P k + zk q~

(101)

(102)

where zk = tan(Ok~2).

Page 20: A new computational algorithm for 7R spatial mechanisms

42 Blaise Morton and Michael Elgersma

The plots in Fig. 5 were not generated with these variables. A problem arises when Ok g o e s

through ~t, since then tan(0k/2) goes through infinity. To avoid this problem we can instead let Zk = e i° where i = ~ - - 1 . This gives:

SO

1 + Zk i(1 -- Zk) CoS(Ok~Z) = 2 X / ~ k sin(Ok/Z ) = 2V/.~ (103)

2x/Zkrk(Ok/2 ) = (1 + Zk)P_k + i(1 -- Zk)_qk = (P_k + iq_k) + Zk(Pk -- iq_k) (lO4)

The only affect this has on the algorithms presented in earlier sections is that P_k and q_k are replaced by (P_k + iqk) and (P_k- iq_k).

11. S U M M A R Y

We have presented a new computational approach for analyzing the general I-DOF, 7R mechanism. This approach can yield accurate solutions, as shown in Section 10.

One significant contribution of our work is the result that the loop-closure equations become multiaffine once the quaternion-pair notation is adopted. While the 7R mechanism has only revolute joints, we expect these same coordinates will simplify the analysis of other mechanisms having revolute, prismatic, cylindrical, and ball joints.

A second significant contribution is the set of techniques for solving systems of multi-affine equations using linear algebra and eigensystem computations.

In the process of our analysis we identified several mathematical points that require closer examination. These points were identified and stated in the text as conjectures:

C O N J E C T U R E 1 (Section 5): For generic problem data, the M6(z6) matrix is rank less than or equal to 30 for all values of z6. The equation (65) has no solution u5 in the form of equations (63) at the exceptional values of z6 where the rank is less than 30. C O N J E C T U R E 2 (Section 6): For generic data, and L >/7, rank[X6(bL),.,., X6(b0)] = 16. C O N J E C T U R E 3 (Section 6): For generic problem data, the Ms(zs) matrix is rank less than or equal to 12 for all values of zs. The equation (80) has no solution u4 in the form of equations (63) at the exceptional values of z5 where the rank is less than 12. C O N J E C T U R E 4 (Section 7): For generic problem data, the polynomial degree of Xs(zs) is 2.

We believe these conjectures because they hold for the examples we have looked at. In fact, they should all be proved or replaced by corresponding correct statements before this technique for solving the 7R problem is considered complete. An important part of addressing these conjectures is to state explicitly what mathematical conditions on the mechanism geometry need be imposed to make the problem data generic.

R E F E R E N C E S

1. F. Freudenstein, Mech. Mach. Theory 8, 151-161 (1973). 2. B. Roth, J. Rastegar and V. Scheinman, First CISM-IFToMM Syrup. Theory and Practice of Robots and Manipulators,

Vol. 1, pp. 93-113, Udine (1974). 3. J. Duffy, Analysis of Mechanisms and Robot Manipulators. Wiley (1980). 4. J. Duffy and C. Crane, Mech. Mach. Theory 15, 153-169 (1980). 5. L. W. Tsai and A. P. Morgan, ASME J. Mech. Transm. Auto. Des. 107, 189-200 (1985). 6. R. G. Selfridge, Mech. Mach. Theory 24, 1-8 (1989). 7. K. H. Hunt, Kinematic Geometry of Mechanisms. Oxford Univ. Press (1990). 8. H.-Y. Lee (Li) and C.-G. Liang, Mech. Mach. Theory 22, 1-11 (1987). 9. H.-Y. Lee (Li) and C.-G. Liang, Proc. of the 1FToMM 7th Worm Congress on the Theory of Machines and Mechanisms,

Sevilla, Spain, Vol. 1, pp. 223-226 (1987). 10. H.-Y. Lee (Li) and C.-G. Liang, Mech. Mach. Theory. 23, 209-217 (1988). 11. H.-Y. Lee (Li) and C.-G. Liang, Mech. Mach. Theory, 23, 219-226 (1988). Also presented at the 4th National Conf.

on Mechanisms, Yantai, Shandong Province, China (1986). 12. C.-G. Liang, H.-Y. Lee (Li) and Q.-Z. Liao, Analysis of Spatial Linkages and Robotic Mechanisms. Publishing House

of Beijing University of Posts and Communications, Beijing, China (1988). 13. Q.-Z. Liao and C.-G. Liang, Analysis of Spatial Linkages and Robot Mechanisms. Publishing House of Beijing

University of Posts and Communications, Beijing, China (1988). Also Chin. J. Mech. Engng, No. 3 (1986). 14. M. Raghavan and B. Roth, Proc. of the 5th Int. Syrup. on Robotics Research (H. Miura and S. Arimoto, eds.). MIT

Press, Cambridge (1990).

Page 21: A new computational algorithm for 7R spatial mechanisms

Algorithm for 7R spatial mechanism 43

15. M. Raghavan and B. Roth, Proc. o f the 21 Biennial ASME Mechanisms Conf. Chicago, DE-Vol. 25, Mechanism Synthesis and Analysis, pp. 59-65 (1990).

16. M. Hiller and C. Woernle, Proc. of the IEEE Int. Conf. on Robotics and Automation, Philadelphia, pp. 846-851 (1988). 17. Hong-You Lee and C. F. Reinholtz, Inverse Kinematics of Serial-Chain Manipulators. Mechanical Engineering

Department, Virginia Polytechnic Institute and State University, Blacksburg, Virginia 24061-0238 (1990). Based on the first author's Ph.D. dissertation, University of Duisburg, Germany.

18. H.-Y. Lee (Li), C. Woernle and M. Hiller, ASME J. o f Mechanical Design 113, 481-486 (1991). Also Proc. o f the 21st Biennial ASME Mechanisms Conf., Chicago, De-Vol. 25, Mechanism Synthesis and Analysis, pp. 45-51 (1990).

19. D. Kohli and M. Osvatic, Proc. o f the 22rid Biennial ASME Mechanisms Conf., Phoenix, DE-Vol. 45, Robotics, Spatial Mechanisms, and Mechanical Systems, pp. 129-137 (1992).

20. D. Kohli and M. Osvatic, Proc. o f the 22rid Biennial ASME Mechanisms Conf., Phoenix, DE-Vol. 45, Robotics, Spatial Mechanisms, and Mechanical Systems, pp. 619-627 (1992).

21. P. Du Val, Homographies Quaternions and Rotations. Oxford Mathematical Monographs, Clarendon Press, Oxford (1964).

22. J. H. M. Wedderburn, Lectures on Matrices. Dover (1964). 23. G. H. Golub and C. F. Van Loan, Matrix Computations. The Johns Hopkins Univ. Press, Baltimore, MA (1983). 24, B. T. Smith, J. M. Boyle, Y. Ikebe, V. C. Klema and C. B, Moler, Matrix Eigensystems Routines: EISPACK Guide,

2nd edition. Springer, New York (1970). 25. J. Dongarra, J. R. Bunch, C. B. Moler and G. W. Stewart, LINPACK User's Guide. SIAM Publications, Philadelphia

(1978). 26. C. B. Moler, "MATLAB User's Guide," Technical Report CS81-1, Department of Computer Science, University of

Mexico, Albuquerque, NM 87131 (1980). 27. J. H. Wilkinson, The Algebraic Eigenvalue Problem. Oxford Univ. Press, New York (1965). 28. Dinesh Manocha and J. F. Canny, IEEE Trans. Robotics and Automation 10, 648-657 (1994).