What can move

The formula is repaired by the thing it replaced

Kutzbach's count is wrong about most of the mechanisms worth building, and every textbook gives the same repair — add back the constraints that were imposed twice. The repair works on every loop this site has. It is also not a formula, because the number it adds cannot be read off the joint graph.

Assumes What a mechanism cannot do and Counting and measuring mobility.

Kutzbach’s criterion counts a spatial mechanism’s degrees of freedom from its joint graph:

M=6(nj1)+ifiM = 6(n - j - 1) + \sum_i f_i

— six freedoms per moving body, less what each joint takes away. For a closed loop of four revolute joints that is 6(441)+4=26(4 - 4 - 1) + 4 = -2.

A universal joint is a closed loop of four revolute joints. The formula says it has minus two degrees of freedom. There are several in every car ever built.

This is not news on this site; the expansion phase measured it across five loops and found the count wrong about four of them. What this essay is about is the repair, which every treatment of the subject gives in the same form, and what happens when it is tested rather than quoted.

Kutzbach, plus the constraints counted twice. Each row is 6(n − j − 1) + Σf, then the redundant constraints ν measured from the two legs' constraint systems, then the mobility measured from the rank of the whole loop's screw system. The first column is wrong for 5 of 6 of these mechanisms; adding ν repairs every one. The catch is that ν is not a property of the joint graph — Bennett's linkage and a spatial four-bar with one twist changed have the same graph and different ν — so the corrected formula needs the measurement it was supposed to replace.
Fig. 1 Six loops. The open circle is Kutzbach’s count, the filled one is the count with the redundant constraints added back, and the right-hand column is the mobility measured independently from the rank of the joint screws. The bar between the two circles is ν — how many constraints are imposed more than once. On every loop here the repaired count and the measurement agree exactly.

The repair, and what it says

The formula assumes every constraint is distinct. Each joint removes some freedoms; add them up; subtract.

That assumption fails whenever two parts of a mechanism happen to prevent the same thing. If one chain already stops the platform rotating about , and a second chain also stops it, the second chain’s constraint costs nothing — the freedom was gone. The formula charged for it anyway.

So the corrected criterion is

M=6(nj1)+ifi+νM = 6(n - j - 1) + \sum_i f_i + \nu

where ν is the number of redundant constraints: constraints imposed more than once. Add them back and the count is right.

That is the standard statement and it is correct. The question worth asking is where ν comes from.

Measuring ν instead of asserting it

A closed loop is two chains holding one moving link. Cut the loop anywhere and what is left is two legs, each running from the ground to that link.

From the previous rung, each leg’s constraint system is the reciprocal of the screws its own joints span, and its order is six minus that leg’s rank. The moving link is constrained by both legs at once, so what acts on it is the union — and the whole of the overconstraint story is the difference between

  • what the legs constrain separately, which is the sum of their orders, and
  • what they constrain together, which is the rank of the union.

That difference is ν, and it needs no formula. It is a shortfall between a sum and a rank, computed by constraintAnalysis in lib/screw.js from the same Jacobian columns that positioned the mechanism.

Take the planar four-bar. Cut it into two legs of two joints each. Two parallel revolutes span a two-dimensional screw system, so each leg’s constraint system has order four: eight constraints between them. Together they span only five. Three of the eight are duplicates, and 2+3=1-2 + 3 = 1, which is the mobility.

Take the Sarrus linkage. Two legs of three joints, each spanning a planar three-system, so each constrains three: six between them. Together, five. One redundant, and 0+1=10 + 1 = 1.

Take the generic seven-joint loop. A leg of three and a leg of four constrain three and two, five between them; together, five. None redundant, so ν is zero and the corrected count is the original one. That is the case Kutzbach gets right, and here is why it gets it right rather than merely that it does.

What each loop's constraint system is made of. For each mechanism: the order of the screw system its joints span, the order of the reciprocal system — the wrenches it carries without moving, which is always six minus the first — and what those wrenches are. A planar four-bar carries one force and two couples; a mechanism whose motion lies in no subgroup carries screws of finite pitch instead, and 2 of these 6 do.
Fig. 2 The same six loops read the other way. The generic seven-joint loop’s own screw system fills the whole of screw space, so it carries nothing at all — and a mechanism that constrains nothing cannot be constraining anything twice. The row marked is the one Kutzbach’s formula is right about, and the reason it is right is in this table rather than in the count.

Where it is cut cannot matter, so that is checked

A closed loop has no platform. Calling one link the platform is a decision made by whoever is drawing it, and there are as many ways to cut a loop into two legs as there are links.

