Robot Puma, Cinematica inversa

Ciao a tutti! Sto facendo un progetto che consiste in un Robot Puma che dati degli input attraverso la cinematica inversa si muove in una posizione specifica negli assi x,y,z. Tuttavia qualcosa non torna, e non si posiziona nel punto desiderato. Le equazioni della cinematica dovrebbero essere corrette in quanto le ho prese da un libro di testi. Vi allego il mio codice, vi ringrazio anticipatamente!

‪#‎include‬<Servo.h>
Servo MyServo01;
Servo MyServo02;
Servo MyServo03;
const int h = 60; //anca
const int link01 = 100; //femore
const int link02 = 70; // tibia
float alpha,beta,gamma, rad, rad2, rad3;
void setup()
{
MyServo01.attach(9);
MyServo02.attach(10);
MyServo03.attach(11);
Serial.begin(9600);
}
void loop()
{
trigono_xyz(50 ,50, 50); //inserisco x,y,z
Serial.print("alpha= ");
Serial.print(alpha);
Serial.print(", beta= ");
Serial.print(beta);
Serial.print(", gamma= ");
Serial.print(gamma);
Serial.println();
delay(50);
MyServo01.write(alpha);
MyServo02.write(beta);
MyServo03.write(gamma);
}
void trigono_xyz(int x, int y, int z)
{
rad = atan2(y,x);
alpha=(180rad)/3.14;
rad3 = acos(((pow(x,2))+pow(y,2)+pow(z-h,2)-pow(link01,2)-pow(link02,2))/(2
link01link02));
gamma=(180
rad3)/3.14;
rad2 = atan2(xcos(alpha)+ysin(alpha), z-h) - atan2(link02sin(gamma), link01 + link02cos(gamma));
beta = (180*rad2)/3.14;
}

Benvenuto. Essendo il tuo primo post, nel rispetto del regolamento, ti chiediamo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO... Grazie.
Qui una serie di link utili, non inerenti al tuo problema:

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

E di quanto discosta la posizione?

non sempre di un fattore costante, il problema penso sia che nella conversione da radianti a gradi devo tener conto che i micro servo che uso hanno un range di 160°, è possibile sia questo?

trus:
non sempre di un fattore costante, il problema penso sia che nella conversione da radianti a gradi devo tener conto che i micro servo che uso hanno un range di 160°, è possibile sia questo?

Oltre al problema dei float di Arduino, solo 32 bit, c'è la questione servo, quelli economici non sono precisi.
Detto in altri termini, se non spendi almeno 50-60 Euro a servo scordati precisione, risoluzione e fluidità, il grosso del costo è dato dalla meccanica.