While experimenting with the Universal Bed Leveling with a Z probe and wrestling with getting the delta radius set right, it dawned on me that it should be possible to deduce these from any of the mesh-style z-probing systems. The current Marlin delta auto-calibration
may actually do the following, but I don't suspect so. I'll describe it here, and maybe someone can tell me how the current auto-calibration and bed-leveling differs.
Let's assume that, when the firmware wants to place the extruder at some (X,Y, Z), there are a variety of factors which can cause the
actual Z to be different from the
desired Z:
- Errors in delta radius (which cause the bed to appear "cupped" up/down (i.e. increasing Z error with increasing radius)
- Tilt of the bed
- Slight undulations in the bed
Certainly, there are other factors (like smooth-rod length, the towers not being parallel, or not being 120-degrees apart), but I just want to focus on these three because they're hard to measure accurately manually.
Each of these can be resolved through a single round of mesh probing because they each are a type of aberration which can be checked independently of the others.
After the mesh probing, all the firmware
really has is a set of [A, B, C] values (for the number of steps of the A, B, and C tower steppers) where the z-probe triggered. It uses those values along with good starting values for rod-length, delta-radius, etc, to get a set of (X, Y, Z) values.
To correct delta radius, we take those X and Y values to calculate the radius from (0,0), so we could use linear-regression to find how Z changes with radius. If it's not zero, then the print-bed is "cupped" (relative to our X,Y,Z calculations), which means that our delta-radius values are not quite correct. So, we adjust our assumed delta radius and run the numbers again, until we have a slope of zero for Z vs radius.
To correct for bed-tilt, we just don't convert to radius: we do a 3D linear-regression to find the best normal vector of the print-bed (which is then used for the entirety of the print... so, if your bed is tilted at 1 degree, the whole model is tilted that way)
Once we have best delta radius and bed-tilts, any remaining Z error is assumed to be fluctuations in the print bed (which, unlike tilt, are "faded" as Z increases).
There may be ways of deducing other values, too. I just know that delta-radius aberration can be figured out from the current mesh probing.