zenodo 15830311, G1 multi-pass 5-axis flank CNC machining conicalIn the base case, the machine was built exactly to design. The whole chain played through, and the finished parts matched the paper's 45 measuring points to 0.0019 mm on average for NX and 0.0047 mm for G1. The two finishes cut the same face from opposite B/C solutions: NX with B −6.56…−5.00° and C 45–125°, G1 with B +5.24…+6.58° and C 244–299°.
Here an AI agent was asked to show what one constant geometric error of the machine does to an accepted case. It picked an error common on five-axis machines: the C axis turns about a centre 0.020 mm off in +X from where the controller thinks it is. ISO 230-7 calls this EX0C. The error sits on a branch of its own directly upstream of the C axis, as a static translation marked as an error term. The simulated controller works out the machine coordinates without that branch, like a real controller that does not know its machine's error. The simulated machine still moves and cuts with it.
On a real machine, a touch-off at B = C = 0 would absorb the shift the error causes there into the work offsets. So every run with the error on used the two Heidenhain presets that such a touch-off finds.
Before the first play, the agent wrote down its prediction and seven pass criteria. Then it played each finish four times at 0.0625 mm, the case's acceptance grid. Each play started from the case's stand-in for the semi-finished stock: the design face grown outward by 0.484 mm. The four plays were:
Pictures rendered by HiNC at 0.0625 mm from the NC programs and blade model of K. Rajain et al., Zenodo 15830311, CC BY 4.0, on the case's generic machine with the error the agent built in. Diff colours: red = cut too deep, blue = material left, green = same as the nominal cut. The scale runs from −0.03 to +0.03 mm, so both signs get equal weight.
| Key number | What it is |
|---|---|
| 0.020 mm | how far the C axis's centre of rotation sits off in +X (EX0C): a typical size the agent chose, since the paper measured no machine error |
| 2.6×10⁻¹³ mm | largest gap between the formula (d(1 − cos C), −d·sin C, 0) and the tip offset at NX's 1,757 cutting steps, where d = 0.020 mm and C is the step's C angle; at G1's 1,487 steps the gap is 1.4×10⁻¹³ mm |
| +0.0101 / +0.0184 / +0.0266 mm | the NX face against its own nominal cut, p01 / median / p99: material left, so the blade is thicker |
| −0.0291 / −0.0215 / −0.0114 mm | the G1 face, measured the same way: cut too deep, so the blade is thinner |
| 0.0010 / 0.0004 mm | NX / G1: largest gap between the five medians along the chord and the prediction written before the first play |
| 9 → 20 | the paper's G1 points outside ±0.01 mm, out of 25: base case → with this error (derived from the measured shift, not from a play) |
| 5×10⁻¹⁰ mm | largest gap, vertex by vertex, between the nominal part and the part cut by a controller that knows the error |
| 31 min | the eight full plays one after another on the shared 32-thread server, restarts included; each play took 55–286 s and at most 5.64 GiB of memory |
A single translation in front of the C axis shifts the table by the error even at C = 0. A real touch-off at B = C = 0 absorbs that shift into the work offset. HiNC's own program-zero measurement works on the nominal chain, so it does not. This case also has two presets. NX runs from preset 1, the block's top corner. G1 starts from preset 2, the C table's centre, and a datum shift brings it back to the same program zero. So the runs with the error on typed in the presets such a touch-off finds: (−29.98, −25, 46.6) and (0.02, 0, −100). Had either been missed, every step of that program would carry a constant offset. None does.
The design proposed showing a tenfold error, 0.2 mm, in the pictures. At that size the cutter would miss the stand-in stock on about 2 % of the finished face, all along the lower edge of the NX bottom pass; the deviation would be clipped there, and every picture and number would need converting back. At the real 0.020 mm, though, the deviations are only 16–46 % of a 0.0625 mm cell and could have drowned in noise. The plan ran the real size only, and the grid reads it. The run where the controller knows the error lands within 5×10⁻¹⁰ mm of the nominal cut. The control's Diff stays within ±0.001 mm. At 99 % of the points, the measured face agrees with an independent sweep of the cutter to 0.0004 mm.
Checked over every step, not only the cutting ones, 137 NX steps and 168 G1 steps were off the formula, by up to 0.0355 mm. Grouped by program line, they are the tool calls, the B/C turn before M128, the first rapid approach after it, and the B/C return after M129. In 03 and 04.1 the tool-change position is a fixed machine position that no typed preset moves, so there the tip is off by the error itself: 0.020 mm, turned with C (−0.020 mm in X at C = 0). The other steps are transitions. The first rapid after M128 and the return after M129 are interpolated in machine coordinates between such positions and the formula, and in 04.2 and 04.3 the tool call and the B/C turn wait where the previous program ended. None of them touches the part, and each play's own machine coordinates, run through the kinematics, reproduce every one of them to 1.7×10⁻¹³ mm. By the same reasoning, on a real machine with this error the approach would be off by the same amount, in the air.
The paper measured its 45 points on blades finished from real semi-finished stock. To save the roughing and semi-finishing (197,265 steps, 1 h 54 min), every run here starts from the stand-in stock, with physics off. So the agent measured the shift the error causes at each point on the stand-in and added it to the base case's accepted reading. Adding is sound for two reasons. The finish removes all the stock at those points, and the base case's own stand-in trial and its full acceptance agreed there to 0.0014 mm. Wherever the page uses the result, it calls it derived: 20 of the 25 G1 points end up outside ±0.01 mm instead of 9.
The other seven are in the full record. Among them: a check the plan asked for on steps at C = 0, when no step under M128 has C = 0; the question of which run the machine coordinates should be compared with; and whether "NX at least 99 % positive" should count a strip of stand-in stock that the finishing cutter never reached.
All twelve plays finished, eight at 0.0625 mm and four trimmed ones at 0.25 mm. There was no collision and no rapid move through material. NX took 2,410 steps a play and G1 2,011, as in the base case.
With the controller unaware of the error, the tip at every cutting step sits on the predicted offset, within 2.6×10⁻¹³ mm. The offset depends on the C angle alone. At C 45–125°, the NX cutter moves to the air side of the face; at C 244–299°, the G1 cutter moves into the material. So the NX face is left thick all over: 98 % of it by +0.0101 to +0.0266 mm, more toward +X. The G1 face is cut too deep all over: 98 % of it by −0.0291 to −0.0114 mm, deepest toward −X. Along the chord, the medians stay within 0.0010 mm of the prediction, and they do not change with height.
Derived by adding the shift to the base case's readings, 20 of the paper's 25 G1 points would fall outside ±0.01 mm, against 9 without the error; the paper measured all 25 inside. None of this tells whether the authors' machine has such an error: the paper does not say how its measurements were aligned, and an alignment can take up part of an offset.
With the mark cleared, the controller puts the tip back on the program and cuts the nominal part to 5×10⁻¹⁰ mm. To do so it moves X by about +0.020 mm and Z by about 0.002 mm more than the nominal run at every cutting step, and leaves B and C unchanged. The control run repeats the nominal run step for step, and its Diff stays within ±0.001 mm.
The agent chose the error's size and sign. With the error in −X, the signs would swap: NX thinner, G1 thicker. Everything here is simulated; no blade was cut.
Read the full case record: BCAM thin blade, C axis 0.02 mm off
The accepted case this page builds on, with how the blade was placed, the tools worked out and the machine chosen: BCAM thin blade.