I have built a simple robotic arm using 3 RC Servos and an Arduino.
I just want to play around with it and learn something about robotics.
Currently, I am trying to compute the position of the tip of the robotic arm using the three angular positions of the servos.
"Forward kinematics" I think is the technical term for this.
Btw the tip of the arm is a pen, I thought I might try to draw soemthing with it later on.
In the movement range of the arm I set up a cartesian coordinate system and recorded 24 (angle => position) samples.
table header: servo1, servo2, servo3, x, y, z 111,61,33,0,0,0 96,50,71,0,0 - Pastebin.com
Now, I am trying to model this data, but I am a bit out of my depth here.
Here is my approach so far:
I use the Denavit–Hartenberg equations found on Wikipedia Denavit?Hartenberg parameters - Wikipedia, the free encyclopedia.
I then try to determine the parameters using least squares optimization.
Code:
minimize(sum(norm(f(x,P)-y)^2))
I also added linear terms to the input and output of the model to compensate for possible distortions (e.g. phase-shift in the servo angle):
My Python code: [Python] Forward kinematics optimization - Pastebin.com
But it just won't work, none of my attempts have converged on a good solution.
I also tried a simple 3x4 matrix multiplication, which tbh does not make much sense as a model, but oddly it didnt do worse than the more sophisticated model above.
I hope there is some smart guy out there who can help. Thanks in advance.