by Rebecca Cervasio ยท ๐ย 6 min read
<aside>
Table of Contents
</aside>
Last meeting we went briefly through the different stages of a 3D assembly: design, production, measurement, and the modifications that come after. From my research, this is how the manufacturing literature usually splits them:

Fig. 1. Different stages of assembly manufacturing: design โ planning โ production (Appl. Sci.ย 2020,ย 10(10), 3342)
In a very simplified way (from what I understand today!): an exact 3D design is created, then manufactured with some imperfections, then it is compared to the initial design through some measurement. If a modification in the design is further needed, one needs to redesign the pieces and reassemble.
Fig. 2. Lifecycle of an assembly: loosely adapted from Arch Computat Methods Eng 29, 3973โ3980 (2022)
The goal of this page is to connect the 3D assembly lifecycle with each question we discussed โ because each question sits on top of one of these lifecycle steps!
Everything in the measurement step comes down to the same problem: we have two point clouds, we do not know which point corresponds to which, and they do not even have the same number of points. When the correspondences are known (with some markers, or with a probe), the Kabsch formula gives the rotation and the translation in closed form. When they are not, ICP guesses them with nearest neighbours and calls Kabsch at each iteration โ Kabsch is the engine inside ICP. We can visualize 30 iterations of the algorithm in the video below:
The important point for us is that none of these tools is valid everywhere, and spotting that it failed can be tricky:
| Tool | Valid when | How we see it fail |
|---|---|---|
| Kabsch | The correspondences are known, and the two clouds are the same rigid object | It is a formula, so even with wrong matches it still returns a perfectly valid rotation (it does not know that the initial pairs were nonsense!). The tell is in the residuals: good matches give small errors grouped around zero, wrong matches give a distribution that spreads out or splits in two. The mean alone can hide it (some match well, others not) |
| ICP | The initial pose is already close, and the two clouds overlap enough | It converges to the wrong local minimum on symmetric parts โ high residual together with a low inlier ratio (partial overlap case) |
| Rigid transform | The part is really rigid: only its pose changed, not its shape | A bent part cannot be fitted by a rotation, so the fit tilts it to compromise and part of the deformation disappears into a wrong pose. We see it in the error map โ large smooth zones instead of the random noise |
| Point to triangle deviation | We measure against the true surface, not against sampled points | Point to point on a coarse mesh inflates the deviation where the sampling is sparse |
<aside>
The steps that come after measurement (which parts are similar, and what actually changed between two versions of an assembly) are in a separate page โ Machine Learning Ideas for 3D Assemblies.
</aside>
<aside>
Simple visualization of Kabsch algorithm: initial correspondences are needed:
</aside>
<aside>
Singular Value Decomposition:
$A=UฮฃV^T$
</aside>