Several legs, one platform

Six legs and a square root

A Gough–Stewart platform's inverse problem is one subtraction and one square root per leg, computed six times without any leg consulting another. Its forward problem has forty solutions. That gap is the whole design, and it is why flight simulators are built this way and robot arms are not.

Assumes The easy problem and the hard one change places and Every motion is a screw.

Six legs of adjustable length between a fixed base and a moving platform, each pinned at both ends so it can only push or pull along itself. Six legs, six lengths, six freedoms. It is the mechanism under every flight simulator, most motion platforms, a good deal of precision positioning equipment, and — under a different name and at a different scale — the supports of several large telescope mirrors.

It is also the cleanest example there is of the reversal the field opened with, because both directions can be stated in one sentence each and the sentences are not remotely comparable.

Six legs, six numbersA Gough–Stewart platform at (0.00, 0.00, 2.40) with a rotation vector of (0.00, 0.00, 0.15). The six leg lengths run from 3.077 to 3.263, and every one of them was computed from the pose by a single subtraction and a square root, with no leg consulting another. Going the other way — six lengths in, one pose out — takes an iterative solve and does not have one answer. The six leg lines span a screw system of order 6; the smallest singular value of the six is 0.0316, which is how far this pose is from a configuration where they become dependent and the platform stops being controllable.legs 3.077 to 3.263σₘᵢₙ 0.0316
Fig. 1 A Gough–Stewart platform, drawn from a solved pose. The six legs run from paired anchors on the base to paired anchors on the platform, rotated between them so the leg lines spread rather than stack. Drag the yaw and watch the lengths: every one is a subtraction and a square root from the pose.

The inverse problem, in full

Given the platform’s pose — a position and an orientation, six numbers — where is each leg’s top end? Apply the pose’s transform to that leg’s platform anchor. How long is the leg? The distance from there to its base anchor.

i=  bi(p+Rai)  \ell_i = \bigl\| \; \mathbf{b}_i - \left(\mathbf{p} + R\,\mathbf{a}_i\right) \; \bigr\|

That is the whole computation, done six times, with no leg consulting another and no iteration anywhere. At the platform’s home pose the six lengths come out as 2.977, 3.156, 2.977, 3.156, 2.977 and 3.156 — three pairs, because the anchors are arranged in three pairs and the home pose is symmetric.

Six subtractions and six square roots. This is why the machine is built: a controller’s inner loop asks exactly this question, thousands of times a second, and the answer costs almost nothing.

The forward problem, and what this site can honestly say about it

Given the six lengths, where is the platform?

Six equations, six unknowns, all coupled, and no reduction of the kind that collapsed the planar case. The general Gough–Stewart platform’s forward problem is known to have forty solutions in the complex numbers — a result from elimination theory, obtained by people who did that work, not by anything on this site — and how many of those are real depends on the platform and the lengths.

What this site does is start Newton from a spread of poses and collect the distinct real solutions it lands on. From 600 starts at the home lengths, 595 converge and they land on sixteen distinct platform poses.

Sixteen is a lower bound found by search. It is labelled as one everywhere it appears, and the distinction is not decoration. A site whose habit is to compute rather than assert should not print “40” beside a picture of a machine it found sixteen assemblies of, and it should not present sixteen as though the search were exhaustive either. The methods that actually compute forty are elimination-theoretic and are not here.

The comparison with the planar case is the point. There, fixing one parameter collapsed the problem to a scalar equation that could be scanned exhaustively at a stated resolution. Here there is no parameter whose fixing collapses anything: fix the platform’s height and five unknowns remain, all still coupled. The reduction was not a clever trick that could be pushed further. It was a property of three legs in a plane.

Six legs, six numbersA Gough–Stewart platform at (0.00, 0.00, 2.70) with a rotation vector of (0.18, -0.12, 0.00). The six leg lengths run from 3.091 to 3.568, and every one of them was computed from the pose by a single subtraction and a square root, with no leg consulting another. Going the other way — six lengths in, one pose out — takes an iterative solve and does not have one answer. The six leg lines span a screw system of order 6; the smallest singular value of the six is 0.0187, which is how far this pose is from a configuration where they become dependent and the platform stops being controllable.legs 3.091 to 3.568σₘᵢₙ 0.0187
Fig. 2 The same platform tilted and raised. The six lengths have all changed and each was computed independently; going the other way — these six numbers back to this pose — takes an iterative solve that converged here in six Newton iterations from the home pose, and would have found a different pose from a different start.

The round trip, and what it does and does not show

assertGoughRoundTrips takes four poses — home, translated, yawed, and tilted-and-raised — computes the six lengths, and solves back from the home pose. All four recover to 1.4 × 10⁻¹⁴, measured as the worst displacement of any of the six platform anchors, in at most six Newton iterations.

