Out of the plane

Six freedoms, not three

Every mechanism on this site so far has been flat, and flatness is not a simplification made for teaching — it is a special case that hides the most interesting thing constraint counting does, which is get the answer wrong about mechanisms that are in daily use.

Assumes What decides whether it moves and Counting and measuring mobility.

Everything on this site up to here has been flat. Bars in a plane, pins whose axes all point the same way, a body with three freedoms and a pin that removes two of them. That is not a teaching simplification: the overwhelming majority of mechanisms people meet really are planar, and the planar count is the one a designer uses.

But it hides something. Grübler’s formula gets a working mechanism wrong exactly once in the planar essays, and it takes a contrived arrangement of three parallel bars to make it happen. In space the failure is not contrived. It is the normal case, and the mechanisms it applies to are ones most readers have used today.

Kutzbach's count against the measured mobility. Five closed loops of revolute joints. The count is 6(L − 1) − 5j, a statement about how many links and joints there are; the measurement is the number of joints minus the rank of the loop's screw system, which knows only where the axes point. They disagree for four of the five, and the one they agree on is the generic seven-joint loop — so the formula is not broken, it is blind to the special geometry that makes the other four work. The universal joint is counted at -2 degrees of freedom and is in every car built.
Fig. 1 Five closed loops of revolute joints, each counted and each measured. The count is a statement about how many links and joints there are; the measurement is the number of joints minus the rank of the loop’s screw system, which knows only where the axes point. Four of the five disagree.

The count, one dimension up

A body free in space has six freedoms: three to move it and three to turn it. A revolute joint — a pin, a hinge — leaves the two bodies it joins one relative freedom and takes five away.

So for a mechanism of L links, one of which is the frame, joined by j revolute joints:

M=6(L1)5jM = 6(L - 1) - 5j

This is Kutzbach’s criterion, and it is the same argument as Grübler’s with the 3 replaced by a 6 and the 2 by a 5. Count the freedoms the moving links would have if they were loose, subtract what each joint takes away, and what is left is what the mechanism has.

For a single closed loop the number of links equals the number of joints, so L = j and the formula collapses to something startling:

M=6(j1)5j=j6M = 6(j - 1) - 5j = j - 6

A single closed loop of revolute joints needs seven of them before it moves at all. Six gives zero. Five gives −1. Four gives −2, and −2 is not a number any mechanism has.

That is the prediction. Here is the difficulty: the universal joint in a car’s driveline is a closed loop of four revolute joints, the Sarrus linkage is a closed loop of six, and Bennett’s is a closed loop of four. All three move. Two of them are in production hardware.

What the formula cannot see

The failure is the same one the planar formula has, and stating it once covers both.

Kutzbach counts links and joints. It is a statement about the topology of the mechanism — what is connected to what — and it is completely blind to where anything is. Two mechanisms with identical link counts and identical joint counts get identical answers, whatever the axes are doing.

That would be fine if joint constraints were always independent. They are not. When several joints’ constraints repeat each other, the formula subtracts each one separately and the mechanism keeps freedoms the arithmetic has already spent. The technical name for the surplus is overconstraint, and the planar essays met it once, with three parallel bars where two would do.

In space overconstraint is easy to arrange, because there are more ways for a set of axes to be special. Parallel axes are special. Intersecting axes are special. Axes that all cut a common perpendicular are special. Each kind of specialness makes some constraints redundant, and every named spatial linkage in the literature is a mechanism built on one of them.

Measuring instead of counting

The site’s habit applies here without modification: where there is a formula, find a second route, and prefer the one that measures. In the plane that second route is the rank of the constraint Jacobian. In space it is the same idea in a form that happens to be more revealing.

Take a closed loop and walk round it, accumulating the transform from one joint frame to the next. If the loop is closed, the product of all of them is the identity. Now ask what happens to that product when each joint turns a little. Turning joint i by a small angle moves everything downstream of it as a rigid rotation about joint i’s axis, and a rotation about an axis with direction ω through a point q is described by six numbers:

S=[ω  ;  ω×q]S = [\,\boldsymbol{\omega}\;;\;-\boldsymbol{\omega} \times \mathbf{q}\,]

which is the joint’s screw. Small motions of all the joints together change the loop closure by the sum of each joint’s screw times its own small angle. For the loop to stay closed, that sum must be zero.

So the closure condition on velocities is a linear system: a 6 × j matrix whose columns are the joint screws, acting on the joint rates, equal to zero. The number of independent solutions — the dimension of that matrix’s null space — is the mechanism’s mobility:

