Numbers that were measured

The chart breaks, the machine does not

The same two axes, over the same three and a half decades of twist. In one description a parameter runs from 0.003 to 1,102; in another the condition number is 7.5501 and does not move in the fifth figure. A quantity that diverges in one chart and is constant in another is a property of the chart.

Assumes A number that runs away.

The previous two essays are a complaint. This one is the evidence that the complaint is aimed at the right thing.

The machine is fine; the description is not. Above: the offset the Denavit–Hartenberg chart assigns to a pair of nominally parallel axes, over three decades of twist, running from 0.0030 to 1102 link lengths. Below: the condition number of the identification Jacobian in a chart that describes the second axis by two small rotations from the first and never asks for a common normal, over the same range. It is 7.5501 at every one of them, flat to 2.4e-9. The machine is the same machine in both rows and it is perfectly well behaved. What breaks is a convention that locates its parameters on a line which, for two parallel axes, does not exist.
Fig. 1 Above, a parameter running over five orders. Below, a condition number that does not move. Same two axes, same range of twist.

The other chart

Describe the second axis not by a common normal but by two small rotations from the first: α about x, β about y. Keep the offset along the axis where the nominal design puts it, and keep the two link lengths.

Four parameters again — a₁, d₂, α, β and a₂ makes five for the two-link chain used here — and none of them is read off a construction that can be degenerate. Every one is O(1) at every twist, because every one is a small rotation or an ordinary length.

That is Hayati’s repair, and its content is one sentence: stop asking where the common normal is.

What its conditioning does

Build the identification Jacobian of a two-link chain in that chart, three rows per pose from the tool point’s coordinates, fourteen poses. Decompose. Take the ratio of the largest singular value to the smallest.

30°     7.5501
10°     7.5501
 5°     7.5501
 2°     7.5501
 1°     7.5501
 0.5°   7.5501
 0.2°   7.5501
 0.1°   7.5501
 0.05°  7.5501
 0.01°  7.5501

Flat to five significant figures over three and a half decades. The spread between the largest and smallest values in that column is under one part in a thousand.

Over the same range, in the other chart, the offset goes from −0.003 to −1,102.

What that comparison establishes

This is the whole argument and it is worth stating carefully.

A property of a machine cannot depend on how the machine is written down. If a quantity computed from a geometry diverges under one description and is constant under another, then the quantity is not a property of the geometry — it is a property of the description, and the geometry is a spectator.

The two charts describe the same physical pair of axes. Any prediction either makes about where the tool goes is identical, to the last digit, because both are exact descriptions of the same lines in space. Their forward kinematics agree; their workspaces agree; their singular configurations agree.

One of them has a condition number that runs to infinity and the other does not. That difference is entirely attributable to the parameterisation, because it is the only thing that differs.

Why the flat chart is flat

Not a mystery, and saying why makes the result transferable.

The identification Jacobian’s entries are derivatives of the tool position with respect to the parameters. In the rotation chart those derivatives are ordinary trigonometric expressions in the joint variables and the small angles — bounded, smooth, and not sensitive to α being small, because α enters through sines and cosines that are perfectly well behaved near zero.

In the common-normal chart the parameters themselves are functions of the axes with a 1/α in them. Composing an ordinary map with a singular reparameterisation gives a singular map.

The singularity is in the coordinate change, not in the physics, which is exactly what a chart failing means. The rotation chart avoids it by not performing the coordinate change: its parameters are the axes’ own description rather than a construction on them.

