The formula is repaired by the thing it replaced
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:
— six freedoms per moving body, less what each joint takes away. For a closed loop of four revolute joints that is .
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.
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 x̂, 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
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 , 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 .
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.
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.
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 against a measured 1; Bennett’s against a measured 1; the detuned Bennett’s 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.
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 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.
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.
- Pin the tool and it is a loop One path to the tool
- Twelve bars and a symmetry Out of the plane
- Two ways to be overconstrained Out of the plane
About the same objects
Not linked from either essay — found by the objects both name.
- Bennett, and the condition that moves it constraint · mobility · overconstraint · rank · redundant constraint · screw · screw system · twist
- Fragility has a direction constraint · kutzbach's criterion · mobility · overconstraint · reciprocal screw · redundant constraint · screw system · tolerance
- Six freedoms, not three constraint · kutzbach's criterion · mobility · overconstraint · rank · screw · screw system
- Why a hinge works constraint · kutzbach's criterion · mobility · overconstraint · redundant constraint · screw system · tolerance
- A piano hinge is not forty door hinges constraint · mobility · overconstraint · redundant constraint · tolerance
- The count was right and the name was wrong constraint · mobility · overconstraint · rank · redundant constraint
What links here
The 8 of 12 essays linking to this one that name the most of the same objects.
- Two ways to be overconstrained Out of the plane
- What a mechanism cannot do Out of the plane
- Why the platform stays flat Several legs, one platform
- Almost nothing is a group What a joint is
- Pin the tool and it is a loop One path to the tool
- Six legs and a square root Several legs, one platform
- The count cannot tell a pin from a slide What a joint is
- The freedom that is a set What can move
The objects this essay names
Each one links to every other essay that touches it.
ConstraintKutzbach's criterionMobilityOverconstraintPlatformRankReciprocal screwRedundant constraintScrewScrew systemToleranceTwist