Delta Forward Kinematics, with irregular diagonal rods

Posted by Ezrec
 Delta Forward Kinematics, with irregular diagonal rods October 15, 2015 03:31PM Registered: 9 years ago Posts: 127
I'm a bit stymied with the solution for delta forward kinematics with irregular diagonal rod lengths.

All of the papers I've found so far only have forward kinematic solutions for systems where all diagonal rods are the same.

Now, normally, the answer to this question should be 'Well, fix your rods so that the _are_ all the same!', and I would agree with you.

As it happens, I'm working on a program to do Delta calibration using Z-Probing 'off board' - using a host PC that uses GCodes to alter the Delta dimensions.

This allows me to do rapid experimentation with different auto-calibration techniques, even with 8-bit firmwares.

I've put up some preliminary (Python) code here:

https://github.com/ezrec/niledelta

I'm using Repetier firmware as my baseline (as it allows all the Delta parameters to be adjusted via EEPROM - M502).

It's derived off of dc42's RepRapFirmware branch, and I have 9 factor calibration currently in testing:

1. Endstop A trim
2. Endstop B trim
3. Endstop C trim
7. Angle A
8. Angle B
9. Diagonal

Angle C correction is not needed, as it is the reference angle.

(Yes, that does mean that I use 9 probe points)

Repetier has a neat trick up its sleeve - for the inverse kinematics (x,y,z) -> (a, b, c) it can do per-tower diagonal rod adjustments.

However, dc42's technique (which is awesome, by the way) requires the forward kinematic transport, and for the life of me I can't figure out how to make the correct solution for the case where the diagonal rod lengths are not the same.

Anyone know of a good paper explaining a solution? I'm not afraid of higher level math, just need some pointers in the right direction.
 Re: Delta Forward Kinematics, with irregular diagonal rods October 15, 2015 04:00PM Registered: 10 years ago Posts: 14,682
1. To find a more general solution to the forward kinematics, the magic word to google is "trilateration".

2. You will run into problems if you try to auto calibrate more than 3 tower position coordinates. The reason is that the extra degrees of freedom you introduce correspond to rotating or translating the bed. But the bed plane is flat or very nearly so when the machine is correctly calibrated, so translating or rotating the bed has little or no effect on the probe heights. This means that the solution matrix will become ill-conditioned and small differences in probe height will cause large translations or rotations of the bed. That is why my code adjusts the delta radius and two of the tower position angles only. I provide manual adjustment of the third tower position angle, mainly so that the orientation of the X axis can be set in a more convenient direction on a square delta machine. I could provide manual adjustment of the printing origin relative to the centre of the circle defined by the towers as well, but at present I am not aware of any good reason for doing that.

3. You should use several more probe points than factors you are calibrating. Otherwise, you will get perfect calibration at the probe points, but that tells you nothing about how level the printing plane is. It is only by having additional probe points that you can get an error figure and have an idea of how successful calibration has been and how accurate your build is.

Edited 1 time(s). Last edit at 10/15/2015 04:04PM by dc42.

Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
 Re: Delta Forward Kinematics, with irregular diagonal rods October 15, 2015 04:24PM Registered: 9 years ago Posts: 127
1. Thanks for the google-fu! Lots of useful information there.

2. I have a generalized idea for that issue, that I would like to run by you. If two columns of the normalized matrix have the same perturbed z derivatives, then I could collapse both columns and only calibrate one of the two variables represented by those columns (since delta-z of the perturbed variables were the same).

3. Ok, I was wondering about that. The RepRapFirmware recommendations I've seen seems to suggest only doing 7 probe points for the 7-factor calibration. Is that documentation incorrect?
 Re: Delta Forward Kinematics, with irregular diagonal rods October 15, 2015 05:03PM Registered: 10 years ago Posts: 14,682
2. You could do something like that, although I think that by the time you have found that the matrix is ill conditioned, it may be too late to repair the calculation without backtracking to recalculate the earlier factors. However, unless the machine is very badly built then the matrix will always be ill-conditioned. So why bother with the extra factors in the first place?

3. I guess it is easier for a kit manufacturer to tell its customers to calibrate N factors using N probe points so as to get near zero reported error, rather than to encourage them to find out what the error really is and possibly complain about it. Also, no point in making thing's more complicated than necessary for a novice user wanting to do his first print. But I recommend not calibrating the diagonal rod length unless you can probe well outside the usual circular print area. So 6 factor calibration would probably be better advice. I don't have a Fisher so I can't test on one.

Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
 Re: Delta Forward Kinematics, with irregular diagonal rods October 17, 2015 07:16AM Registered: 11 years ago Posts: 732
I use this for delta calibration. I typically run it over about 100 points and then I'm done. I have a g-code script which probes the points and then I process the printer output to get the m array value. There is no need to run it again until I change some of the printer hardware. The result is that I did not go to automate all this into a firmware or a PC application. In my usage scenario, it is rarely needed. It works well enough as it is.

If you want to allow different diagonal rod lengths between different towers then just modify the equations like this:
```A : (x-xa)^2 + (y-ya)^2 + (ta+α)^2 - ra^2 = 0 \$
B : (x-xb)^2 + (y-yb)^2 + (tb+β)^2 - rb^2 = 0 \$
C : (x-xc)^2 + (y-yc)^2 + (tc+γ)^2 - rc^2 = 0 \$```
And continue on in the notebook in an analogous way (just add ra, rb, rc where there was only r before).
But remember you must have diagonal rods of the same length on one tower. Otherwise you run in the problems dc42 indicated.

Why I did not support different diagonal rod length? It is almost useless. You still need to have the diagonal rods of the same length at one tower to have good convergence when optimizing parameters. You may as well make them all the same.
 Re: Delta Forward Kinematics, with irregular diagonal rods October 17, 2015 11:27AM Registered: 9 years ago Posts: 127
One use for irregular tower diagonals (but not irregular in parallelogram) would be for 'box delta' designs, like the D-Box Delta, as described on our forums.

I'm working on a generalized calibration solution.

hercek: Extraordinarily useful worksheet! Thank you so much!

I was not aware of wxMaxima - it will be very useful.
 Re: Delta Forward Kinematics, with irregular diagonal rods October 17, 2015 07:47PM Registered: 11 years ago Posts: 732
Ok, I did not even know there are designs which actually prefer different diagonal rod length.

Cool, enjoy the worksheet and the work on the more general calibration.
Sorry, only registered users may post in this forum.