Se i parametri di Denavit-Hartemberg non corrispondono con quelli di progetto a causa di tolleranze meccaniche, si può avere una errata corrispondenza tra la posizione realmente ottenuta imponendo dei valori alle variabili di giunto e la posizione calcolata tramite cinematica diretta. Tale accuratezza di posizionamento può dipendere dalla posizione nello spazio di lavoro. L’effetto appena descritto causa effetti sistematici. Altra cosa è la ripetibilità di posizionamento, essa dipende dalla struttura meccanica, dai trasduttori e dal controllo NOTA: Tramite taratura si possono compensare gli effetti sistematici ma non quelli casuali connessi con la ripetibilità Taratura Cinematica
La procedura di taratura ha sempre come obiettivo: determinare stime accurate dei parametri del modello matematico Effettuare una stima dell’accuratezza del sistema in funzione del campo di lavoro La procedura si basa sulla raccolta di dati sperimentali ingresso-uscita confrontati con un sistema più accurato almeno di un ordine di grandezza Nel nostro caso è necessario un sistema di misura della posizione dell’organo terminale che abbia un volume comparabile ed un’accuratezza di un ordine di grandezza migliore rispetto all’applicazione cui il robot è demandato (la procedura non si basa sulla misura diretta dei parametri geometrici – del resto notevolmente più complessa) Nel nostro caso i parametri sono quelli di Denavit-Hartemberg ovvero della cinematica diretta Taratura Cinematica
Taratura Cinematica – stima dell’incertezza In ipotesi di distribuzione gaussiana degli effetti interferenti, l’accuratezza si stima tramite varianza definita come: Nel caso di un robot si ha: che il problema non è scalare: la postura è un vettore in generale di 6 componenti che i valori dei residui [x1 … xl], se la procedura di taratura è arrivata al punto di compensare gli effetti sistematici, hanno valor medio circa zero Dunque si può stimare la matrice di covarianza come: Taratura Cinematica – stima dell’incertezza
… ripassiamo il caso scalare Da cui scaturisce una matrice di dimensione m x m: l il numero di ripetizioni Come si impiega tale matrice per la stima dell’incertezza? … ripassiamo il caso scalare Taratura Cinematica – stima dell’incertezza
p x ( ) . 680 2 950 3 997 p(zi >z) p(zi<z) = F(z) -3 -2 -1 1 2 3 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 z p(zi<z) = F(z) p(zi >z) Probability Density Function PDF 5 Valori notevoli: p x ( ) . 680 2 950 3 997 Valori notevoli spiegare il significato di questi valori Taratura Cinematica – stima dell’incertezza
Taratura Cinematica – stima dell’incertezza scalare Intervallo pari a ±2 x: posizione Intervallo pari a ±2 x0: posizione attesa (media) … quindi possiamo dire che la posizione del manipolatore è pari a: x0 ± 2 con il 95% di probabilità Ovvero che c’è una probabilità del 95% che la vera posizione del manipolatore cada all’interno dell’intervallo [x-2 x+2] Taratura Cinematica – stima dell’incertezza scalare
Taratura Cinematica – stima dell’incertezza vettoriale Densità di probabilità bidimensionale: Le due coordinate possono rappresentare la posizione nel piano della pinza di un robot planare Taratura Cinematica – stima dell’incertezza vettoriale
Taratura Cinematica – stima dell’incertezza vettoriale La funzione vista dall’alto rappresenta i punti di equiprobabilità che uniti tracciano delle ellissi che coincidono con la forma quadratica all’esponente della formula della gaussiana … nel caso scalare i punti di equiprobabilità erano sempre due equispaziati dalla media Taratura Cinematica – stima dell’incertezza vettoriale
Taratura Cinematica – stima dell’incertezza vettoriale Come si perviene all’intervallo nel caso scalare? k x0 Taratura Cinematica – stima dell’incertezza vettoriale
Taratura Cinematica – stima dell’incertezza vettoriale Analogamente nel caso vettoriale: Che è una forma quadratica associata ad una matrice definita positiva (tale matrice è proprio la matrice di Covarianza! Calcolata dagli scarti al quadrato) e quindi un ellisse! Taratura Cinematica – stima dell’incertezza vettoriale
Taratura Cinematica – stima dell’incertezza vettoriale x0 S0 S1 x v Se opero la seguente trasformazione: matrice degli autovettori di C Taratura Cinematica – stima dell’incertezza vettoriale
Taratura Cinematica – stima dell’incertezza vettoriale NOTA: la matrice C-1 è simmetrica e quindi gli autovettori sono ortogonali 1 ed 2 sono gli autovalori di C Equazione dell’ellisse nelle coordinate S1 Cosa rappresenta A??? Cosa rappresentano 1 2 ??? Taratura Cinematica – stima dell’incertezza vettoriale
Taratura Cinematica – stima dell’incertezza vettoriale Nota sugli autovalori ed autovettori della matrice inversa Quindi gli autovettori di C e C-1 sono gli stessi, gli autovalori sono inversi, per questo 1 ed 2 sono gli autovalori di C Taratura Cinematica – stima dell’incertezza vettoriale
S1 S0 Taratura Cinematica – stima dell’incertezza vettoriale Cosa rappresenta A: S1 S0 la trasformazione A rappresenta una trasformazione di coordinate: la matrice C è simmetrica e quindi gli autovettori sono tra loro ortogonali. Verosimilmente è dal sistema 1 allo 0. In questo modo l’equazione è un ellisse in forma canonica: Taratura Cinematica – stima dell’incertezza vettoriale
Taratura Cinematica – stima dell’incertezza vettoriale La probabilità che la vera posizione del manipolatore sia all’interno di un ellisse di equiprobabilità è pari all’integrale della funzione all’interno dell’ellisse stesso Analogamente al caso scalare si ha che integrando all’interno dell’ellisse associato alla matrice con elementi pari a circa due volte gli autovalori la probabilità è 95% … in questo caso la probabilità che la vera posizione del manipolatore cada all’interno dell’ellisse tracciato in figura è del 95% Taratura Cinematica – stima dell’incertezza vettoriale
Esempio - Stima dell’incertezza di posizionamento % Generazione stocastica delle variabili: Niter = 5000; a1 = normrnd(1, 10e-3, Niter, 1); a2 = normrnd(1, 10e-3, Niter, 1); teta1 = normrnd(pi/2, 1*pi/180, Niter, 1); teta2 = normrnd(-pi, 1*pi/180, Niter, 1); % Cinematica diretta: Px = a1.*cos(teta1) + a2.*cos(teta1+teta2); Py = a1.*sin(teta1) + a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on Esempio - Stima dell’incertezza di posizionamento
Esempio - Stima dell’incertezza di posizionamento % Generazione stocastica delle variabili: Niter = 1000; a1 = normrnd(1, 10e-3, Niter, 1); a2 = normrnd(1, 10e-3, Niter, 1); teta1 = pi/2; %gli angoli sono conosciuti teta2 = -pi; % Cinematica diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on Esempio - Stima dell’incertezza di posizionamento
Esempio - Stima dell’incertezza di posizionamento % Generazione stocastica delle variabili: Niter = 1000; a1 = 1; a2 = 1; teta1 = normrnd(pi/2, 1*pi/180, Niter, 1); teta2 = normrnd(-pi, 1*pi/180, Niter, 1); % Cinematica Diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on Esempio - Stima dell’incertezza di posizionamento
Esempio - Stima dell’incertezza di posizionamento % Generazione stocastica delle variabili: Niter = 1000; a1 = normrnd(1, 10e-3, Niter, 1); a2 = normrnd(1, 10e-3, Niter, 1); teta1 = normrnd(pi/2, 1*pi/180, Niter, 1); teta2 = normrnd(-pi, 1*pi/180, Niter, 1); % Cinematica Diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on Esempio - Stima dell’incertezza di posizionamento
Se andiamo ad ingrandire la zona della posizione nominale dell’organo finale: v1 v2 Che restituisce i seguenti autovalori ed autovettori: Esempio - Stima dell’incertezza di posizionamento
Come sarà disposto adesso l’ellisse? % Generazione stocastica delle variabili: Niter = 5000; a1 = normrnd(1, 10e-3, Niter, 1); a2 = normrnd(1, 10e-3, Niter, 1); teta1 = normrnd(pi/2, 1*pi/180, Niter, 1); teta2 = normrnd(-135*pi/180, 1*pi/180, Niter, 1); % Cinematica diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on Come sarà disposto adesso l’ellisse? Che autovalori ed autovettori avrà? Esempio - Stima dell’incertezza di posizionamento
Esempio - Stima dell’incertezza di posizionamento % Generazione stocastica delle variabili: Niter = 5000; a1 = normrnd(1, 10e-3, Niter, 1); a2 = normrnd(1, 10e-3, Niter, 1); teta1 = normrnd(pi/2, 1*pi/180, Niter, 1); teta2 = normrnd(-135*pi/180, 1*pi/180, Niter, 1); % Cinematica diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on Esempio - Stima dell’incertezza di posizionamento
Se andiamo ad ingrandire la zona della posizione nominale dell’organo finale: v2 v1 Esempio - Stima dell’incertezza di posizionamento
Esempio - Stima dell’incertezza di posizionamento % Generazione stocastica delle variabili: Niter = 1000; a1 = normrnd(1, 10e-3, Niter, 1); a2 = normrnd(1, 10e-3, Niter, 1); teta1 = normrnd(pi/2, 1*pi/180, Niter, 1); teta2 = normrnd(-135*pi/180, 3*pi/180, Niter, 1); % Cinematica Diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on Esempio - Stima dell’incertezza di posizionamento
Se andiamo ad ingrandire la zona della posizione nominale dell’organo finale: v2 v1 Notare la corrispondenza tra autovettori ed autovalori associati Esempio - Stima dell’incertezza di posizionamento
Esempi di applicazione della stima dell’incertezza: - robot di misura (ovvio) - inserimento verticale di un oggetto !!! % Generazione stocastica delle variabili: Niter = 1000; a1 = normrnd(1, 10e-3, Niter, 1); a2 = normrnd(1, 10e-3, Niter, 1); teta1 = normrnd( ? , 1*pi/180, Niter, 1); teta2 = normrnd( ? , 3*pi/180, Niter, 1); % Cinematica Diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on In questo caso in quale postura programmereste il robot per una operazione di inserimento verticale? (una applicazione in cui è importante centrare il foro ma meno la profondità di inserimento) Esempio - Stima dell’incertezza di posizionamento
… partiamo di nuovo dal caso scalare Fino adesso abbiamo usato la conoscenza del modello matematico (cinematica diretta) e della densità di probabilità (supposta gaussiana) associata con i suoi parametri per determinare la densità di probabilità associata con il vettore posizione impiegando la simulazione Montecarlo Se però si vuole la stima dell’incertezza in tempo reale è necessario determinare formule chiuse di propagazione per l’espressione della densità di probabilità, ovvero della matrice di covarianza … partiamo di nuovo dal caso scalare Taratura Cinematica – Stima esplicita dell’incertezza
Abbiamo a disposizione un modello (espresso attraverso una generica funzione f ) che lega una variabile y ai parametri xi (supponiamo i = 2 per semplicità) vogliamo stimare l’incertezza su y,conoscendo le incertezze sulle singole xi. Calcoliamo lo sviluppo in serie di Taylor troncato al primo ordine: Taratura Cinematica – Stima esplicita dell’incertezza
Taratura Cinematica – Stima esplicita dell’incertezza Determiniamo la varianza secondo la classica definizione, impiegando l’operatore E{.} definito valore atteso (Expected value) a cui sappiamo corrispondere una operazione di media: nel caso in questione (ipotizzando densità di probabilità gaussiana a media nulla per ciascun parametro): Ricordando: Taratura Cinematica – Stima esplicita dell’incertezza
Taratura Cinematica – Stima esplicita dell’incertezza E quindi: Nel caso di non correlazione tra i due parametri = 0 Che fornisce la classica formula di propagazione dell’incertezza combinata (di Kline Mc Klintoc): Taratura Cinematica – Stima esplicita dell’incertezza
Dunque nel caso vettoriale (supponiamo per semplicità un vettore a due componenti): dove f è lo Jacobiano della funzione f E quindi: Taratura Cinematica – Stima esplicita dell’incertezza
non è altro se non una mera generalizzazione vettoriale della formula di propagazione dell’incertezza combinata Verifichiamolo: Taratura Cinematica – Stima esplicita dell’incertezza
Torniamo al caso del manipolatore planare: Considerando solo i parametri angolo (non i parametri lunghezze dei bracci): [1 2] Lo Jacobiano è funzione della postura del robot Esempio – Stima esplicita dell’incertezza
Andiamo a verificare un esempio: % Generazione stocastica delle variabili: Niter = 1000; a1 = 1; a2 = 1; teta1 = normrnd(pi/2, 1*pi/180, Niter, 1); teta2 = normrnd(-pi, 1*pi/180, Niter, 1); % Cinematica Diretta: Px = a1.*cos(teta1)+a2.*cos(teta1+teta2); Py = a1.*sin(teta1)+a2.*sin(teta1+teta2); plot(Px, Py, '.'), axis([-1 1 -0.50 1]), grid on intervallo Esempio – Stima esplicita dell’incertezza
Esempio – Stima esplicita dell’incertezza Si risolva il caso di incertezza anche sui parametri di lunghezza dei bracci (considerandoli scorrelati, ovvero ipotizzando alcune correlazioni): Se entrambi i bracci sono stati realizzati mediante la stessa macchina utensile Esempio – Stima esplicita dell’incertezza