jools wrote: How does the ballscrew mapping work ?
The concept is sound but in LinuxCNC imperfectly implemented.
My opinion is that the error characteristic must be automatically generated such as with an automatic scan via a G-code program reading a DRO scale. Manually surveying a useful amount of error data is impractical (hundreds or thousands of samples), especially if you consider that any survey is instantly invalidated by any trivial budge in the machine bearings, ways, or table assembly.
There's also a bigger problem of compensation being predicated on having a precise, repeatable homing to the same accuracy as your compensation goal. The compensation table is necessarily indexed relative to the homed position, and if the homing is not repeatable to the precise non-linearity you're attempting to correct, then the basic principle is useless. So you need a flawless automatic homing, otherwise you have to manually dial-indicate the home position on every start-up. The weakest-link principle applies, and there are a lot of links in the absolute positioning chain.
Backlash and hysteresis are the big devil. You can't compensate an open-loop system more precisely than the worst-case hysteresis. Hysteresis in ordinary ballscrews is around 0.003in, and if you can afford the $$$$ for a better ballscrew, then it won't need compensation.
See my comments in these threads from earlier this year:
Possible error in logic of LinuxCNC homing with leadscrew compensation
Lead-screw Compensation