Contacts that only push

Which contact to make accurately

A hold turns a set of contact tolerances into one linear inequality, and the weights in it are the coefficients of the combination that cancels — a quarter each on a square held by four, and 0.144 to 0.424 on a hexagon held by five. Above that line the part goes in and below it there is no pose it can take at all: not badly located, not out of position, no fit.

Assumes Held is not located and Where a stack-up stops working.

Every contact in this field has been where the drawing says. Move them, by the amounts a workshop actually achieves, and the first question is not how far off the part ends up. It is whether the part goes in.

Whether the part goes in is one inequality. Two of the four contacts are moved and the other two left where the drawing says; the horizontal and vertical axes are those two errors, inward positive. The shaded region is where the part still goes in and the unshaded region is where it does not fit at all — not fits badly, not is located wrongly: there is no position and no orientation the part can take. The boundary is the straight line 0.250·e₁ + 0.250·e₂ = 0, whose coefficients are the shares from the previous figure. Four probe points are marked, each checked twice — once by the inequality and once by a linear program that looks for a pose and reports the program infeasible when there is none — and the two agree at every one. A hold turns a set of tolerances into a single condition, and the weights in it are what say which contact is worth making accurately.
Fig. 1 Two contact errors on the axes, and the region where the part still fits. The boundary is a straight line whose coefficients are the shares of the combination that cancels.

Why a hold cannot absorb an error

Six bilateral constraints have a solution for any error, because At=eAt = e is a square system and squares systems have answers. A part on six pads with contact errors goes somewhere; the seating essays compute where, and the answer is always a pose.

A hold has no such property. The condition is ApeA p \ge e — an inequality — and a system of inequalities can be infeasible. When it is, there is no pose the part can take: not a badly located one, not a tilted one, none.

That is because a hold has already used up every direction. The whole content of form closure is that no motion is left; there is nothing for the part to give when a contact comes in.

Bounded exactly on the rows that hold. Every arrangement in the ledger with a clearance of 0.01 on every contact, and the size of the set of poses that leaves. The pattern is the whole point of the rung and it has no exceptions: the two arrangements that hold have a bounded pose set and the five that do not have an unbounded one, in exactly the coordinates their escape cones point along. The disc and the ellipse are unbounded in rotation and bounded in both translations, which is their spin; the vee is unbounded in a translation. So held and has a finite set of poses are the same statement, and a designer who wants the second has to get the first before any tolerance is worth discussing.
Fig. 2 The pose set with a clearance, which is the same inequality with the sign the other way. A hold makes it finite; an error can make it empty.

Farkas answers it exactly

There is a clean condition and it comes from a theorem this rung is otherwise built to avoid quoting.

ApeA p \ge e has no solution precisely when there is a λ0\lambda \ge 0 with λTA=0\lambda^{\mathsf T} A = 0 and λTe>0\lambda^{\mathsf T} e > 0. And λTA=0\lambda^{\mathsf T} A = 0 with every λi\lambda_i positive is the definition of a hold. So:

A hold converts a set of contact tolerances into one linear inequality, and the weights in it are the coefficients of the combination that cancels — the same λ\lambda the closure program returns.

iλiei    0or the part does not go in.\sum_i \lambda_i\, e_i \;\le\; 0 \quad\text{or the part does not go in.}

What each contact is worth, and it is not one over the number of them. A hold is a set of rows whose positive combination is nought, and the coefficients of that combination are these. On a hold at the minimum there is exactly one such combination up to scale, and on the square it is perfectly even: each of the four carries a quarter. On the hexagon's five there are two independent combinations, drawn here as two series, and neither is even — one is a pair of directly opposed contacts carrying a half each and nothing from the other three, and the other spreads across four with shares from 0.144 to 0.424. The coefficients are not decoration: the next figure shows that they are exactly the weights in the inequality that decides whether the part goes in at all.
Fig. 3 The weights, on the two holds in the ledger. A quarter each on the square; 0.144 to 0.424 on one of the hexagon’s two.