If ν depended on that choice, every number in this essay would be an artefact of the drawing. It would also be invisible, because one cut is all anyone would ever run.

assertAnalysisDoesNotDependOnTheCut runs the analysis at every cut of every loop the site builds — three cuts for a four-bar, five for a six-bar, six for the seven — and requires the redundancy, the constraint order and the corrected count to come out the same each time. They do. The planar four-bar reports ν = 3 at all three cuts; Sarrus reports 1 at all five; the seven-joint loop reports 0 at all six.

This is a check with no interesting failure mode and it earns its place anyway. An arbitrary choice that turns out not to matter is a fact about the mechanism, and the only way to know it is a fact rather than an assumption is to vary the choice.

Three parallel bars, and a formula that says this cannot moveFive links and six pin joints, so Grübler's criterion gives 3(5−1) − 2(6) = 0 and calls it a structure. The Jacobian has rank 5 against 6 free coordinates, so it measures one degree of freedom — and the sweep assembles 59 of 60 positions, which settles the matter. The third bar removes no freedom because its constraint is already implied by the other two, and a formula that counts joints cannot notice that they happen to be parallel. Mechanisms of exactly this kind carry drafting machines, anglepoise lamps and locomotive coupling rods, where the redundant bar is there for load sharing and for keeping the linkage out of its change point.the redundant oneGrübler: 3(5−1) − 2(6) = 0Jacobian: 6 − rank 5 = 1
Fig. 3 The planar version of the same failure, from the site’s first field. Five links and six pins in three parallel bars: Grubler’s count gives zero and the Jacobian measures one, and the mechanism goes round. The redundancy that repairs the spatial count repairs this one too, and for the same reason — three bars each preventing the same rotation, charged for three times.

Two routes, made to agree

The corrected count and the measured mobility share no arithmetic.

The first counts links and joints, then adds a shortfall between a sum of leg constraint orders and the rank of their union. The second takes the rank of one six-by-n matrix and subtracts it from the number of joints.

assertCorrectedCountAgreesWithTheRank requires them to give the same integer, and across the site’s nine loops they do: 1, 1, 1, 1, 1, 1, 0, 0, 1 both ways. The planar four-bar’s 2+3=1-2 + 3 = 1 against a measured 1; Bennett’s 2+3=1-2 + 3 = 1 against a measured 1; the detuned Bennett’s 2+2=0-2 + 2 = 0 against a measured 0.

Two routes to a number is this site’s standing habit and it is unusually cheap here, because both routes were already being computed for other reasons. What makes the agreement worth having is that the routes fail differently. A mistake in the leg decomposition would move ν; a mistake in the rank tolerance would move the measurement; a mistake in the screw convention would move both but not by the same amount.

The part that is usually left out

The repaired formula is exactly right and it is not a formula.

Kutzbach’s criterion has one virtue, and it is not accuracy: it can be evaluated from a sketch. Count the links, count the joints, count the freedoms at each joint, arithmetic. No lengths, no angles, no positions, no solve. That is why it is taught first and why it appears on the first page of every treatment — it is a check a designer can run on a napkin before committing to anything.

ν cannot be evaluated from a sketch. It depends on where the axes point, which is precisely the information the joint graph does not carry.

The cleanest demonstration is on this site already. Bennett’s linkage and a spatial four-bar with one twist angle changed have identical joint graphs: four links, four revolute joints, one loop. Kutzbach gives −2 for both. Their ν are 3 and 2, and their mobilities are 1 and 0 — one is a mechanism and the other is a structure.

So the corrected criterion does not let anyone avoid computing the geometry. It says: compute the geometry, extract a number from it, and then a formula will convert that number into the mobility. But the mobility was already available from the same computation, one subtraction earlier.

The corrected formula is the measurement wearing a formula’s clothes. That is not a criticism of it — it is a useful piece of bookkeeping, it says exactly how large the error was, and “this mechanism has three redundant constraints” is a more informative sentence than “this mechanism has mobility one”. It is a criticism of reading it as a repair to the method. The method that fails is counting without looking, and nothing repairs that except looking.

Bennett's condition is a point, not a region. The same four bars and the same four twists throughout; only the length of the two b-bars changes, by up to 6.0 per cent either way. At the condition sin α / a = sin β / b the two legs impose three constraints twice over and the linkage turns; anywhere else one of those coincidences fails, ν drops from 3 to 2, and the mechanism is a structure. The joint graph, the link count and Kutzbach's −2 are identical at every sample on this axis.
Fig. 4 Two mechanisms with the same joint graph, one parameter apart. Only the length of two bars changes, by up to six per cent; the twists, the topology and Kutzbach’s −2 are the same at every sample. At the exact Bennett condition ν is 3 and the linkage turns. One thousandth off it, ν is 2 and it is a structure. No graph can carry that distinction because no graph contains a length.

