From: dblancha@atl.ge.com (Dave Blanchard) Newsgroups: sci.math Subject: Tricky Simulator Question Date: 01 Dec 1994 23:28:46 GMT Tricky Flight Simulator Geometry I have a tricky flight simulator question. Actually it's a tricky geometry question concerning a flight simulator. Now common, these six legged beasties began showing up in the early '70 at NASA JSC and elsewhere. The design features a cab attached to a base by hydraulic cylinders. The cab has three attach points arranged in an equilateral triangle. The base also has three attach points arranged in an equilatreal triangle. The cab "triangle" is rotated sixty degrees in the horizontal plane with respect to the base "triangle". In other words, from a top-down perspective, each attach point on the cab is equidistant from two base attach points. Each "cab" attach point is connected to its two neighboring base attach points by a hydraulic cylinder. All connections are angularly unrestricted. I believe that in the detent position the cylinder pairs, from a side view, form equilateral triangles with the floor. It is claimed that: This configuration provides full six degree-of-freedom motion. Any cylinder can be moved independently of the others. My questions are: Are the above claims true? What are the transformations which relate the individual extensions on all six cylinders to the platform x,y,z phi,psi,theta? Given a *desired* x,y,z phi,psi,theta for the platform, what (z1 z2 z3 z4 z5 z6) cylinder displacements accomplish this? -- \_ \_ \_ \_ David C Blanchard \_ \_ \_ \_ Martin Marietta Labs - Moorestown \_ \_\_\_ \_\_\_ \_\_\_ \_ dblancha@atl.ge.com 300 Route 38, Bldg. 145-2 \_ \_ \_ \_ \_ \_ \_ Voice: 609-866-7007 Moorestown, NJ 08057 \_ \_\_\_ \_\_\_ \_\_\_ \_ Fax: 609-866-6668 ============================================================================== From: rusin@washington.math.niu.edu (Dave Rusin) Newsgroups: sci.math Subject: Re: Tricky Simulator Question Date: 2 Dec 1994 19:22:19 GMT In article , Dave Blanchard wrote: >Tricky Flight Simulator Geometry [two unit equilateral triangles in R^3 with 6 line segments between them, each vertex of a triangle being the endpoint of two line segments. The top triangle moves and the 6 line segments change lengths and directions] >It is claimed that: > This configuration provides full six degree-of-freedom motion. Yes. > Any cylinder can be moved independently of the others. Yes and no: the length of any cylinder can be changed independently of the lengths of the others, although of course the directions of the other 5 will in general have to change. Moreover, there are limitations on the length of any one cylinder due to the triangle inequality, and due to the fact that different cylinders can't cross. But you knew all that when you asked this question, right? :-) >My questions are: >Are the above claims true? >What are the transformations which relate the individual extensions on >all six cylinders to the platform x,y,z phi,psi,theta? > >Given a *desired* x,y,z phi,psi,theta for the platform, what >(z1 z2 z3 z4 z5 z6) cylinder displacements accomplish this? I'm not quite sure what your variables represent, but I can tell you how to solve the second and leave it to you to invert the equations to solve the first. Undoubtedly there is some geometric conservation law I'm forgetting here, so I'll just get my hands dirty with cartesian coordinates. I guess I'd set the lower, fixed triangle at points (x, y, -1) where the vertices have x, y coordinates (1,0), (-.5, sqrt(3)/2), (-.5, -sqrt(3)/2). I'd begin with the upper triangle spanned by the vertices (x,y,0) with (x,y) being the other 6th roots of unity ( (-1,0), etc.) . Note that the center of mass is at the origin. Apply rotations thru any angles around the coordinate axes -- these are the motions which preserve the center of mass -- and then a translation of the center of mass (which also translates the vertices). These operations can be accomplished on all 3 vertices of the moving triangle at once: multiply the matrix having the coordinates of the vertices in the columns by rotation matrices (on the left) -- that is, matrices like cos(h) sin(h) 0 -sin(h) cos(h) 0 0 0 1 first with the 1 in the lower right, then in the middle, then in the upper left. Then add any vector (x1,y1,z1) to your answer to represent the translation. After you have the coordinates of the points, you need only compute the six distances between pairs that represent the lengths of the cylinders. This will express the z's in terms of the other 6 variables. I will spare you all the ugliness since I'd want to know first just what your input variables really are (and since I'm expecting someone to jump in with some geometric construction that will make this look terribly pedestrian and ugly). Inverting to find the theta's etc. in terms of the z's looks even less inviting, although given your application I note that it could be done numerically and locally (that is, you probably want to study the effect of an incremental change in z rather than just jump in with a random choice of z's). In this case I would use differentials to estimate the change in position. By the inverse function theorem, the derivative of the thetas (etc) w r t the z's is the inverse of the derivative the other way 'round. You could use Newton's method to improve your accuracy by iterating this process. Well, maybe I oughtn't be so pessimistic. Given any length z you have pinned down the position of the moving point to which it is attached enough to say that this point lies on a certain sphere. Given the length of the other cylinder attached to it, you have the point to within a circle. You could for example easily parameterize that set of points with an angle theta. Do likewise for the other two moving points, then determine the necessary theta's with the equations that the points on the moving triangle need to stay one unit apart. Then you know where the vertices are. You could work back to the other 6 variables by first computing the center of mass, moving it back to the origin, then rotate (e.g. first rotate the normal vector back to the z axis, then rotate around the z axis). I can probably help you work out the details if you'd like; email me. If I may address the theorists in the audience now, I would like to point out that there are really three 6-dimensional sets involved. We have the set of motions in R^3 (SO(3).R^3, the semidirect product of Lie groups), the set of unit equilateral triangles in R^3 (a certain 6 dimensional variety in (R^3)^3 = R^9 given simply by the equations dist(pi, pj)^2=1), and the set of lengths of the cylinders (an open (?) set in R^6). I described above the map from the first set to the second, and used the obvious map from the second to the third. (Well, I guess I described a map starting on (S^1)^3 x R^3.) I know what the first space is topologically -- it's an open manifold, nontrivial homotopy groups, etc. It seems to me the parameterization I gave establishes a diffeomorphism with the second set, though offhand I'm not even sure which derivatives to use to show that this second set is a _non-singular_ variety. Finally, I indicated at least the idea of an inverse to the map between the second and third sets, suggesting that these, too, are homeomorphic. HOWEVER, it seems that a fourth 6-dimensional set is involved: from the second or third sets, we should exclude those points which imply that some pair of cylinders would have to cross. It seems to me that (the connected components of) this set are contractible, or at least simply connected, based on physical intuition (you can turn the triangle over and return it to its position but not if you forbid the line segments to cross). I'm ordinarily pretty handy with geometric visualization, but I can't seem to see easily the subset of, say, SO(3).R^3 which remains after you drop this subset (presumably a submanifold). I'm not even sure of the inequalities needed to describe this open subset of (the third subset in) R^6. dave ============================================================================== From: dblancha@hannibal.atl.ge.com (Dave Blanchard) Subject: Simulator Question To: rusin@washington.math.niu.edu Date: Fri, 9 Dec 1994 10:53:14 -0500 (EST) Thank you for your extensive reply to my simulator question. I realized when I read your response that the "harder" question of mapping the actuator displacements to the platform angles and translations is *not* the one that must be solved for practical applications. BTH, I have since found out that this is an example of a VGT (variable geometry truss) and this one in particular is sometimes called a Stewart platform. It was first described in 1966 by D. Stewart in a series of articles which I am in the process of tracking down. These may be re-emerging in a new application -- automatic milling machines. Traditional machines allow only xyz translation of the cutting bit. This seriously restricts the geometries which can be produced. With either the work (or the cutting bit) mounted on a VGT platform, all the loads are axial (by definition) and versatile yet stiff support is theoretically possible. I think the procedure you outlined is the way to go... select a desired cab (tool) position... calculate the new cartesion coords of the cab (tool) attach points with the matrix you describe and from there find the actuator lengths using simple vector magnitudes. Thank you for your support! -dave blanchard