Every error being inward is the worst case and it is worth reading the condition at that point: all ei>0e_i > 0 makes λiei>0\sum \lambda_i e_i > 0 and the part never fits. Which is obvious once said — a hold with every obstacle moved inward is a hold that has shrunk around a part that has not — and it is why every real fixture has clearance built into it. What the condition adds is the trade: an outward error at one contact pays for an inward error at another, in proportion to the weights.

Checked against a program

Farkas is a theorem and the site’s habit is to have a second route, so the condition is checked against a linear program that knows nothing about it: given the errors, look for a pose satisfying every inequality, and report the program infeasible when there is none.

Four hundred random error vectors on each of the two holds. Zero disagreements. On the square, 202 of the 400 were refused; on the hexagon, 280.

That the two agree is worth more than it looks, because a wrong sign anywhere in the derivation gives the complement of the right answer and agrees with nothing. There is no near miss available: either the condition is right or it is inverted, and 400 draws separate those completely.

How many conditions a hold puts on the tolerances. A hold makes the part's fit conditional, and the number of conditions is the number of independent positive combinations of its rows that come to nothing. An arrangement that is not a hold has none: every error is survivable, because the part has somewhere to go. A hold at the minimum has exactly one. A hold with a spare contact has more, and the spread column — the largest share divided by the smallest non-zero one — says how unevenly the worst of them falls. That is the whole shape of the trade this field is about: contacts beyond the minimum buy nothing in what the part may do and cost another inequality that the workshop has to satisfy.
Fig. 4 And the refusal the check needs: an arrangement that is not a hold has no cancelling combination at all, so no error can stop the part going in.

The last row of that table is the control. A pinwheel arrangement’s rows have no positive combination that cancels, so Farkas returns no condition, so no set of errors makes it infeasible — which is right, and it is right for a reason that reads as a consolation: a part that is not held can always get out of the way.

Which contact to make accurately

Which is the whole practical content, and it is one line.

Allocate the tolerance in inverse proportion to λ\lambda. A contact whose weight is twice another’s spends twice as much of the budget per micron of error, so it deserves half the tolerance if the two are to contribute equally.

On the square held by four, the weights are 0.25 each and the allocation is uniform — which is what everybody does, and here it happens to be right, because the arrangement is symmetric.

On the hexagon held by five, one of the two conditions has weights

(0.144,  0.288,  0.144,  0,  0.424),(0.144,\; 0.288,\; 0.144,\; 0,\; 0.424),

a spread of 3.47 between the heaviest and the lightest non-zero. Uniform allocation across those five over-specifies three of them and under-specifies one, and the one it under-specifies is the one that decides whether the part goes in.

5 contacts, and 1 of them free not to touch. A hexagon on five contacts. Each contact is removed in turn and the hold recomputed; the ones drawn in the warning colour are those whose removal leaves the part still held, which is to say the ones that are constraining nothing the others were not already constraining. There is one here, and the margin without it is 0.091 — unchanged, to every figure. That is the unilateral form of what a redundant constraint costs, and it costs something different from the bilateral form: a redundant bilateral constraint has to be satisfied and cannot be, so it leaves a gap somewhere; a redundant contact is simply free not to touch, and whether it does is decided by errors nobody controls. positioned by solving, not by drawing.
Fig. 5 The hexagon’s five, with the one whose weight is nought marked. It is the spare contact, and it appears in the other condition rather than in this one.

A spare contact is a second condition

The zero in that vector is the spare contact, and it is not exempt — it appears in the other condition.

A hold at the minimum has exactly one cancelling combination up to scale, so it imposes exactly one inequality. A hold with a spare contact has a cone of them, and every extreme ray of that cone is another inequality the errors have to satisfy. The hexagon’s two are

(0.500,  0,  0,  0.500,  0)(0.500,\;0,\;0,\;0.500,\;0)

and

(0.144,  0.288,  0.144,  0,  0.424).(0.144,\;0.288,\;0.144,\;0,\;0.424) .

