Braccio planare a 2 giunti Parametri di giunto: theta1 , theta2. La posizione desiderata è individuata nel piano dai punti x e y. Calcolo della cinematica diretta La cinematica diretta è calcolata geometricamente e definisce le coordinate della posizione dell’ end-effector nel piano di lavoro conoscendo i parametri di giunto. π₯ [π¦] = π(π‘βππ‘π1, π‘βππ‘π2) Definite le lunghezze dei due bracci l1 = 10; % length of first arm l2 = 7; % length of second arm e definiti i valori degli angoli operativi possibili theta1 = 0:0.1:pi/2; % some first angle [rad] theta2 = 0:0.1:pi; % some second angle è possibile ricavare la posizione dell’ end-effector dalle relazioni della cinematica diretta: x = l1 * cos(theta1(i)) + l2 * cos(theta1(i)+theta2(j)); % x coordinate y = l1 * sin(theta1(i)) + l2 * sin(theta1(i)+theta2(j)); % y coordinate Calcolo della cinematica inversa E’ utie per calcolare la posizione angolare dei giunti fornendo la posizione voluta dall’end-effector [ π‘βππ‘π1 ] = π (π₯, π¦) π‘βππ‘π2 L’inversione cinematica non è sempre possibile risolverla analiticamente. Calcolo della cinematica inversa tramite ANN Definiamo il vettore di input come tutte le possibili combinazioni ricavate dalla cinematica diretta, inserendo i valori degli angoli calcolati precedentemente; queti ultimi valori costituiranno il vettore target. T=theta12; P=xy; net=newff(P,T,neurons,{'tansig','purelin'},'trainlm'); %training [net,tr]= train(net, P, T); Il sistema in catena diretta presenta dei blocchi di riferimento. Un blocco nel quale è implementata la funzione sim(net) utile per calcolare la cinematica inversa. Un blocco rappresentativo del plant che implementa la cinematica diretta calcolata precedentemente. Infine il blocco scope, utile per rappresentare le posizioni nello spazio di lavoro dei riferimenti in colore magenta e dell’ end-effector in colore giallo. La rete neurale utilizzata presenta 7 neuroni nello strato nascosto. Si nota come ci sono delle differenze tra l’andamento voluto e quello reale. Controllo con PI Poniamo dei riferimenti di coordinate e li trasformiamo in parametri dei giunti tramite rete neurale come nel primo esempio. Per realizzare questo tipo di controllo bisogna rertroazionare i valori ottenuti dal plant del robot e compararli per fornire al controllore PI gli errori di posizione di coordinate. Per rendere possibile questa conversione utilizziamo una rete nel ramo di retroazione. In seguito è mostrata la risposta del sistema.