M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Taratura Cinematica La procedura di taratura ha sempre come obiettivo: 1.determinare stime accurate dei parametri del modello matematico 2.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
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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 [ x 1 … x l ], 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:
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Taratura Cinematica – stima dell’incertezza Da cui scaturisce una matrice di dimensione m x m: Come si impiega tale matrice per la stima dell’incertezza? … ripassiamo il caso scalare l il numero di ripetizioni
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Valori notevoli: px px px (). (). (). z p(z i <z) = F(z) p(z i >z) Taratura Cinematica – stima dell’incertezza Probability Density Function PDF
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Taratura Cinematica – stima dell’incertezza scalare x: posizione Intervallo pari a ±2 x 0 : posizione attesa (media) Intervallo pari a ±2 … quindi possiamo dire che la posizione del manipolatore è pari a: x 0 ± 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 ]
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Taratura Cinematica – stima dell’incertezza vettoriale Come si perviene all’intervallo nel caso scalare? x0x0 k
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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!
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion x0x0 00 11 x v matrice degli autovettori di C Se opero la seguente trasformazione: Taratura Cinematica – stima dell’incertezza vettoriale
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 1 ed 2 sono gli autovalori di C Equazione dell’ellisse nelle coordinate 1 Cosa rappresenta A??? Cosa rappresentano 1 2 ??? Taratura Cinematica – stima dell’incertezza vettoriale NOTA: la matrice C -1 è simmetrica e quindi gli autovettori sono ortogonali
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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 Nota sugli autovalori ed autovettori della matrice inversa
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 00 11 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 Cosa rappresenta A:
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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%
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion % 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([ ]), grid on Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion % 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([ ]), grid on Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion % 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([ ]), grid on Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion % 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([ ]), grid on Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Se andiamo ad ingrandire la zona della posizione nominale dell’organo finale: Che restituisce i seguenti autovalori ed autovettori: v1v1 v2v2 Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion % 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([ ]), grid on Esempio - Stima dell’incertezza di posizionamento Come sarà disposto adesso l’ellisse? Che autovalori ed autovettori avrà?
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion % 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([ ]), grid on Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Se andiamo ad ingrandire la zona della posizione nominale dell’organo finale: Esempio - Stima dell’incertezza di posizionamento v2v2 v1v1
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion % 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([ ]), grid on Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Se andiamo ad ingrandire la zona della posizione nominale dell’organo finale: v2v2 v1v1 Notare la corrispondenza tra autovettori ed autovalori associati Esempio - Stima dell’incertezza di posizionamento
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Esempio - Stima dell’incertezza di posizionamento Esempi di applicazione della stima dell’incertezza: - robot di misura (ovvio) - inserimento verticale di un oggetto !!! 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) % 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([ ]), grid on
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Abbiamo a disposizione un modello (espresso attraverso una generica funzione f ) che lega una variabile y ai parametri x i (supponiamo i = 2 per semplicità) vogliamo stimare l’incertezza su y,conoscendo le incertezze sulle singole x i. Calcoliamo lo sviluppo in serie di Taylor troncato al primo ordine: Taratura Cinematica – Stima esplicita dell’incertezza
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion 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:
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion E quindi: Che fornisce la classica formula di propagazione dell’incertezza combinata (di Kline Mc Klintoc): Nel caso di non correlazione tra i due parametri = 0 Taratura Cinematica – Stima esplicita dell’incertezza
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Dunque nel caso vettoriale (supponiamo per semplicità un vettore a due componenti): Taratura Cinematica – Stima esplicita dell’incertezza dove f è lo Jacobiano della funzione f E quindi:
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion non è altro se non una mera generalizzazione vettoriale della formula di propagazione dell’incertezza combinata Verifichiamolo: Taratura Cinematica – Stima esplicita dell’incertezza
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Esempio – 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
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Esempio – Stima esplicita dell’incertezza % 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([ ]), grid on Andiamo a verificare un esempio: intervallo
M. De Cecco - Lucidi del corso di Robotica e Sensor Fusion Si risolva il caso di incertezza anche sui parametri di lunghezza dei bracci (considerandoli scorrelati, ovvero ipotizzando alcune correlazioni): Esempio – Stima esplicita dell’incertezza Se entrambi i bracci sono stati realizzati mediante la stessa macchina utensile