A number that runs away. The Denavit–Hartenberg offset of a pair of nominally parallel axes, against how far from parallel they actually are, for a fixed out-of-plane tilt of 0.05°. The marks are extracted from the geometry by finding the common normal; the line is the closed form −A cos α cos β sin β / (sin²α cos²β + sin²β), and the two agree to 2.4e-16 relative over three decades. At 30° of twist the offset is 0.0030 of a link length; at 0.01° it is 1102. The dashed line is the worst case over the tilt, which sits at β = α and is exactly A/2α. Nothing about the machine has changed by as much as a degree.
Fig. 2 The upper half of the comparison on its own, with the closed form and the bound.
The common normal, and where it is. Two joint axes 1.0 unit apart, nominally parallel, 0.50° apart in one plane and 0.05° in the other. The Denavit–Hartenberg convention takes all four of its numbers from the one line that meets both at right angles, and for these two axes that line crosses the first 11.3 units from the joint — off this page by a factor of about 11, which is why the tilt here is drawn at 26° and not at a fraction of one. Along it, the "link length" of a link 1.0 unit long reads 0.9950, and the angle round the first axis reads 5.71°. Nothing has moved by more than 0.50°.
Fig. 3 And the geometry both charts describe, at the twist where one of them is already ten link lengths out.

The forward direction is fine in both

Something the comparison makes vivid and that is worth isolating, because it explains why the defect went unnoticed for decades.

Take the DH parameters of a nearly-parallel pair, including the offset of −1,102, and compose the transforms. The result is exactly right. Every operation in the composition — a rotation by θ, a translation by d, a translation by a, a rotation by α — is well conditioned on its own inputs, and the enormous d cancels against the enormous θ to produce an ordinary transform.

So a simulation, a controller, an offline programming package or a forward-kinematics routine takes the table and works perfectly. Nothing about the arm’s predicted behaviour is degraded.

The ill-conditioning is entirely in the inverse direction: from a geometry to its parameters. That direction is exercised by exactly one activity, which is fitting parameters to measurements.

A defect that only appears when a model is run backwards belongs to the field that runs models backwards, which is this one. Every other use of a DH table is untouched, which is why the tables are everywhere and why the defect is a specialist’s concern rather than a general one.

What the flat chart costs

It is not free and the cost is exactly the property the common-normal construction was for.

The rotation chart uses five parameters for a two-link chain where DH uses four. The extra one is β, and β is the parameter DH does not have — the out-of-plane tilt that the common normal was absorbing.

So the rotation chart is not minimal. Away from parallel it has a redundant direction: for two axes at thirty degrees, the effect of β can be produced by a combination of the other four, and a fit in those coordinates has a nearly flat direction of its own.

That is the trade in one sentence. The common-normal chart is minimal and singular where the design lives; the rotation chart is regular and redundant. Neither is right everywhere, and the standard practice — use DH except at nominally parallel pairs, where a β is added — is the sensible compromise rather than a fudge.

What the flat column is not

Three readings of the flat column that would be wrong, since a constant is easy to over-interpret.

It is not a claim that the rotation chart is good in general. It is a claim that its conditioning is insensitive to the twist. A pose set that were badly chosen would give a large constant, and a large constant is still a bad chart to fit in — it would simply be equally bad at every twist.

It is not a claim that the two charts have comparable condition numbers. They have different numbers of parameters, in different units, on different matrices. Comparing 7.5501 against the DH chart’s own condition number would be comparing two different quantities, which is why the figure plots the offset above rather than a rival condition number.

And it is not a statement about the physical arm’s own conditioning. An arm’s Jacobian — the map from joint rates to tool velocity — has a conditioning of its own that says how well it can be controlled, and this is not that. Two entirely different matrices are called Jacobians in this subject and only one of them is about parameters.

Keeping those apart matters here more than elsewhere, because the whole essay is an argument that a number belongs to a chart rather than to a machine, and it would be self-defeating to make the same mistake in the other direction.

What is being held constant

A comparison of two charts is only evidence if the thing being described is the same in both, and it is worth checking that carefully rather than asserting it.

The geometry held fixed is: axis one along z through the origin; axis two through the point (A, 0, 0), with direction obtained from z by a rotation α about x and a rotation β about y; link lengths a₁ and a₂; an offset d₂ along the second axis. That is a physical arrangement of lines and lengths, stated without reference to either chart.

The DH parameters are extracted from it by the common-normal construction. The rotation-chart parameters are read off it directly. Both describe the same arrangement, and a tool position computed either way agrees to machine precision at every configuration tested.