M=jrank(S)M = j - \operatorname{rank}(S)

Nothing in that says how many links there are. It is a statement entirely about where the axes point, which is precisely the information the formula throws away.

And it is the same matrix twice over. The screw matrix is also the Jacobian the solver needs to close the loop in the first place, so every position drawn on this site already has it. Mobility costs no extra work: the rank of a matrix that has been formed anyway.

How a spatial loop gets written down

There is a practical obstacle between the paragraph above and any actual figure, and it is worth a section because it is where most of the confusion about spatial mechanisms lives.

A planar linkage can be specified by writing down four numbers. A spatial one cannot, and the two conventions people use for it look nothing like each other.

Denavit–Hartenberg parameters describe each link by four numbers: how long the common perpendicular between its two joint axes is, how much those axes are twisted relative to each other, how far along the axis one perpendicular sits from the next, and the joint angle itself. It is a compact, unambiguous description, it is how every classical spatial linkage is tabulated in the literature, and it is nearly unreadable. Bennett’s condition is a statement about two of those numbers on opposite links, and no amount of staring at the table makes it obvious.

Axes given as a direction and a point, in a configuration that is already assembled, is the other way. It says nothing about link lengths and everything about where things are, which is how a mechanism designed in space is easiest to state: the Sarrus linkage is “three axes along x̂ at these places, three along ŷ at those”, and that description is the argument for why it works.

Both reduce to the same thing — a chain of constant rigid transforms with a rotation between each — so one residual, one Jacobian and one solve serve both, and the figures here use whichever description makes the mechanism’s point. Bennett’s comes from its DH table because that is what its condition is a statement about. The Sarrus and the universal joint come from their axes, because their axes are the explanation.

What neither convention gives is a picture. A spatial mechanism on a flat page is genuinely ambiguous in a way a planar one is not — the same projection can be read as two different mechanisms — so every spatial figure here draws the joint axes as dashed stubs rather than leaving them to be inferred, and states the direction it is viewed from. That is a drawing decision rather than a measurement, and it is the only one in the field.

What the five loops in the figure are

The hero table is worth reading row by row, because the pattern is not “the formula is broken”.

The universal joint is four revolute axes all passing through one point. Four screws whose q is the origin have zero in their bottom three components, so the whole matrix is at most rank 3 — the loop can produce rotation and never translation, which is exactly what a joint bolted between two shafts should do. Rank 3 with four joints gives mobility 1. Kutzbach says −2. Its output speed is the subject of its own essay, and it is not constant.

The Sarrus linkage is two three-joint chains in perpendicular planes. Each chain confines the moving plate to a plane; two planes meet in a line, and the plate translates along it. Rank 5, mobility 1, Kutzbach 0. It draws a straight line exactly, from pin joints, with no approximation in it.

Bennett’s four-bar has four axes that are neither parallel nor intersecting, and it moves only when its lengths and twists satisfy one equation. Rank 3, mobility 1, Kutzbach −2. Break the condition by two parts in a thousand and it seizes.

A spatial four-bar with generic twists is the null case, and it is in the table on purpose. Kutzbach says −2; the measurement says 0. Both agree the thing does not move, and they disagree about the number — which is worth noticing, because a formula can be wrong about the number and right about the verdict, and a check written to expect four disagreements-that-matter would have been quietly relaxed to make this row pass.

A seven-joint loop with scattered axes is the case the formula is right about. Nothing is parallel, nothing intersects, the screw system is full rank 6, and mobility is 7 − 6 = 1, which is what Kutzbach says. This row is why the honest summary is not “the criterion fails” but “the criterion is blind to geometry, and geometry is where the interesting mechanisms live”.

A universal joint at 40° input, shafts 32° apartTwo shafts meeting at 32°, joined by a cross whose two pins are at right angles to each other and each at right angles to the shaft it carries. That is the whole geometry, and everything else follows from it. This is a four-joint spatial loop with all four axes through one point: Kutzbach counts −2 and the screw system has rank 3, so it has one degree of freedom and turns. At this instant the output shaft is at 44.70° while the input is at 40°, and the output is turning 1.0154 times as fast — which is not 1, and never is except at the four points of each turn where the curves cross.inputoutputresidual 2.4e-16positioned by solving, not by drawing
Fig. 2 The first of the three. Four revolute axes, all through one point: two shafts and the two pins of a cross. Kutzbach counts it at −2 and it is in every car built — the screws of four concurrent axes have no translational part, so the matrix is rank 3 rather than 4.
Kutzbach's count against the measured mobility. Five closed loops of revolute joints. The count is 6(L − 1) − 5j, a statement about how many links and joints there are; the measurement is the number of joints minus the rank of the loop's screw system, which knows only where the axes point. They disagree for four of the five, and the one they agree on is the generic seven-joint loop — so the formula is not broken, it is blind to the special geometry that makes the other four work. The universal joint is counted at -2 degrees of freedom and is in every car built.
Fig. 3 The count applied to the universal joint above. Two revolutes and a cross: the arithmetic returns one and the joint has one, which is the case where nothing needs explaining and is worth having beside the ones that do.