A count that is right for the wrong reason

One row of the survey needs separating out, because it is the case that makes a naive test of all this pass when it should not.

The generic spatial four-bar — Bennett’s four bars with one twist angle changed — is counted by Kutzbach at −2 and measured at 0. Those are different numbers. But they are not different answers: a mobility of −2 and a mobility of 0 both say the thing does not move, and a designer reading either would put the drawing down.

So an assertion written as “the count disagrees with the measurement exactly when the mechanism is one of the interesting ones” would fail here, and an assertion written as “the count is wrong about four of five loops” would be quietly false about the fifth. The site’s own gate is written the third way: assertKutzbachCanBeWrong requires that exactly one of the two counts is right about what the mechanism does, which is true on every loop including this one, and which does not need the essay’s editorial judgement about which disagreements matter.

That distinction is worth carrying because it recurs. A formula that returns a negative number has not failed in the same way as a formula that returns a positive one about a structure. Negative means overconstrained, and overconstrained mechanisms are the interesting ones; a positive count about something that does not move would be a far worse failure and Kutzbach never produces it here. The formula’s errors all point the same way, and that is the reason it survived being wrong.

What generic 4R carries. The mechanism in the one configuration it has — its measured mobility is 0, so there is no angle to draw it at — with the wrench system reciprocal to its joint screws drawn on it. It carries two screws: 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 4-dimensional screw system the joints span; the wrenches are its orthogonal complement under the reciprocal product.
Fig. 5 The mechanism the count is right about for the wrong reason. Four bars, four revolutes, one twist angle away from Bennett’s: its joint screws span four dimensions rather than three, so two wrenches are reciprocal to them rather than three, ν is 2 instead of 3, and the corrected count is zero. It is a structure, and Kutzbach’s −2 says so while getting the number wrong.
What Bennett carries. The mechanism at 60°, with the wrench system reciprocal to its joint screws drawn on it. It carries three screws: 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. 6 The same reading on Bennett’s loop, where ν is not nought. The wrenches reciprocal to the four joint screws do not span what a generic loop’s would, and the deficiency is exactly the number Kutzbach’s formula has no term for.

What the redundancy is for

Having said what ν is not, it is worth saying what it is good for, because it is the most practically consequential number in this field and this site is otherwise silent about the reason.

A redundant constraint is a constraint that is imposed twice. In a mechanism made of ideal rigid bodies and perfect joints, imposing it twice costs nothing. In a mechanism made of metal it costs a great deal, because the two impositions do not agree.

A planar four-bar has three redundant constraints. Build one with its four pin axes very slightly out of parallel — which is what manufacturing produces — and the three duplicated constraints are now three slightly different constraints, and the mechanism has to deform to satisfy all of them. It binds. That is why a real four-bar’s bearings are made with clearance and why a long one is a genuine engineering problem rather than a drawing.

The Sarrus linkage has ν = 1 and is correspondingly forgiving. The generic seven-joint loop has ν = 0, will assemble from parts made to any tolerance at all, and is used by nobody, because seven joints to get one freedom is a poor trade.

So ν is a design number: it measures how much the mechanism relies on being made accurately. High ν buys stiffness and few joints and demands precision; ν of zero buys tolerance and costs joints. Every mechanism in the hero figure sits somewhere on that trade, and the ones people build are mostly at the high end — which is the answer to why a formula that is wrong about the useful mechanisms stayed in the textbooks. The mechanisms it is wrong about are wrong in a consistent direction, and a designer who knows that reads a negative count as “overconstrained, check the geometry” rather than as “impossible”.

What this site cannot say is how much it binds. That is a question about stiffness and about how far out of tolerance the parts are, and both are outside a kinematics site by the same rule that keeps inertia out of the cam essays. ν says a constraint is imposed twice. What the metal does about it is not here.

Kutzbach, plus the constraints counted twice. Each row is 6(n − j − 1) + Σf, then the redundant constraints ν measured from the two legs' constraint systems, then the mobility measured from the rank of the whole loop's screw system. The first column is wrong for 5 of 7 of these mechanisms; adding ν repairs every one. The catch is that ν is not a property of the joint graph — Bennett's linkage and a spatial four-bar with one twist changed have the same graph and different ν — so the corrected formula needs the measurement it was supposed to replace.
Fig. 7 The whole tally, with Bennett’s row marked. Three of these seven are counted correctly and every one of those three is a loop with nothing special about its axes. The four the count fails on are the planar four-bar, the spherical four-bar, Bennett’s and Bricard’s — which is to say, all four of the ones anybody has ever deliberately built.