Against no iterations at all in the other direction, which is the number the assertion exists to put beside the first one. The asymmetry is the claim; the agreement is only the evidence that both sides were computed correctly.

Comparing the anchors rather than the six pose numbers is deliberate and it fixes a real problem. The orientation is carried as a rotation vector — an axis scaled by the angle — and that representation is not unique: a turn of θ about û and a turn of θ − 2π about −û are the same rotation with different coordinates. Two identical assemblies can therefore carry different pose numbers, and a comparison on those numbers counts one assembly twice. Comparing where the six anchors ended up asks about the platform instead of about the parameterisation.

The same fix is why assemblyModes deduplicates on anchor positions, and the size of the difference is worth putting on the page. Deduplicating the same 600 starts on the six pose numbers reports 148 assemblies. Deduplicating them on where the six platform anchors ended up reports 16.

That is not a rounding difference. It is the same sixteen platforms, found from many starts, arriving in a hundred and forty-eight different sets of coordinates — because Newton lands on whatever rotation-vector representative its start led towards, and a rotation has infinitely many.

It is also the worst shape of overcount available: it grows with the number of starts. More starts find more representatives of the same assemblies, so a more thorough search reports more solutions, and the number looks like it is converging on something from below. kincheck carries that version and requires it to fail.

A numerical Jacobian, on purpose

The forward solve uses a central-difference Jacobian rather than an analytic one, and the choice is worth defending because this site normally does the opposite.

The analytic derivative of a leg length with respect to a rotation vector is a page of algebra involving the derivative of the exponential map, and its errors do not announce themselves — a wrong Jacobian makes Newton converge slowly rather than incorrectly, which looks exactly like a hard problem. Six by six at a central difference costs twelve evaluations of six square roots, which is nothing.

The site’s usual rule — differentiate the constraints analytically, because the same Jacobian solves the velocities and measures the mobility — applies where the Jacobian is also the screw system. Here it is not: the screw system is available directly as the six leg lines, computed in closed form and used for exactly that purpose in the next section. The numerical Jacobian is a solver detail with no geometric role, and treating it as one is what makes the choice defensible rather than lazy.

Six legs, six numbersA Gough–Stewart platform at (0.00, 0.00, 2.20) with a rotation vector of (0.10, 0.10, 0.10). The six leg lengths run from 2.787 to 3.146, and every one of them was computed from the pose by a single subtraction and a square root, with no leg consulting another. Going the other way — six lengths in, one pose out — takes an iterative solve and does not have one answer. The six leg lines span a screw system of order 6; the smallest singular value of the six is 0.0231, which is how far this pose is from a configuration where they become dependent and the platform stops being controllable.legs 2.787 to 3.146σₘᵢₙ 0.0231
Fig. 3 Lowered and tilted about all three axes at once. The rotation is carried as a rotation vector rather than as three Euler angles: no gimbal lock, no convention to get wrong, and the same object the spatial solver’s logarithm already produces. It is also the representation that made the assembly-mode deduplication need care, because it is not unique.
Six legs, six numbersA Gough–Stewart platform at (0.00, 0.00, 2.90) with a rotation vector of (-0.15, 0.20, 0.00). The six leg lengths run from 3.168 to 3.759, and every one of them was computed from the pose by a single subtraction and a square root, with no leg consulting another. Going the other way — six lengths in, one pose out — takes an iterative solve and does not have one answer. The six leg lines span a screw system of order 6; the smallest singular value of the six is 0.0172, which is how far this pose is from a configuration where they become dependent and the platform stops being controllable.legs 3.168 to 3.759σₘᵢₙ 0.0172
Fig. 4 A fourth pose, higher and tilted the other way. Each of these is six leg lengths computed by one subtraction and one square root, and the round trip back from those six numbers is the part that has no closed form.

The six lines, which are the screw system

The leg lines are where this connects back to the screw field, and the connection is unusually direct.

A leg pinned at both ends transmits a force along its own line and nothing else. So the wrench it applies to the platform is a zero-pitch screw whose axis is the leg:

$i=[s^i  ;  Pi×s^i]\$_i = \left[\,\hat{s}_i \; ; \; \mathbf{P}_i \times \hat{s}_i\,\right]

Six of those, and they are simultaneously the platform’s constraint system and the rows of the inverse Jacobian — because the rate at which leg i extends is exactly the reciprocal product of its own screw with the platform’s twist. One set of six lines doing both jobs.

The platform is controllable exactly when the six are linearly independent. A direct singularity is a configuration where they are not, which for six lines in space means they lie on a linear complex — the six-dimensional version of three planar lines meeting at a point.

