I want to eliminate the variables x and y from these 3 equations in a way that all parameters appear in one equation without x and y:
A : (x-xa + ta*xsa)^2 + (y-ya + ta*ysa)^2 + (1-xsa^2-ysa^2)*(ta+oa)^2 - rod1^2 = 0;
B : (x-xb + tb*xsb)^2 + (y-yb + tb*ysb)^2 + (1-xsa^2-ysa^2)*(tb+ob)^2 - rod2^2 = 0;
C : (x-xc + tc*xsc)^2 + (y-yc + tc*ysc)^2 + (1-xsa^2-ysa^2)*(tc+oc)^2 - rod3^2 = 0;
When I throw these equations into maxima and try to use eliminate([A, B, C], [x, y]) I get an out of memory error. If I use a simpler version ((x + a1)^2 + (y + a2)^2 + a3 = 0 etc) it works but the expression is incredibly long (many pages). I could substitute the parameters back into this but the result would still be incredibly long and messy as c code.
Is there a more compact version of the solution?
My math knowledge and skills are unfortunately limited and I don't have access to Mathematica.
I would very much appreciate any help how to solve this without having to study elimination theory.
Additionally I'll have to find the derivatives of the solution in regard to the different parameters.
Thank you!
What this is about:
I'm trying to write a program to automatically calibrate a DIY open hardware "linear delta 3D printer" (parallel robot) using numerical optimization. You can "probe" to find when your effector hits the bottom flat with z = 0 and use the machine coordinates ta/tb/tc of those points to optimize the parameters to minimize the positional error while printing. For a simpler case (without the xsa etc) this works beautifully, but for a more general case that allows for more build errors I run into the above problem. I'm using a lbfgs c library to optimize the solution and random restart to find a global minimum. I will publish the resulting program under MIT license.
ta, tb, tc: coordinates along the 3 towers of the robot
oa, ob, oc: max offsets of the robot arms on the top
rod1, rod2, rod3: the length of the robot arms
xa, ya, xb, yb, xc, yc: position of the bottom triangle additionally constraint by xb : -xa, yb : ya, yc : -2*ya
xsa, ysa, xsb, ysb, xsc, yxc: tilt of the towers in the x/y plane
