Autocalibration Algorithm Implementation - Explanation
I am curious to understand the algorithm and mathematics behind your auto calibration routine. I went through Steve Graves document regarding delta printer kinematics - both inverse and forward. It got me more curious regarding your auto calibration routine. I went through your google forum threads. You have pointed to wmaxima script. You also mention about numerical differentiation.
If it is possible, Can you please describe the process (pseudo code), code and point to the concerned literature, so it will be helpful for people like me who are interested in how the mathematics and code are implemented. I am trying to understand the process myself and write a python script (no object oriented but functions) as a part of learning experience.
Thanks in advance!
The principle is:
1. Use the Z probe to measure the height error at a number of points with known XY coordinates.
2. For each of the delta printer factors (up to 9) that are going to be calibrated, determine the differential of the expected height error at each of those XY points with respect to each of these factors. This could be done analytically, but the forward kinematics equations are complex; so for simplicity the code does it numerically, by bumping each factor up and down by a small amount, calculating the expected height errors after bumping, and dividing the difference by twice the bump amount.
3. Standard linear least squares is then applied to adjust the factors to minimise the sums of the squares of the height errors, by building the matrix of normal equations (Gramian matrix) and solving it.
4. Delta geometry is not linear, so the expected errors for the new factors are calculated and a second iteration of the linear least squares solution is done.
Thank you very much David! Nice explanations. I will use this as a starting point and come back to you later when I have specific questions.