Three problems called synthesis
Assumes The problem the other way round.
This site’s synthesis field has so far meant one thing: prescribe some poses of a moving body and find a linkage that takes it through them. Burmester’s problem, three positions or four or five, and every essay in the field is about it.
It is one of three, and the other two are not variations. They have different unknowns, different equations, different counts of how many conditions can be met, and one of them is not even nonlinear.
The three
Motion generation is the problem the field has been doing. A whole plane is prescribed: the moving body must take up given positions and given orientations. Both numbers of a pose matter, and a dyad’s job is to carry the plane through them.
Path generation prescribes only where a point goes. A tracing point on the coupler must pass through a set of places; what the coupler is doing rotationally when it gets there is free. This is the coupler-curve problem, and it is why atlases of coupler curves were printed and sold — for a century the practical method was to look the curve up.
Function generation prescribes neither. It asks that the output angle be a given function of the input angle, and is completely indifferent to where the mechanism sits or what shape it traces. It is the problem behind mechanical computing: a linkage that turns one shaft through and another through , or , or .
Those are genuinely different questions and they have different answers. A four-bar takes five prescribed poses for motion generation, nine prescribed points for path generation, and five prescribed angle pairs for function generation — and the two fives are a coincidence of arithmetic rather than a connection. Working the counts out is a separate essay, because the counting is the subject.
The one that is linear
Function generation has a property nothing else in this subject has, and it comes from eliminating the right variable.
A four-bar’s loop closure relates four angles. Write for the ground link, for the input crank, for the coupler and for the output rocker, with the input angle and the output. Eliminate the coupler’s angle — square and add, which removes it — and one scalar relation survives:
with
This is Freudenstein’s equation, and its whole usefulness is visible on the page: the three ’s appear linearly. Prescribe three pairs and there are three linear equations in three unknowns. Solve the 3 × 3 system, read off , , and from a square root, and the linkage is designed.
No iteration. No initial guess. No optimiser. The geometry of a four-bar is thoroughly nonlinear and the design problem, in these coordinates, is not.
Solving it for over , with the crank running through 90° and the rocker through 90°, gives a linkage with ground 1, crank 2.965, coupler 2.400 and rocker 4.236. It passes through its three prescribed pairs to degrees, which is the arithmetic’s own precision, and its largest error anywhere in the range is 0.223° of rocker.
The trap in the middle of it
Freudenstein’s equation was derived by squaring, and squaring is exactly the step that forgets a sign.
The relation holds on both assembly branches of the four-bar. Given three correct angle pairs and the link lengths they determine, a mechanism assembled in the wrong configuration satisfies the equation perfectly and passes through none of the prescribed pairs.
Measured on this linkage: the first precision point asks for an output of 98.42°. Assembled from a generic starting guess, the mechanism gives 40.46°.
That is not a near miss, and it is not a failure either. Nothing reports an error. The lengths are right, the equation is satisfied, and the mechanism is doing something entirely reasonable — it is the other answer, and the two circles that decide where the coupler pin goes have two crossings, as they always do.
The fix is one line and it is worth stating because it is the sort of thing that gets left out of a derivation: the mechanism has to be assembled at a prescribed point. Seed the coupler pin from the output angle the first precision point asks for, and the solver lands on the branch that reaches it. functionGenerator takes that seed as an argument, and generateFunction tries each precision point as a seed and keeps whichever assembles.
The general lesson is one this site keeps meeting: an equation obtained by eliminating a variable describes a larger set than the one it came from. Squaring both sides of a loop closure is the smallest possible example, and the site has met a larger one in the branch guard that fired in the wrong regime during the expansion.
Exact at three points and nowhere else
The linkage is exact at its precision points, and it has to be — the construction is a linear solve, so it cannot miss them. An assertion that only checked those would pass on a program that returned the prescribed pairs and no mechanism at all.
So assertThreePointsAreExactAndTheRestAreNot checks both halves. The precision points are hit to degrees; the largest error away from them is 0.223°, which is ten orders of magnitude larger; and the assertion requires that ratio, so a linkage that was somehow exact everywhere would be rejected as not measuring anything.
That gap is the structural error, and it is a property of the mechanism rather than of how well it was made. It is distinct from the manufacturing error of building it slightly wrong, and from the measurement error of reading its output — three separate things that a designer has to budget for separately, and only the first is decided at the drawing board.
The three problems have three shapes of unknown
Setting the three side by side by what is being solved for makes the differences concrete rather than definitional.
Function generation. The unknowns are three ratios of link lengths, plus — if a designer wants them — an offset on the input angle and an offset on the output. Five numbers, no positions at all: the mechanism can be built anywhere and turned any way round, and it computes the same function. That indifference is why the problem is so much easier. Nothing in it is about the plane.
Motion generation. The unknowns are two moving pins and two ground pivots, which is eight numbers, and the prescribed data is poses, which are three numbers each. Everything is about the plane, and the linkage’s absolute position matters completely.
Path generation. The unknowns are the two ground pivots, three link lengths and the coupler point — nine numbers — and each prescribed point gives two equations while contributing one free crank angle nobody prescribed. Two constraints and one new unknown per point, so each point costs one net.
Those three accountings are the whole of why the counts come out at five, five and nine, and the arithmetic is worked through in the essay on how many precision points a linkage will take.
What the mapping decides
There is a step between “approximate ” and “solve Freudenstein’s equation” that is easy to skip and is a design decision in its own right.
The function has an input range and an output range; the mechanism has a crank angle and a rocker angle. Something has to say which crank angle corresponds to and which to , and likewise for the output. Those are the mapping, and they are free parameters.
The choices here are from 45° through 90° of sweep, and from 90° through 90°. Different choices give different linkages and different errors: the same function approximated over a 60° crank sweep and a 120° one is not the same problem, and quoting a structural error without the sweep it was measured over is the same mistake as quoting an agreement without the resolution that measured it — which the cognate essay records this site making once already.
makeMapping takes all six numbers as arguments for that reason. They are stated rather than chosen inside, so that a figure showing an error of 0.223° also shows what it is 0.223° of.
What a solution of the equation is not
Freudenstein’s linear solve always succeeds, and what it returns is not always a linkage. That gap is worth being explicit about because a linear system’s reliability is misleading here.
Three prescribed pairs give three ’s, always. Turning them into link lengths needs and , which fail if either is zero, and
which fails when the expression under the root is negative. Both happen. A designer who prescribes three angle pairs that no four-bar can achieve gets three perfectly good numbers and no mechanism, and freudenstein returns null rather than a linkage with an imaginary coupler.
There is a third failure that is harder to see. The lengths can all come out real and positive and the linkage can still be unable to reach its precision points, because the crank cannot rotate that far — Grashof’s condition is nowhere in the design equation. A function generator whose input has to sweep 90° and whose crank rocks through 60° satisfies the equation at three points it cannot get to.
So the linear solve answers a question about the relation and not about the mechanism, and every result is handed to the forward solver before anything is claimed. That is the same discipline the motion-generation essays apply to Burmester’s construction, arriving here from a completely different direction: an exact construction cannot check itself, whether it is a compass or a 3 × 3 solve.
Where the other two problems stand
Neither path nor motion generation has anything like Freudenstein’s linearity, and the reason is instructive.
Motion generation is linear in a different and less useful sense. The dyad condition — the pin’s distance from the pivot is the same in every pose — is bilinear in the pin and the pivot, which is what makes the five-position system four quadratics rather than something worse. But it is not linear in either alone, so there is no 3 × 3 solve; there is a homotopy.
Path generation is the hard one and this site does not do it. Nine precision points, nine free parameters, and a system whose solutions were first counted in the 1990s by exactly the machinery this phase’s other field built — homotopy continuation, on a scale far beyond what is tracked here. The number of solutions runs to thousands. It is named as a gap rather than implied away.
So the field’s three problems sit at three levels of tractability: a linear solve, a small polynomial system, and a research computation. The word synthesis covers all three and does the reader no favours. A textbook chapter titled “synthesis of four-bar linkages” may be about any of them, and the count it quotes is the giveaway: five means poses or angle pairs, nine means points.
Why elimination is the whole trick
The step that makes function generation tractable is worth isolating, because it is not obvious that it should work and it does not generalise.
A four-bar’s loop closure is a vector equation — two scalar equations — in which four angles appear. One of them, the coupler’s, is of no interest to a function generator: nothing is prescribed about it, and it is determined by the other three. Eliminating it is therefore free in the sense that no information is lost about anything anybody cares about.
The elimination is done by isolating the coupler vector, squaring both sides and adding, so that removes the coupler angle entirely. What comes out is one equation instead of two, in three angles instead of four.
The remarkable part is what happens to the link lengths in the process. They appear in the result only through three particular combinations, and those combinations enter linearly. That is not a general feature of eliminations — usually the surviving equation is worse in every respect than the ones it came from — and it is why Freudenstein’s name is on a rearrangement of a classical loop closure rather than on a new mechanism.
Nothing similar is available for the other two problems. In path generation the coupler angle is not free to eliminate, because the prescribed data is a point on the coupler and its position depends on that angle. In motion generation the orientation is prescribed outright. Function generation is the case where the one variable that could be removed is also the one nobody wanted, and the payoff is a linear design equation.
The mechanical computer, briefly
It is worth saying what function generators were actually for, because the answer explains why the accuracy demanded of them was what it was.
Before electronics, a linkage that computes was a component. Fire-control computers on warships, bombsights, fuel-flow controls, automotive carburettor linkages and cam-and-lever calculators all contained mechanisms whose job was to produce one angle as a prescribed function of another. Freudenstein’s paper is from 1954, which is late in that story rather than early, and part of its point was that a problem previously solved graphically could be solved with a slide rule.
The accuracy required was rarely better than a fraction of a per cent, because the rest of the instrument was not better than that either. A structural error of 0.22° of rocker over a 90° sweep is a quarter of a per cent of full scale, which is a perfectly respectable component and would be a poor calculator.
There is a second reason the tolerances were loose, and it is mechanical rather than historical. A linkage’s output is read through bearings with clearance, links with compliance and pins with wear, and every one of those contributes an error that grows with use. A structural error fixed at the drawing board competes with a mechanical error that is small when the instrument is new and is not small later. Designing the structural part to be an order of magnitude better than the mechanical part is money spent on the wrong half.
This site computes kinematics and not any of that, so it has nothing to say about where the balance falls. What it can say is which part of the error is decided by the four lengths, and that part is the one an optimiser can move.
That ratio is the whole reason approximate synthesis exists as a subject. Exactness at three points is available for free and is not what anybody wanted; what they wanted was smallness everywhere, and the two are different objectives that happen to coincide nowhere. Where the precision points go is the first move in that argument, and it is a surprisingly large improvement for a free one.
The linearity of the third problem is worth one more consequence, because it decides which of the three has a settled answer to the approximate version. A linear design equation can be over-determined and solved by least squares: prescribe twenty angle pairs rather than five, write twenty equations, and solve the normal equations for the best fit. There is no search, no starting guess, no local minimum, and the residual is the honest error of the best four-bar there is for that function. Neither of the other two problems has anything of the kind. Path and motion generation are non-linear in their unknowns, so approximate synthesis there means an optimisation — with a starting point that decides the answer, local minima that have to be argued about, and no guarantee that the linkage found is the best one. That is why the literature on function generation is full of clean least-squares results and the literature on path generation is full of optimisers, and it is not a difference of effort. One problem is linear and two are not, and every methodological difference between them follows from that single fact.
What this makes readable
Essays that name this one as a prerequisite.
- A catalogue is a search space The chain before the lengths
- Choosing the chain before the lengths The problem backwards
- How many points may be prescribed The problem backwards
- Where the precision points go The problem backwards
About the same objects
Not linked from either essay — found by the objects both name.
- The linkage that is only nearly right function generation · precision-point · structural error
- The steering that is never right function generation · precision-point · structural error
- Exactly right, and unbuildable assembly branch · kinematic synthesis
- Prescribing a curve rather than points kinematic synthesis · path generation
- The coordinates the site already had freudenstein equation · function generation
- The straightest point there is precision-point · structural error
What links here
Essays that link to this one from their own argument.
- How many points may be prescribed The problem backwards
- Where the precision points go The problem backwards
- A calibration is a synthesis with more equations Numbers that were measured
- Choosing the chain before the lengths The problem backwards
- The demand that cannot be met The shape is the unknown
- Same links, same pins, different machines The chain before the lengths
- The mechanism drops out The motion, not the mechanism
- Three machines, one curve Numbers that were measured
The objects this essay names
Each one links to every other essay that touches it.
Assembly branchFreudenstein equationFunction generationKinematic synthesisMotion generationPath generationPrecision-pointStructural error