A calibration is a synthesis with more equations
Assumes The coordinates the site already had.
The synthesis field prescribes three input–output pairs and finds the linkage that hits all three. This field measures thirty pairs off a machine and finds the linkage they came from.
Those sound like different problems and for the four-bar read by angle they are one system with a different word in front of it.
The same three columns
K₁ cos ψ − K₂ cos θ + K₃ = cos(θ − ψ)
Each pair of angles gives one row with coefficients (cos ψ, −cos θ, 1) and right-hand side cos(θ − ψ).
Three rows is a 3 × 3 system with one solution. That is freudenstein(pairs, { ground }), written for the synthesis side of this collection long before it had a metrology field, and used to design function generators.
Thirty rows is a 30 × 3 system with a least-squares solution. That is selfCalibration, written years of essays later for the identification side, and used to recover a machine that already exists.
Same coefficients. Same unknowns. Same closed form for the lengths afterwards. The only difference is the number of rows and where the angles came from.
What the extra rows buy
Three things, and every one of them is a question the square system cannot pose.
A residual. Three rows and three unknowns fit exactly by construction; the residual is zero whatever the data was, so a bad reading, a slipped encoder or a transcription error produces a perfectly consistent answer and no signal. The fourth row is the first one that can disagree, and everything a residual says becomes available with it.
A rank. A square system determines all of its unknowns or none, so is this parameter identifiable is not a question one can ask. A tall system can be blind in one direction and informative in the others, and that possibility is the field’s central object.
And a conditioning that depends on where the rows are. With three rows the answer is the answer; with thirty, the poses can be chosen, counted and scored, and choosing well is worth a third of the measurements.
The square case is not a special case of the tall one
A precision worth having, because three rows is a calibration with three poses is nearly right and is misleading.
A square system’s solution is the unique point where the residual is zero. A tall system’s least-squares solution is the point where the residual is smallest, which is generally not zero. When the tall system happens to be consistent — exact data, correct model — the least-squares solution is the exact one, so the two agree.
They stop agreeing the moment the data is inconsistent, which is always. And the square case does not degrade gracefully into the tall one: it has no residual to inspect, no rank question, and no conditioning that depends on where the rows are beyond whether the 3 × 3 is invertible.
So the square case is the degenerate member of the family rather than the simple one. Everything this field is about appears the moment there is one extra row and nothing about it appears before.
That is worth saying because three prescribed points is how synthesis is taught, and it teaches a habit of thinking about exactly-determined systems that has to be unlearned to think about measurement at all.
Where each field’s routine lives
For anybody following the correspondence, the two are separate routines rather than one shared with a row count, which is a decision worth defending.
freudenstein(pairs, { ground }) takes exactly three pairs and refuses any other number. It solves a 3 × 3 system, converts the K’s to lengths at the supplied ground length, and returns null when the coupler comes out imaginary.
selfCalibration(dims, { poses, noise }) builds the same rows for as many poses as it is given, forms the normal equations, and returns the K’s, the residual and the condition number.
They could have been one routine with a row count. They are not, because the two answer different questions about their output — the first asks whether a linkage exists, the second asks how well determined one is — and merging them would have produced a function whose return value depended on how many rows it got.
Two implementations of one computation is usually the fleet’s warning sign, and here it is deliberate, with the correspondence recorded in prose rather than enforced in code. What is shared is the arithmetic and what differs is the interrogation, which is the right split.
Which direction the arrow runs
The two problems differ in one more way and it is a difference of intent rather than of arithmetic.
Synthesis chooses the pairs. They are a demand — the function the mechanism is to compute — and the designer decides where they go. Where the precision points are put decides how the structural error is distributed between them, and choosing them well is a design decision with its own literature.
Calibration reads the pairs. They come off a machine, they are wherever the machine was driven, and the only choice is which configurations to visit.
Those two choices are the same choice. Precision-point placement and pose selection are one problem, and the objectives differ: synthesis places points to minimise the structural error between them, calibration places poses to maximise the smallest singular value. Both are optimisations over the same three columns evaluated at chosen angles.
That nobody has noticed the correspondence is unsurprising — the two literatures have no reason to meet — and the practical consequence is real. A pose set chosen by Chebyshev spacing, which is what the synthesis field uses, is a defensible calibration plan; a pose set chosen to maximise σ_min is a defensible precision-point set.
Three rows chosen from thirty
There is an arrangement that sits between the two and is worth knowing about, because it is what somebody does when the arithmetic has to be simple.
Measure thirty poses, pick three of them, and solve the square system. That is a calibration by synthesis: it uses the design routine unchanged, it needs no least squares, and it returns an answer.
It is a bad idea for a reason that is now easy to state. Three of thirty readings is throwing away twenty-seven rows, and with them the residual, the rank check and the averaging. The answer is determined entirely by the noise on three readings rather than by the noise on thirty averaged down, so its error is √10 times larger than it needed to be.
It is also arbitrarily worse depending on which three. Three well-spread poses give a decent answer; three crowded ones give a nearly singular system and an answer dominated by noise. Nothing about the procedure says which three were taken.
The three-from-thirty shortcut buys a simpler line of code and pays a factor of three in accuracy, and it is worth naming because it is what an engineer with a synthesis routine and a set of measurements will reach for.
The exact solution and the fitted one differ
One thing that is not the same and it matters when the data is noisy.
With three exact pairs the two problems coincide entirely. With thirty noisy pairs the least-squares solution in K-space minimises the sum of squared residuals of Freudenstein’s algebraic relation, and a non-linear fit in length space minimises the sum of squared residuals of the output angle.
Those are different objectives. The first weights each pose by how strongly the relation responds there; the second weights every pose equally in angle. On clean data they agree; on noisy data they give slightly different answers, both defensible.
A report that says “identified by Freudenstein’s method” is under-specified, and the ambiguity is invisible unless somebody asks. The field’s own routines do both and say which.
Structural error and measurement residual
Two quantities that look alike, sit in the same place on a plot, and are not the same thing at all. Keeping them apart is the main hazard of this correspondence.
Structural error is how far a synthesised linkage departs from the demanded function between its precision points. It is a property of the mechanism: a four-bar cannot compute a logarithm exactly, and the gap is real, present in a perfectly made machine measured by a perfect instrument. Where the precision points go distributes it.
Measurement residual is how far a fitted model departs from the readings. It is a property of the model and the data, and it is zero when the model matches the machine and the readings are exact.
Both are plotted against the input angle. Both are zero at some points and non-zero between. Both get called the error.
A calibrated function generator has both at once, and they are independent: a small residual and a large structural error is a machine that is perfectly understood and does not do what was wanted. Reading one as the other is the confusion this correspondence makes easiest, which is the reason to name it here rather than to leave the analogy tidy.
The other synthesis problems
The correspondence is exact for function generation and it is not exact for the others, which is worth stating so the analogy is not over-extended.
Path generation prescribes a curve rather than a relation between two angles. Its identification counterpart is measuring a traced path, and that problem has three exact answers where the function-generation problem has one — Roberts’s cognates, a discrete ambiguity with no analogue in the angle-only case.
Motion generation prescribes whole poses of the coupler plane. Its counterpart measures the coupler’s position and orientation, which recovers more parameters and is better conditioned in some directions and worse in others.
So the pairing holds across all three of the site’s synthesis problems, and only the first is linear. That is the reason this essay is about function generation: it is the case where the identity of the two problems is visible on the page rather than argued.
Reading the matrix as either problem
The figure at the top is the same object both fields build, and it repays being read twice.
As a synthesis matrix, its rows are candidate precision points. A designer picks three of them, inverts, and gets a linkage. Which three decides where the structural error goes, and a badly chosen three — two nearly together, say — gives a 3 × 3 system that is nearly singular and a linkage whose lengths swing wildly for a small change in the demand.
As an identification matrix, its rows are measured poses. All of them are used, the system is over-determined, and which poses were visited decides the conditioning.
Nearly singular and badly conditioned are the same words about the same matrix. A synthesis whose three precision points are nearly dependent and a calibration whose poses are crowded are one failure, and the site has had a name for it on one side only.
The synthesis field’s advice — spread the precision points — and this field’s measurement that spreading maximises the smallest singular value are the same advice with and without a number attached.
What each field learned that the other did not
The most useful part of the correspondence is what it transfers, and it transfers in both directions.
Synthesis knew the minimal parameterisation. Freudenstein wanted the fewest numbers a designer must choose; that set is exactly the set a measurement can recover, and this field had no need to derive it.
Synthesis knew the branch trap. The synthesis essays here record that a linkage built from three correct pairs and assembled from a generic guess reaches none of them and reports no error — 98.42° wanted, 40.46° delivered. That is exactly the calibration failure, written down here long before anything on this site was calibrated, from the design side.
And identification knows about conditioning. The synthesis field places precision points to control structural error and has never asked how sensitive the resulting linkage’s parameters are to the prescribed angles. That is a condition number of the same 3 × 3 matrix, it is computable in advance, and a badly placed precision-point set produces a linkage whose lengths are wildly sensitive to a small change in the demand.
That last one is a result the synthesis field does not have, and it comes for free from a matrix it already builds.
The tolerance field is the third reading
Having established two, it is worth completing the set, because the same matrix has a third use on this site and all three were built separately.
Read one row at a time and ask how far the output moves when a length changes, and it is a sensitivity. That is the tolerance field, which computes exactly these derivatives one configuration at a time and never stacks them.
So one matrix, three fields, arrived at independently:
prescribe three rows, invert synthesis design
one row at a time, read across tolerance prediction
stack many rows, decompose metrology measurement
Each field built what it needed and none of them knew it was building the same object. That is not inefficiency — the three implementations differ in detail, and the tolerance field’s implicit route is the one this field reuses — and it is the sort of coincidence that says the object is real rather than an artefact of one field’s convenience.
A matrix that three independent lines of argument arrive at is worth naming, which is what the identification Jacobian’s essay does.
What a designer gets from the other direction
The transfer this essay makes possible is worth stating as a recommendation rather than as an observation, because it is actionable and nobody does it.
A synthesis returns a linkage. Before building it, decompose the same 3 × 3 matrix the synthesis inverted and read its condition number. That number says how sensitive the returned lengths are to the prescribed angles — how much the machine changes if the demand is revised by a degree, or if the demand was itself specified to a tolerance.
On a well-spread set of three precision points it is small and the linkage is robust to a revised demand. On a badly-spread set it is large, and the linkage that comes back is a precise answer to a demand nobody stated that precisely.
That is a free diagnostic on an operation the synthesis field performs constantly, it uses a matrix already built, and it answers a question a designer has: how much does this linkage depend on the exact numbers the demand stated.
The site does not currently compute it. It is recorded as an unanswered question rather than a gap, since nothing in the synthesis field is wrong without it — but it is the clearest thing this field has to offer back to the one it borrowed from.
The one thing more rows cannot supply
Worth ending the comparison with the limit, because more rows is better is the essay’s refrain and it has an exception.
More rows buy a residual, a rank, conditioning and averaging. They do not buy a direction the columns cannot span. The three columns of Freudenstein’s matrix span a three-dimensional space, and no number of rows makes them span four — which is the scale direction, invisible at three rows and invisible at thirty thousand.
So the tall system is better than the square one at everything except the one thing this field spends most of its time on. That is not a paradox: rank deficiency is a property of the columns and rows have nothing to do with it.
A synthesis and a calibration have exactly the same blind spot, and neither field noticed because the square case never asks. A designer prescribing three input-output pairs and getting a linkage back has also been handed a shape and a ground length they supplied, and the routine’s signature says so — it takes a ground argument — without anybody reading it as the statement it is.
The general form
Strip out the four-bar and what remains is a statement about problems rather than about mechanisms.
A design problem prescribes as many conditions as the model has free numbers and solves. A measurement problem reads more conditions than the model has free numbers and fits. The system is the same system; the difference is its shape, and every question about identifiability, conditioning and uniqueness exists only in the tall case.
That is why this field could be built with no new solver. The matrices were all here, built for the other direction, and reading them downwards rather than across was the whole of the work.
About the same objects
Not linked from either essay — found by the objects both name.
- Every length wrong, every reading right calibration · freudenstein invariants · identification jacobian · least-squares · measurement residual
- A machine that measures itself calibration · freudenstein equation · freudenstein invariants · least-squares
- A parameter the model has not got calibration · identification jacobian · least-squares · measurement residual
- The instrument's error, multiplied calibration · identification jacobian · least-squares · measurement residual
- Six things a measurement cannot tell you calibration · identification jacobian · measurement residual
- The pose the machine cannot reach calibration · identification jacobian · measurement residual
What links here
Essays that link to this one from their own argument.
- An arm's parameters and its poses One path to the tool
The objects this essay names
Each one links to every other essay that touches it.
CalibrationFreudenstein equationFreudenstein invariantsIdentification jacobianLeast-squaresMeasurement residualPrecision positionStructural error