Every planar mechanism is an overconstrained spatial one

Here is the observation that makes the spatial field less exotic than it looks, and it is checkable rather than rhetorical.

Take an ordinary four-bar. Build it as a spatial loop: four revolute joints whose axes all point along the same direction, positioned wherever the four-bar’s pins are. Hand that to the spatial machinery, which has never been told the mechanism is flat.

The same four-bar, counted in the plane and in space. An ordinary four-bar, built with the spatial machinery: four revolute joints whose axes all point the same way. Counted in space it has -2 degrees of freedom, which is the same verdict Kutzbach gives Bennett's linkage. Counted in the plane it has 1. The screw system settles it — four parallel axes span a rank-3 system rather than a rank-4 one, so the loop has 1 freedom and 48 of 48 crank positions assemble. Every planar mechanism on this site is an overconstrained spatial one, which is the reason the spatial count's failures are not exotic.
Fig. 4 The same four-bar, counted two ways. In space it has −2 degrees of freedom, which is the verdict Kutzbach also gives Bennett’s linkage; in the plane it has 1. The screw system settles it: four parallel axes span a rank-3 system rather than a rank-4 one.
Kutzbach's count against the measured mobility. Five closed loops of revolute joints. The count is 6(L − 1) − 5j, a statement about how many links and joints there are; the measurement is the number of joints minus the rank of the loop's screw system, which knows only where the axes point. They disagree for four of the five, and the one they agree on is the generic seven-joint loop — so the formula is not broken, it is blind to the special geometry that makes the other four work. The universal joint is counted at -2 degrees of freedom and is in every car built.
Fig. 5 And to the Sarrus linkage, where it returns a negative number for a mechanism that moves. The formula has counted six constraints per joint on a loop whose constraints are not independent, which is the whole of the overconstraint story in one row.

Four parallel screws have the form [ω; −ω × q] with the same ω throughout, and they span a three-dimensional space — one rotation about the shared direction, two translations perpendicular to it. Rank 3, four joints, mobility 1. The loop turns through every crank angle the planar solver finds.

So the ordinary four-bar is overconstrained too. It has three redundant constraints, which is the same surplus Bennett’s linkage carries. The difference is that its specialness — parallel axes — is so familiar that nobody calls it special, and its redundancy is so thoroughly designed into everything from door hinges to windscreen wipers that the arithmetic saying it cannot move goes unnoticed.

This is not a trick of the formulation. It is what the criterion actually says, and it is why the planar Grübler count works: the planar formula is Kutzbach with the three redundant constraints already removed, on the assumption that everything is parallel. Assume it wrongly — put one hinge a degree out of line — and the mechanism binds, which is exactly what happens to a badly-mounted gate.

What overconstraint buys and what it costs

Since it is everywhere, it is worth saying what it is for.

An overconstrained mechanism carries its load through more members than it strictly needs. The Sarrus linkage’s plate is held to its line by two chains, either of which is doing part of the job twice. That makes the mechanism stiff: a load that would deflect one chain is resisted by both, and the plate stays where it is meant to be.

The cost is that it only works when the geometry is right. A statically determinate mechanism — one Kutzbach counts correctly — tolerates manufacturing error by moving slightly. An overconstrained one has nowhere to put the error, so it either binds or deforms. That is the trade, and it is the same one structural engineers make with redundant members in the opposite direction.

Which is why the sensitivity in Bennett’s essay matters so much and why the linkage was a mathematical curiosity for the better part of a century. Redundancy that depends on an exact condition is not robust; redundancy that depends on axes being parallel is, because parallel is a condition machining can hold.