The first is a pair of directly opposed contacts whose rows are exact negatives, cancelling between themselves with nothing from the other three. It says: the two facing contacts may not both come in. Which is the obvious thing, and it is obvious for the same reason a hole and a shaft cannot both be at their maximum material condition.

Seven arrangements, one routine, and the two that hold. Every row is the same three steps: write down one row per contact — the moment of its normal about the origin, then the normal itself — take the convex hull of those rows, and ask whether the origin is inside it. The parts differ, the numbers of contacts differ, and the routine does not. Two of the seven hold. The other five leave the part something, and the interesting column is what: four rays of rotation for the pinwheel, a translation straight out of the vee, and for the last two a whole line rather than any number of rays, which is what a rank below three means and is the case a reader has to be warned about. Note that the four contacts of the second row are the four of the first row, on the same four edges of the same square, at the same distance along each. positioned by solving, not by drawing.
Fig. 6 The row with the spare contact, whose extra condition is invisible in every column of this table.

So the fifth contact bought no restraint — the margin without it is unchanged at 0.0914 — and sold a second inequality. That is the cost of redundancy in this field, stated as a number: one more condition on the tolerances per spare contact, and the count of them is the count of extreme rays of the cancelling cone.

How the conditions are enumerated

The cone of cancelling combinations is a polyhedral cone in as many dimensions as there are contacts, cut by the dd equations and by NN non-negativity constraints, and its extreme rays are what the conditions are — so they are enumerated by the same argument the rest of the field uses.

An extreme ray lies on N1N - 1 tight constraints, dd of which are the equations, so at most d+1d + 1 of its entries are non-zero. Take every subset of that size, take the null vector of its own d×(d+1)d \times (d+1) block, and keep it when every entry has the same sign.

The first version of that required every entry to be strictly positive, which is the natural thing to write and loses any extreme ray with more zeros than the subset already fixes. It reported the hexagon’s five contacts as imposing one condition rather than two — a number that looks exactly like the four-contact answer, is wrong, and has nothing in the arrangement to indicate it. What the missing ray was is the pair of directly opposed contacts, which is the condition a machinist would have thought of first.

The repair is to accept non-negative rather than positive vectors and then test extremality directly: a ray of {λ0:λTA=0}\{\lambda \ge 0 : \lambda^{\mathsf T} A = 0\} is extreme exactly when the rows it is supported on have a one-dimensional dependency and no more, which is a rank of one less than the support size.

That defect has the field’s standard shape: it produced a smaller number, with no symptom, on the one arrangement where the correct number is not the obvious one. What caught it was checking Farkas against the program on four hundred random error vectors, where the missing condition showed as 93 disagreements out of 400 — a rate too high to be rounding and too low to be a sign error.

Where this differs from a stack-up

A tolerance stack-up adds up the contributions of a chain of dimensions and asks whether the total is within a limit. This site has a rung about where that stops working, and the failure there is that a mechanism stops assembling while every dimension is inside its limits — which is exactly this rung’s failure, arrived at along a chain rather than around a part.

Two differences are worth naming.

A stack-up is a chain and this is a cycle. The weights come from a combination of rows that comes to nothing, which is a closed condition rather than an accumulation along a path. So there is no first contact and no last one, and no sense in which the error “builds up”.

And the weights are not ones. A worst-case stack-up adds tolerances with unit coefficients, which is right for a chain of collinear dimensions and is not right here. A micron at one contact is 0.424 of the budget and a micron at another is 0.144, and both are in millimetres.

The alternating sum, and the positive one

This site has one other essay in which a combination of contacts decides a tolerance question, and the two combinations differ in a way that is worth being precise about.

Under a four-legged table the combination that constrains nothing is the alternating sum of the four legs — a left null vector, with entries +1,1,+1,1+1, -1, +1, -1 — and what it decides is which leg is left with a gap. Its entries have mixed signs because it is a dependency among equations, and a dependency among equations has no sign convention at all.