The count over the whole set

Nine loops, and the tally is worth stating plainly.

Kutzbach is right about three of them: the generic six-joint loop, which does not move and is counted at zero; the generic seven-joint loop, which moves and is counted at one; and — in a weaker sense — the generic four-bar, which is counted at −2 and has mobility 0, both meaning “does not move”, so the count is useful without being correct.

It is wrong about six: the planar four-bar, the universal joint, the spherical four-bar, the Sarrus linkage, Bennett’s linkage and Bricard’s. Every one of those is a mechanism somebody built on purpose. The formula is reliable about the loops nobody uses.

That is the sharpest way to put the situation and it needs one qualification, which the site’s own check enforces. assertKutzbachCanBeWrong asserts that exactly one count is right on each loop, rather than that Kutzbach is wrong — because on the generic four-bar the two disagree while agreeing about the mechanism, and an assertion that simply demanded disagreement would have been asserting something false about a case it was not thinking about.

What a designer does with a negative number

The practical reading follows from all of the above and is worth stating because it is not what the formula appears to say.

A count of zero or more, on a mechanism with generic geometry, is a count to trust: nothing is being duplicated, the parts will assemble, and the number is the number.

A negative count is not a verdict. It is a flag that says the arithmetic assumed no duplication and the mechanism may well contain some. Every mechanism in the hero figure with a negative count moves — the planar four-bar, the universal joint, the spherical four-bar, Bennett’s. What the negative number is reporting is that the answer depends on the geometry, and the formula was not given any.

The mistake the criterion invites is treating −2 as worse than 0. On this evidence it is better: the loops counted at −2 include every four-bar linkage ever built, and the loop counted at 0 that genuinely does not move is the six-joint one with nothing special about it. Reading the count as a ranking of usefulness inverts the truth almost exactly.

And ν is not one number per mechanism

There is a further sense in which the corrected criterion is not a formula, and it is stronger than the observation that ν has to be measured. ν is a property of a configuration, not of a mechanism, and nothing in the repaired expression says so.

The number is the overlap between two legs’ constraint systems, and a constraint system is computed from the joint screws where they are. Move the mechanism and the screws move, so the overlap can change — and a mechanism whose legs’ constraint systems intersect in one dimension at most positions may intersect them in two somewhere particular. Where that happens the count changes, and the mobility with it.

That is not a hypothetical shape of behaviour; it is what a singularity is, read through this arithmetic. A parallel platform gaining a freedom at a direct singularity is a mechanism whose leg constraint systems have lost rank at that configuration, so ν has jumped and the corrected count has gone up by exactly the freedom the platform gained. The two descriptions are the same event.

So a quoted ν carries a hidden qualifier and the honest form of every number in this essay is at a generic configuration. A planar four-bar has ν = 3 everywhere, because its constraint systems are the planar ones at every position and the overlap never changes; that is what makes it trivially overconstrained. Bennett’s linkage has its ν throughout its own motion. A mechanism with a singularity has one value almost everywhere and another on a set of configurations, and reporting the first without the second describes the mechanism where it is uninteresting.

Which gives the survey its proper reading. The nine loops’ numbers are generic values, they are stable along each mechanism’s motion, and the check that they are stable is worth running — sweep the mechanism, recompute ν at every position, and require it to hold. A mechanism whose ν moves is a mechanism with a configuration worth looking at, and the sweep finds it without anybody having to guess where.

That also sharpens the closing complaint about the formula. Kutzbach’s count is evaluable from a sketch and is wrong; the corrected count needs the geometry, and it needs the geometry at a configuration, so it is not even one number for the mechanism. What the repair produces is a function on the configuration space that happens to be constant on most of it, and a formula is not that kind of object.

Where this goes

Every mechanism with ν greater than zero is overconstrained. That is one word covering two situations, and the difference between them is not visible in ν, in the mobility, in the rank, or in the joint graph.

A planar four-bar is overconstrained at every set of link lengths. Bennett’s is overconstrained at one ratio and nowhere else. Both report ν = 3.

The next essay is about telling those apart, and the instrument that does it is a measurement on the subspace this ladder spent two rungs learning to compute.

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

ConstraintKutzbach's criterionMobilityOverconstraintPlatformRankReciprocal screwRedundant constraintScrewScrew systemToleranceTwist