At the home pose the six singular values of the leg screws are 1.507, 1.507, 1.205, 0.045, 0.036 and 0.036. The order is six, so the platform is controllable — and the smallest is 0.036, which says the sixth direction is held about forty times less firmly than the first. That is a conditioning statement, not a singularity, and it is the number a designer of one of these actually tunes: the anchor spread angles are chosen to keep that last singular value up.

What universal joint carries. The mechanism at 40°, with the wrench system reciprocal to its joint screws drawn on it. It carries three forces: a force is drawn as its line of action, because that is all a force of zero pitch is, and a couple as a ring about its direction, because a couple has no line of action at all and acts the same about every point. Everything here comes from the 3-dimensional screw system the joints span; the wrenches are its orthogonal complement under the reciprocal product.
Fig. 5 The same idea one field back. A universal joint’s constraint system is three pure forces through its centre, computed as the reciprocal of its joint screws — where the platform’s is six pure forces along its legs, available directly because a two-pinned leg can carry nothing else. The machinery is identical; only the route to the six-vectors differs.
Six legs, six numbersA Gough–Stewart platform at (0.40, -0.25, 2.40) with a rotation vector of (0.00, 0.00, -0.20). The six leg lengths run from 2.634 to 3.247, and every one of them was computed from the pose by a single subtraction and a square root, with no leg consulting another. Going the other way — six lengths in, one pose out — takes an iterative solve and does not have one answer. The six leg lines span a screw system of order 6; the smallest singular value of the six is 0.0356, which is how far this pose is from a configuration where they become dependent and the platform stops being controllable.legs 2.634 to 3.247σₘᵢₙ 0.0356
Fig. 6 Translated and yawed the other way. The six-line screw system is different at every pose, and the smallest of its six singular values is what says how well the platform is held — 0.036 at home, and it falls as the platform moves towards a configuration where the six lines become dependent.

Gough’s tyre rig, and why the name has two halves

The mechanism is usually called a Stewart platform and usually should not be. Gough built one in 1954 to test tyres — a rig that could apply an arbitrary combination of load and orientation to a wheel, which is exactly what six legs and six freedoms buys — and it was in use for years before Stewart’s 1965 paper proposed a related six-legged arrangement for a flight simulator.

The two are not the same mechanism, which is part of why the naming settled badly. Stewart’s design has its legs arranged differently; the thing everyone builds is Gough’s. The compromise “Gough–Stewart” is what most of the literature now uses and is what this site uses.

The history is worth a paragraph because it explains the machine’s shape. A tyre rig needs to push hard in an arbitrary direction and does not need to reach anywhere — the wheel is where the wheel is. That is precisely the trade the field’s opening essay describes: stiffness bought at the cost of workspace, which is a bargain for a test rig and a poor one for a general-purpose arm. The mechanism was designed for the application whose requirements match its weaknesses, and every later application of it has the same shape — simulators, positioners, mirror supports — all of them things that push rather than reach.

Why six legs rather than more or fewer

Six is not a design choice with alternatives. It is the number of freedoms a rigid body has, and each leg of this kind removes exactly one.

Fewer than six and the platform is not fully constrained: five legs leave one freedom uncontrolled, which is a mechanism rather than a positioner. That is not always wrong — several useful machines are built with three or four legs and accept fewer than six controlled freedoms — but it is a different machine.

More than six and the mechanism is overconstrained, in exactly the sense the last field made precise: the seventh leg’s constraint is already imposed by the other six, so ν is one, and the seventh leg has to be exactly the right length or the platform is loaded against itself. That is done in practice — redundant actuation buys stiffness and helps with singularities — and it buys them at the cost of needing the legs to agree, which is the standing price of overconstraint.

So six is the number at which the platform is exactly determined, with no redundancy and no freedom left over. It is the one count in this entire site where the naive arithmetic is simply correct.

Why the anchors are paired

The base anchors are not spread evenly round a circle, and neither are the platform’s. They sit in three pairs, and the platform’s pairs are rotated 60° from the base’s. That arrangement has a name — the 6-6, or the “3-3 with split anchors” — and it is a design decision worth unpacking, because it is where the abstract screw argument becomes a drawing.

Six legs evenly spaced would give six leg lines that are nearly parallel and nearly evenly distributed, and their Plücker coordinates would be close to dependent. The platform would be poorly held in at least one direction, and the smallest singular value would be small everywhere rather than at particular poses.

Pairing them spreads the lines. Each pair forms a shallow V, and the three Vs pointing different ways is what gives the six lines their spread. The measurable consequence is the singular-value spectrum: 1.507, 1.507, 1.205, 0.045, 0.036, 0.036 at the home pose. The three large values are the three that hold the platform against translation, and the three small ones hold it against rotation — which is the general shape for any platform much wider than it is tall, and the reason a simulator’s platform is close to the size of its base.