Here the combination has entries that are all positive, and it cannot be otherwise: it is the certificate that the rows positively span, and positivity is the whole of what makes it one. So the two objects are the same kind of thing — a combination of rows coming to nothing — sitting in the same matrix, and the sign structure is what separates a redundant location from a hold.

It also explains why the failures look so different. An alternating combination means one contact can be traded against another and something ends up with a gap; a positive one means every contact pushes the same way and there is nothing to trade, so the part does not fit at all. A rattle and a refusal, from the same arithmetic with a different sign pattern.

What the condition does not say

Three limits, and the second is the one a workshop will hit.

It is a worst case, not a distribution. The condition decides whether a particular error vector fits. Whether a population of parts fits is a question about how often λiei\sum \lambda_i e_i exceeds zero, which needs a distribution on the errors and is the root-sum-square question rather than this one. The weights are what such a calculation would use, so the rung produces the input rather than the answer.

And the errors are along the normals. An eie_i here is a contact moved along its own normal. A contact moved sideways, along its own face, changes nothing at all — the boundary of a contact’s half-plane is its face’s line and sliding along the face leaves the line where it was. So the whole tolerance analysis for a flat contact is one-dimensional, and the position of a pad along its own face needs no tolerance whatever, which is a saving nobody takes.

What one contact forbids, drawn as a placeA single contact on one edge of a square, and the whole plane coloured by what it permits. A rotation about a point is a twist, and a twist is permitted when it does not drive the part into the obstacle; because a rotation about (x, y) is affine in the point, the condition is a **half-plane** and the boundary is a straight line — the line through the contact along its own surface. On one side of it only anticlockwise rotations are permitted, on the other only clockwise, and the two together are the whole plane bar the line itself. So one contact rules out exactly half of what the part could do and leaves the other half untouched, which is why the count of contacts a hold needs is one more than the dimension rather than equal to it: the first 1 of them cannot leave nothing over. The picture is exact — the regions are clipped polygons, not a sampled grid.anticlockwise permittedclockwise permittedone contact · one half-planethe boundary is the surface's own line
Fig. 7 The contact slid three quarters of the way along its own face. The half-plane it leaves is the same half-plane.

And a real fixture has clearance. With a clearance cc on every contact the condition becomes λieicλi\sum \lambda_i e_i \le c \sum \lambda_i, which with the weights normalised to sum to one is simply λieic\sum \lambda_i e_i \le c. So the clearance is the budget and the weighted sum of the errors is the spend, and the whole allocation problem is that one line.

What the region looks like

The condition is one inequality, so the region of admissible error vectors is a half-space in as many dimensions as there are contacts — for a hold at the minimum, and an intersection of half-spaces for one with spares.

Two of the errors swept and the rest held at nought gives the picture at the top of this essay: a straight boundary through the origin, with the part fitting on one side. Two things about it are worth pointing out.

The boundary passes through the origin. With every contact exactly where the drawing says, the weighted sum is nought and the part fits with nothing to spare — it touches every contact simultaneously and cannot move. So a hold with no clearance is on the boundary of not fitting, always, which is another way of saying what a hold is.

And the admissible region is exactly half. With errors drawn symmetrically about zero, half of them fit and half do not, which is what the 202 of 400 measures — the departure from 200 being the sample. On the hexagon it is 280 of 400 rather than 200, because two conditions have to be satisfied at once and their half-spaces overlap in less than half.

That last number is the cost of a spare contact expressed as a yield. Five contacts rather than four takes the fraction of random error vectors that fit from 50 per cent to 30 per cent, on an arrangement whose margin is worse and whose pose set is larger. It is difficult to construct a case for the fifth contact out of any of those three numbers.

Uniform weights are the efficient arrangement

The weights answer which contact to make accurately, and reading the whole vector rather than its largest entry answers a different question the field has not asked: which arrangement wastes the least tolerance.

A weight is how much a contact’s error counts against the fit budget. So an arrangement whose weights are equal spends its budget evenly: every contact needs the same accuracy, and none of them is being made better than it has to be. An arrangement with a spread wastes the difference — the lightly-weighted contacts are being made to a tolerance they do not need, because a workshop holds one standard across a part, and the heavily-weighted one has to be better than that standard or the fit fails.