So the comparison is between two encodings of one thing, which is what makes the conclusion available. If the two charts described slightly different machines, the difference in conditioning would be a difference between machines and would establish nothing.

That check is the reason the essay can make the claim it makes, and it is the sort of check that is easy to skip because both descriptions are called “the arm”.

Why this needed measuring at all

A reader who accepted the previous two essays might think this one is unnecessary — of course the trouble is in the chart, the essays said so.

They asserted it. The evidence for an assertion of that kind has to be a second description in which the trouble is absent, because without one there is a live alternative: that the geometry of nearly parallel axes is genuinely hard to determine, that any description of it would struggle, and that the common normal is merely the messenger.

That alternative is not absurd. Nearly parallel axes are a near-degeneracy of a real kind — an arm whose shoulder and elbow axes are exactly parallel has a planar sub-chain with its own singular behaviour — and it would be reasonable to suppose the parameters inherit it.

The flat column refutes it. A description exists in which nothing is difficult, so the difficulty was not in the object. That is the only form of evidence available for a claim about a chart, and producing it is why this is a separate essay rather than a paragraph in the last one.

The fourteen poses matter too

A caveat that keeps the flat column honest.

A condition number is computed on an identification Jacobian, and an identification Jacobian depends on the poses as well as on the chart. The flat 7.5501 is the value for fourteen poses spread over the two joints’ ranges, and a different pose set gives a different constant.

What does not change is the flatness. Any reasonable pose set gives a condition number that is constant in the twist, because the twist enters the derivatives through bounded trigonometric functions and nothing about the pose set alters that. The value moves; the behaviour does not.

That distinction is the same one the pose-choice essays keep making. A condition number is a property of the mechanism, the chart, the instrument and the poses, and a comparison is only meaningful with three of the four held fixed. Here the chart is varied and the other three are not.

Two failures at the ends of one axis

Putting this beside the rest of the field, the two chart failures are the same two failures the model-choice essays describe.

Too few parameters and the model cannot express the machine: the missing parameter is absorbed, the residual will not fall, and the parameters that remain are systematically wrong.

Too many and the model has a direction the data cannot see: the fit returns an arbitrary number along it, the residual is perfect, and nothing signals the problem.

A chart is a model, so it inherits both. DH near a parallel pair is the first kind in disguise — it can express the geometry but only with parameters that run away, which is expressibility of no practical use. The rotation chart away from parallel is the second kind exactly.

And the diagnostic is the same in both cases: the rank and the conditioning of the identification Jacobian, computed before any measurement, from the drawing.

Six per joint is two too many. The number of parameters a serial chain's model carries, against the number of revolute joints. The upper bar of each pair counts six for every joint transform and six for each of the base and tool frames, which is what a reader expects; the lower bar is the number a measurement can distinguish. At 6 joints they are 48 and 30. The difference is not a saving, it is a warning: a model with 48 parameters fitted to any amount of data has an 18-dimensional set of exactly equivalent answers, so the fit returns whichever one the damping happens to prefer and every one of its numbers is arbitrary. Four per revolute because a rotation about the joint's own axis changes nothing and a translation along it is the joint variable; six rather than twelve for the two frames for the same reason, one level out.
Fig. 4 The parameter counting that makes minimality worth wanting, and that the flat chart gives up.
The common normal, and where it is. Two joint axes 1.0 unit apart, nominally parallel, 5.00° apart in one plane and 0.05° in the other. The Denavit–Hartenberg convention takes all four of its numbers from the one line that meets both at right angles, and for these two axes that line crosses the first 0.1144 units from the joint, which is where a reader would expect it: at 5.00° of twist the chart is perfectly well behaved, and it is the approach to parallel that breaks it. Along it, the "link length" of a link 1.0 unit long reads 0.9999, and the angle round the first axis reads 0.57°. Nothing has moved by more than 5.00°.
Fig. 5 And the same pair at five degrees, where both charts are unremarkable and the choice between them is a matter of taste.