A designer of one of these is tuning the two spread angles, the ratio of the two radii and the height, against that last singular value across the intended envelope. That is a numerical optimisation over four parameters, and every evaluation of it is the six-line computation above.

Where the machine’s limits actually are

Three, and they are not the ones the six-square-root sentence suggests.

Leg stroke. Each leg has a minimum and maximum length, and the reachable set is the intersection of six such conditions in six dimensions. It is not a shape anyone draws; it is checked pose by pose.

Joint angle. The pin at each end has a limited cone. This bites long before the leg stroke does on most designs and is the reason the anchors are arranged in pairs rather than evenly — the pairing keeps the leg lines from having to swing far.

Conditioning. The last singular value going small, before it goes to zero. A platform’s usable envelope is bounded by a conditioning threshold, and that boundary is inside the stroke-limited one.

None of those is visible in the inverse computation. Six square roots always return six numbers, and whether those numbers are lengths a real leg can be is a separate question the arithmetic does not ask.

Three legs, one platformA 3-RRR planar parallel mechanism at (0.00, 0.00) turned 0.0°, elbows up/up/up. The three actuator angles were computed one leg at a time and independently, which is what makes this direction cheap. The dashed lines extend each leg's second link: those are the three forces the legs can transmit to the platform, and the mechanism is controllable exactly while they stay independent. Here they miss one another by 0.520, and the smallest singular value of the three is 0.9000. At this position the platform can be turned through 206° in all before a leg runs out of reach.σₘᵢₙ 0.9000the three leg lines miss by 0.520
Fig. 7 The planar case at its home pose, for the comparison the whole essay turns on. Three legs, three freedoms, three constraint lines — and a forward problem that reduces to one scalar equation and can be scanned exhaustively. Add three dimensions and three legs and the reduction has no counterpart; that is the difference between counting six assemblies and reporting sixteen as a lower bound.

The lower bound, and what would move it

Sixteen from 600 starts, with 595 of the 600 converging. Two things about that number are worth stating so it is read correctly.

Nearly every start converged. That is not evidence of thoroughness; it is evidence that the basins are large and that most starts land in a handful of them. A method whose starts all converge is a method that is finding the easy solutions repeatedly, and a search that reported “595 of 600 converged” as though that were a coverage figure would be reporting the wrong statistic entirely.

More starts would probably find more. Nothing here bounds how many were missed. The honest reading is that sixteen real assemblies certainly exist at these lengths, that the theoretical ceiling is forty complex solutions of which some subset is real, and that the gap between sixteen and whatever the real count is has not been measured.

What would close it is a different method — a homotopy continuation from a system whose solutions are known, or an elimination to a single univariate polynomial whose roots can be counted. Both are standard and neither is on this site. Recording that the gap exists is more useful than a number that implies it does not.

What this site does not build

The six-legged platform here is a kinematic object: anchors, lengths, poses, screws. What it is not is a structure, and the difference is where the machine’s real behaviour lives.

The reason anyone builds one is stiffness, and stiffness is a statement about how much the platform moves under load — which needs the legs’ axial stiffness and the joints’ compliance, neither of which is kinematics. This site can say that the six leg screws span six dimensions at a pose and how nearly they fail to; it cannot say what the platform’s deflection under a given wrench is, because that requires the legs to be springs rather than lines.

That boundary is the same one the cam field keeps and the same one the transmission angle keeps: the geometry of force transmission is here, and what the metal does about it is not. It is worth restating in this field specifically, because a smallest-singular-value plot looks a great deal like a stiffness map and is not one.

There is a consequence of the inverse problem’s shape that decides what these machines can be used for, and it is worth stating because it is not about geometry at all. Six independent square roots, with no leg consulting another, is a computation with no shared state and no ordering: the six can be evaluated at the same time, on six processors or six lanes of one, and the answer’s latency is the latency of a single subtraction and square root. Compare a serial arm, whose inverse problem is a sequence — find the wrist centre, then the base angles, then the elbow, then decompose the rotation — with every step depending on the one before. That is the real reason motion platforms are built this way. A flight simulator’s inner loop runs at hundreds of hertz with a hard deadline, and a controller that must compute six leg lengths per cycle can do it in constant time with no branching and no iteration. The forty solutions of the forward problem never enter the loop, because the loop only ever goes the easy way — which is the same asymmetry the field opened with, cashed out as a latency rather than as a difficulty.

What this makes readable

Essays that name this one as a prerequisite.

About the same objects

Not linked from either essay — found by the objects both name.

What links here

The 8 of 14 essays linking to this one that name the most of the same objects.

The objects this essay names

Each one links to every other essay that touches it.

ConditioningConstraintDirect singularityForward kinematicsInverse kinematicsJacobianParallel mechanismPlatformScrewScrew systemthe Gough–Stewart platformStroke