The square held by four has weights of a quarter each, and is therefore perfectly efficient in this sense: one tolerance, applied everywhere, and every contact contributing exactly its share. The hexagon held by five has a spread of 3.47 between its heaviest non-zero weight and its lightest, so its worst contact is asking for three and a half times the accuracy of its easiest — and a fixture made to one standard is over-making four contacts to afford one.

That gives a design objective the field did not previously have, and it is not the margin. Weight uniformity is a property of the arrangement, computable from the same Farkas vector the fit condition uses, and it says how much of a uniform tolerance is doing useful work. Two arrangements that both hold, with the same margin, can differ substantially in it.

The two objectives are also not aligned, which is what makes the choice a choice. The margin measures how far the origin is from the hull’s boundary, and it is improved by spreading the contact normals. The weights measure how the cancelling combination distributes across the contacts, and they are made uniform by something else — roughly, by making no contact more nearly parallel to the cancelled direction than its neighbours. Nothing forces an arrangement good at one to be good at the other.

So the honest comparison between two fixtures has three numbers rather than one: the margin, which says how robustly it holds; the weight spread, which says how efficiently it spends tolerance; and the pose ratios, which say how tightly it locates. Three quantities, all from the same matrix, none derivable from the others — which is the ordinary situation whenever a design has more than one thing wanted of it.

The two numbers a fixture has

Putting this rung and the previous one together gives a fixture two numbers that are not the same and are usually conflated.

The fit budget, cc, which is what the weighted error sum may not exceed. Exceeding it means the part does not go in.

The pose ratio, per coordinate, which is how much of a pose set the same clearance buys. The square’s are 8.56, 4.11 and 4.11; the hexagon’s are 17.70, 5.26 and 2.36.

Those pull in opposite directions and that is the design tension the whole field arrives at. A large clearance buys a comfortable fit budget and a large pose set. A small one buys a tight pose set and refuses parts. And the arrangement decides the exchange rate between them, independently of what either number is set to.

Linear in the clearance, and different by a factor of two. The rotation a clearance leaves, against the clearance, on log axes, for the two arrangements in the ledger that hold. Both lines have slope exactly one — the pose set is defined by A p ≥ −c and scaling c scales the whole polyhedron, so the ratio is a property of the arrangement and not of the clearance, and it is asserted here at seven clearances four orders of magnitude apart. What differs is the intercept: the square's four contacts leave 8.56 radians of rotation per unit of clearance and the hexagon's five leave 17.70, which is more than twice as much from an arrangement with an extra contact in it. A better margin is not a tighter pose set, and the two are not measuring the same thing.
Fig. 8 The exchange rate, drawn: the pose set’s size against the clearance, linear, with an intercept the arrangement decides.

A designer choosing between two arrangements that both hold should compare three things — the margin, the pose ratios, and the fit weights — and no two of them agree about which arrangement is better. The square has the better margin, the tighter pose set and the more even weights; the hexagon has more contacts. That is not a general result and it is a good example of why the numbers have to be computed rather than reasoned about from the count.

How far inside the hull the origin actually is. The same seven arrangements with their margins drawn rather than tabulated, because the shape of this chart is the argument: the quantity is not a probability and not a percentage, it is a distance — how far the origin sits from the nearest face of the hull of the contact rows, with every row a unit vector so the number is comparable across arrangements. The two that hold come in at 0.211 and 0.091; the five that do not come in at exactly nought, and they are drawn at nought rather than left off. A margin that falls smoothly to nothing is what makes this a measurement: an arrangement approaching one that lets go says so before it does.
Fig. 9 The first of the three, which is the one that decides whether the other two exist.

About the same objects

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

What links here

Essays that link to this one from their own argument.

The objects this essay names

Each one links to every other essay that touches it.

ClearanceFixtureForm closureLinear programPositive spanRedundant constraintSensitivityStack-upToleranceWorst case