Why 7.5501 and not something better

A number that does not move invites the question of whether it is any good, and 7.5 is a perfectly ordinary condition number rather than an impressive one.

It is the conditioning of a five-parameter identification of a two-link chain from fourteen tool positions, and it says the worst-recovered combination is seven and a half times less observable than the best. That is comfortable — the worst parameter comes back at seven and a half times the instrument’s error rather than at a thousand times.

It is also improvable in the ordinary ways: more poses, better-chosen poses, a second kind of reading. All the levers this field has apply, and they apply the same way at every twist, because the conditioning does not depend on the twist.

That is the useful sense in which the chart is good. Not that the number is small, but that the number is a normal engineering quantity subject to normal engineering improvement, rather than a quantity that runs away for reasons nothing about the measurement can touch.

The contrast is the whole point. In one chart a calibration engineer can improve the answer by measuring better. In the other, no amount of measuring better changes that two parameters are trading against each other by a factor of a thousand.

The rule this suggests

Generalising past serial arms, because the same thing happens elsewhere.

A parameterisation obtained by a geometric construction inherits the construction’s degenerate cases. A common normal fails for parallel lines; an Euler-angle triple fails at a pole; a pitch fails for a pure translation; a plane through three points fails when they are collinear.

Each of those is a perfectly good chart with a hole in it, and each is used routinely because outside the hole it is minimal and convenient. What a designer has to check is whether the intended configuration is near the hole — and unlike most checks in engineering, this one is answered by looking at the construction rather than at the machine.

The check has a mechanical form. Compute the condition number of the identification Jacobian in the chart, at the nominal design, and again at a design a few degrees away. If it moves by orders of magnitude, the chart is singular nearby.

That costs one decomposition and it is the same instrument the whole field uses for everything else.

The same test, applied elsewhere on the site

The instrument this essay uses — compute a conditioning in two charts of one object and see whether it moves — is cheap and general, and it is worth naming two other places on this site where it would say something.

A screw’s pitch diverges for a pure translation, so a chart on the space of screws that uses (axis, pitch) is singular there while one that uses a six-vector is not. The site already prefers the second, for reasons of composition rather than of conditioning, and the test would have agreed.

Euler angles are singular at a pole and a rotation matrix is not. Same statement, older, and the site uses matrices throughout.

In both cases the site’s existing choice is the well-conditioned one and was made for other reasons. That is worth recording as evidence about the practice rather than about the chart: a chart chosen for composability tends also to be a chart without a construction in it, and constructions are where singularities come from.

The place the test has not been run is the one where it would be most interesting — a spatial loop’s parameters, where the site uses twists and offsets and where a nearly-degenerate axis arrangement would be the analogous case. That is recorded as unanswered.

What the site does

Nothing on this site is described in DH parameters near a parallel pair, and it was not a decision made for this reason.

The serial field builds its arms from explicit joint axes — a direction and a point for each — which is six numbers per joint rather than four. The map from geometry to parameters is then the identity, and an identity cannot be ill-conditioned.

The price is that the description is redundant, by two numbers per joint plus a whole frame, so a fit in those coordinates has redundant directions in the ordinary way. That is a manageable problem with a known diagnostic; a chart that diverges where the design aims is not.

Given the two, the redundant chart is much the better choice for identification, and the minimal one is the better choice for a description that a human reads. That they are different charts for different purposes is the honest conclusion, and it is not the way either is usually presented.

There is a third option that gets the best of both and is what serious practice does: fit in the well-conditioned chart, then convert the answer to the minimal one for reporting, away from the parallel pairs where the conversion is safe. That is two charts and a map between them, which is more machinery than either alone and is the right amount for a job that has two incompatible requirements.

What it needs is somebody to notice that the requirements are incompatible, and the noticing is what this essay is for.

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.

CalibrationCommon normalDH parametersIdentifiableIdentification jacobianParallel axis defectParameter chartSingular value