How much of Bennett's turn survives a bar being wrong. The same four bars and the same four twists, with one bar's length changed by the amount on the left and nothing else touched. The bar shows the fraction of 48 sampled positions of the first joint at which the loop closes to within 10⁻⁹. Two parts in a thousand already costs most of the travel. This is what it means for a mechanism to work only on a condition rather than approximately near one — and it is why Bennett's linkage was a curiosity for eighty years before anyone could machine to it.
Fig. 6 What a mechanism that works on a condition rather than approximately near one looks like. Two parts in a thousand in one bar’s length and most of the travel is gone — which is the practical difference between overconstraint resting on parallelism and overconstraint resting on an equation.
The same four-bar, counted in the plane and in space. An ordinary four-bar, built with the spatial machinery: four revolute joints whose axes all point the same way. Counted in space it has -2 degrees of freedom, which is the same verdict Kutzbach gives Bennett's linkage. Counted in the plane it has 1. The screw system settles it — four parallel axes span a rank-3 system rather than a rank-4 one, so the loop has 1 freedom and 48 of 48 crank positions assemble. Every planar mechanism on this site is an overconstrained spatial one, which is the reason the spatial count's failures are not exotic.
Fig. 7 A second four-bar counted both ways. The planar count is one and the spatial count is minus two on any four-bar whatever its lengths, so the discrepancy is structural rather than a property of these numbers.

What the solver has to do differently

Two things change when the loop leaves the plane, and both are worth stating because they are where the arithmetic bites.

The closure error is a rigid transform, not a list of coordinates. In the plane a mechanism’s constraint residual is a list of numbers — distances that should be zero. In space the natural residual is the logarithm of the loop’s closure transform: three numbers for how far the loop has failed to come back to its own orientation, three for how far it has failed to come back to its own position. Those six are in the same units as the screw matrix’s rows, so the Newton step is exactly the linearisation and the rank argument above means what it says.

Getting that logarithm right was, in this file’s history, two separate bugs. The first took the rotation angle from the arc cosine of the matrix trace, which is flat near zero — an angle of 10⁻⁸ moves the trace by one unit in the last place, so the recovered angle carried about eight digits, and the solver converged beautifully to a residual of 10⁻⁷ and stopped there. The second was worse because it hid: a branch guard meant to catch rotations near a half turn also fired for rotations near zero, so every nearly-closed loop took the code written for half-turns and got back a rotation about the wrong axis with the right magnitude. The residual norm looked healthy the whole time. Only the direction Newton was told to step in was invented.

That is a general lesson about this kind of check and it is worth carrying: a quantity whose magnitude is right and whose direction is wrong passes every test that prints a number. The tolerance said 10⁻⁹, the figure captions would have said “solved”, and fifty-one of seventy-two positions of the universal joint were being reported as not existing.

The mechanisms worth drawing are the rank-deficient ones. A solver that assumes its Jacobian is well conditioned is fine for the generic seven-joint loop and useless for all four of the others, because their redundancy is rank deficiency. So the spatial solve uses the same escalating damping the planar one does, for the same reason: the interesting mechanisms are the ill-conditioned ones, and a solver tuned for the well-behaved case reports that the useful mechanisms cannot be assembled.

What to take from the field

Three things, and the third is the one that changes how the rest of the site reads.

The count is not useless. For a mechanism whose axes are in general position it is correct, cheap, and available before anything has been designed, which is exactly when a designer needs it.

The count is not sufficient. Every spatial mechanism anyone has bothered to name is one it gets wrong, because the reason to name a mechanism is usually that its geometry is special, and special geometry is what the count cannot see.

And the plane is not a different subject. The essays before this one describe a family of overconstrained spatial loops whose specialness is so ordinary that the overconstraint is invisible. The mechanism Grübler says cannot move is not an anomaly at the edge of the planar theory. It is the planar theory, looked at from one dimension up.

There is a way of putting the field’s whole argument that is worth having in one sentence, because it explains why the spatial case had to be a separate field rather than an appendix. In the plane the count is nearly always right and in space it is nearly always wrong. A planar mechanism’s constraints are usually independent, so Grübler’s arithmetic gives the answer and the rank confirms it; a spatial one’s usually are not, so Kutzbach’s gives a number that is wrong by the redundancy and the rank is the only route. That is not a difference of degree. It means the planar field could treat the count as the instrument and the rank as a check, and the spatial field has to treat the rank as the instrument and the count as a hint — an inversion of which number is doing the work, arriving with nothing but a change of dimension. Everything else in the field follows from that: the corrected criterion, the redundancy count, the two kinds of overconstraint, and the fact that the field’s most interesting mechanisms are the ones the count is most wrong about.

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 31 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.

ConstraintDegrees of freedomKutzbach's criterionMobilityOverconstraintRankthe Sarrus linkageScrewScrew systemSpatial mechanism