TECNICA MODULARE PER LA MODELLAZIONE DINAMICA DI STRUTTURE ROBOTICHE SERIALI
C. Ferraresi, M. Carello, R. Longo
Dipartimento di Meccanica, Politecnico di Torino
C.so Duca degli Abruzzi, 24 - 10129 Torino - Italy
phone: +39-11-5646943, fax: +39-11-5646999, e-mail: ferraresi@polito.it
ABSTRACT
In questo articolo viene descritta la realizzazione in ambiente Simulink di elementi che permettono la costruzione modulare del modello cinematico e dinamico di strutture robotiche seriali.
Il modello prevede di definire in input il moto di ogni singolo giunto del robot e l’andamento di eventuali carichi esterni ed è in grado di simulare il moto di ogni punto della struttura (tipicamente l’end-effector) e l’andamento di forze e momenti nei vari giunti.
Sono descritte le equazioni che costituiscono la base del modello matematico, quindi è descritta la loro implementazione in ambiente Simulink, fino alla creazione della libreria di elementi. Infine sono presentati i risultati di un esempio di simulazione , che vengono confrontati con quelli prodotti da uno specifico software per la simulazione di sistemi multi-body.
1 INTRODUZIONE
Le equazioni che descrivono la cinematica e la dinamica dei vari elementi di una struttura robotica seriale possono essere scritte in una forma generalizzata. Questo consente quindi la realizzazione di elementi modulari che, una volta implementati in un ambiente software altamente interattivo come Simulink, rendono estremamente semplice la realizzazione del modello numerico di strutture anche di notevole complessità.
In questo lavoro si considerano solo strutture costituite da corpi rigidi e giunti ideali, in cui cioè si trascura la presenza di eventuali giochi ed attriti.
2 MODELLI MATEMATICI
In questo paragrafo vengono richiamate le nozioni fondamentali per l’analisi della geometria, della cinematica e della dinamica dei robot seriali. Le relative equazioni, scritte in forma generalizzata, costituiscono la base per la realizzazione dei corrispondenti blocchi Simulink.
2.1 Geometria
I robot sono catene cinematiche di corpi rigidi (denominati bracci o membri o link...) collegati tramite giunti, frequentemente ad un solo grado di libertà (g.d.l); questi possono essere rotazionali o traslazionali. Facendo riferimento alla convenzione di Denavit-Hartemberg [1] ed in fig.1 è visibile il giunto generico i-esimo che collega il braccio (i-1)-esimo, che lo precede, con il braccio i-esimo, che lo segue. Il valore della variabile i va da 1 a n, numero totale di bracci del robot.

Si definisce un sistema di riferimento assoluto, indicato con ‘0’, ed uno relativo per ogni giunto del robot, numerandoli a partire dalla base. In ogni terna l’asse z è quello lungo il quale (o attorno il quale) avviene il moto relativo tra i membri del giunto, mentre l’asse xi-1 è posto in modo da essere perpendicolare a zi-1 e zi, rivolto dal primo verso il secondo giumto.
Ogni sistema di riferimento i-esimo è legato al precedente (i-1)-esimo mediante la matrice 4x4 di rototraslazione [2]:
(1)
della quale il minore superiore 3x3 rappresenta la matrice di rotazione
e i primi 3 termini dell’ultima colonna rappresentano il vettore di posizionamento relativo di Oi rispetto a Oi-1.
Le quantità che compaiono nell’espressione (1) sono:
a i-1, l’angolo tra gli assi zi-1 e zi misurato attorno all’asse xi-1;
ai-1, distanza tra gli assi zi-1 e zi misurata lungo l’asse xi-1;
di, distanza tra gli assi xi-1 e xi misurata attorno all’asse zi;
q i, l’angolo tra gli assi xi-1 e xi misurato lungo l’asse zi.
Nel caso in cui il giunto i-esimo è traslazionale, di rappresenta la variabile lagrangiana qi del giunto stesso, nel caso in cui il giunto è rotazionale, la variabile lagrangiana qi del giunto risulta essere q i.
2.2 Cinematica
Nei robot seriali, tutte le grandezze cinematiche dell’i-esimo corpo dipendono da quelle del corpo precedente oltre che dal moto relativo tra i due elementi contigui. Pertanto valgono le seguenti equazioni, espresse nel sistema assoluto:
(2)
dove
e
sono le velocità angolari del corpo i-esimo ed (i-1)-esimo;
è la velocità angolare relativa del corpo i-esimo rispetto al corpo (i-1)-esimo;
e
sono le velocità lineari delle origini dei sistemi di riferimento Oi ed Oi-1;
è la velocità relativa di Oi rispetto ad Oi-1.
Derivando le (2) si ottengono le espressioni delle accelerazioni angolari e lineari.
Esprimendo poi ciascuna grandezza rispetto al proprio sistema di riferimento si ottiene:
(3)
(4)
per le velocità;
(5)
(6)
per le accelerazioni; dove:
sono rispettivamente la coordinata lagrangiana del giunto e le sue derivate nel tempo; d
i è una variabile del giunto che assume il valore 1 se il giunto è traslazionale e 0 se è rotazionale; ki è il versore dell’asse zi dell’i-esimo sistema di riferimento e li-1 è la distanza vettoriale tra le origini dei sistemi di riferimento contigui: (Oi-Oi-1).
2.3 Dinamica
In fig.2 sono riportate le azioni agenti sul corpo i-esimo del quale si possono scrivere le equazioni di equilibrio dinamico alla traslazione ed alla rotazione attorno al baricentro Gi:
(7)
dove
è il peso dell’i-esimo braccio;
ed Mi sono rispettivamente le forze ed i momenti trasmessi dall’(i-1)-esimo elemento a quello i-esimo;
è la risultante delle forze d’inerzia esprimibile come:
(8)
Il momento
risultante delle forze agenti sull’i-esimo elemento è esprimibile come:
(9)
dove I è il tensore d’inerzia definito come:
(10)
Ixx, Iyy e Izz rappresentano i momenti d’inerzia principali e Ixy, Ixz e Iyz quelli centrifughi.

Esprimendo le (7) nel sistema di riferimento relativo all’i-esimo corpo, come già fatto per la cinematica, si ha il vantaggio che i termini di I rimangono costanti. In questo modo le espressioni delle forze e dei momenti scambiati nel giunto i-esimo tra i due corpi contigui sono:
(11)
Si noti che le forze ed i momenti scambiati in un giunto dipendono da quelli scambiati nel giunto successivo, pertanto il calcolo della dinamica di un robot si sviluppa nella direzione opposta a quello della cinematica.
3 IMPLEMENTAZIONE IN AMBIENTE SIMULINK
La generalità delle equazioni che descrivono la cinematica e la dinamica degli elementi del robot consente la realizzazione in ambiente Simulink di blocchi che possono essere assemblati modularmente per costruire la struttura dell’intero robot. La fig.3 mostra la semplice libreria necessaria a questo scopo.

Fig.3
: libreria di elementi di Simulink necessari per la modellazione di strutture robotiche seriali
Il cuore del programma è il blocco ‘Braccio’ dedicato alla modellazione del generico membro del robot; il completamento del modello richiede, inoltre, la presenza di un blocco di ‘Base’ e di uno di ‘Estremità’. All’utilizzatore del programma viene solamente richiesto l’inserimento dei parametri specifici delle singole parti (masse e momenti d’inerzia, dimensioni geometriche, tipologia dei giunti, ...) ed il corretto assemblaggio complessivo delle varie parti componenti il manipolatore.
Il software riceve come ingresso il moto imposto ai giunti (mediante i blocchi ‘input.mat’) e fornisce come uscita il moto dell’end-effector e di tutti i corpi della struttura, nonché l’andamento di tutte le forze e i momenti scambiati nella struttura (mediante i blocchi ‘output.mat’). Ad ogni blocco ‘Braccio’ è abbinato un blocco ‘Giunto’ (rotatorio o traslatorio, a seconda della tipologia del giunto da cui il braccio è preceduto nella realtà). Infine, il blocco ‘posizione’ è in grado di fornire, in coordinate assolute, la posizione dell’end-effector del robot.
Nel seguito si descriveranno sinteticamente i diversi blocchi costituenti la libreria realizzata; per facilitarne la comprensione, si farà riferimento ad un modello già

Fig.4
: schema a blocchi del modello di un robot di tipo Scara a 3 g.d.l.assemblato (vedi fig.4) relativo ad un robot di tipo SCARA a 3 gradi di libertà. Nella stessa figura è ripotato il corretto assemblaggio dei moduli ed il flusso delle informazioni cinematiche (dalla base verso l’estremità). Il flusso delle informazioni dinamiche viaggia con verso opposto a quello cinematico: ogni membro i-esimo fornisce al membro che lo precede (i-1)-esimo le forze ed i momenti scambiati nel giunto i-esimo. Vi sono, infine, altri flussi di informazioni relativi all’input ed all’output.
3.1 Blocchi di input ed output
I blocchi che in fig.3 sono denominati ‘Input.mat’ ed ‘Output.mat’ sono necessari all’ingresso e all’uscita dei dati del modello [3]. Come già detto, il modello richiede di fornire in ingresso il moto imposto a ciascun giunto; questo è letto direttamente da un file precedentemente prodotto da un pre-processore (in linguaggio Matlab) che genera, a fronte dell’inserimento di opportuni parametri, le più comuni leggi di moto normalmente imposte ai giunti dei robot ovvero con velocità del giunto avente andamento triangolare, trapezoidale, sinusoidale,... Il nome del file dal quale si preleva la legge di questa velocità imposta al giunto è leggibile direttamente nel blocco di input come si vede in Fig.4: ‘input1.mat’, ‘input2.mat’, ‘input3.mat’.
Inoltre, il modello fornisce in uscita praticamente tutte le informazioni cinematiche e dinamiche che possono interessare; la loro rappresentazione non avviene con il procedere della simulazione sia per la numerosità e varietà di informazioni sia per non appesantire la simulazione, bensì vengono scritte su file il cui nome compare direttamente sul corrispondente blocco di ‘output’. Pertanto, si è creato un post-processore (in linguaggio Matlab) in grado di visualizzare gli andamenti delle grandezze calcolate e di fornire diverse tipologie di confronto e di visione [4]. I blocchi di output vanno inseriti dopo ogni blocco strutturale, sia esso ‘Braccio’ o ‘Posizione’, dal quale si vogliono prelevare le informazioni, come è mostrato in Fig.4.
3.2 Blocchi ‘Giunto rotatorio’ e ‘Giunto traslatorio’
Sono due blocchi che ricevono come ingresso la velocità
imposta al giunto. Le caratteristiche geometriche del giunto, espresse nella già citata convenzione di Denavit-Hartemberg, sono tutte mascherate, ovvero i valori numerici vengono introdotti dalla finestra di dialogo richiamata dalla selezione del blocco medesimo. Questi blocchi mettono a disposizione del blocco ‘Braccio’ un vettore contenente in sequenza i valori dei parametri del giunto (a
i-1, ai-1, di, q
i e d
i), e le derivate nel tempo della variabile lagrangiana
e
.
3.3 Blocco ‘Braccio’
Il blocco ‘Braccio’ (fig.5) calcola la cinematica e la dinamica del braccio attraverso i due blocchi principali, ‘Eq. cinematica’ ed ‘Eq. dinamica’, che risolvono le equazioni (3)... (6), (11) per ogni membro del robot. Infatti, si vedono, oltre agli ingressi provenienti dal blocco giunto, i due ingressi relativi alla cinematica del braccio precedente (2) e alla dinamica del braccio successivo (3). Questi due ingressi hanno gli omologhi blocchi di uscita che andranno a loro volta rispettivamente al blocco successivo ed a quello precedente.

Fig.5
: schema del blocco ‘braccio’
Gli altri ingressi del blocco ‘Eq. dinamica’ sono tutti mascherati all’ingresso del blocco ‘Braccio’ e sono essenzialmente le caratteristiche inerziali del braccio: massa, posizione del baricentro, i tre momenti principali d’inerzia ed i tre momenti d’inerzia centrifughi. La gravità è stata imposta costante poiché si è ipotizzato un utilizzo stazionario sulla superficie terrestre. Vi è un blocco di servizio che si occupa delle ‘combinazioni per la grafica’ ovvero di passare in modo ordinato i valori calcolati al blocco di output.
3.3.1 Blocco ‘Eq. cinematica’
Risolve le equazioni cinematiche ed in fig.6 se ne vede lo schema a blocchi. Si noti: il blocco che risolve le equazioni della ‘velocità’ (3)-(4), quello che risolve le equazioni delle ‘accelerazioni’ (5)-(6); inoltre c’è il blocco ‘sistema di riferimento’ che fornisce la matrice di trasferimento del braccio attuale rispetto a quello precedente
, secondo la (1), e rispetto al sistema di riferimento assoluto
, che viene calcolata secondo la:
(12)

Fig.6
: schema del blocco ‘Eq. cinematica’Oltre a queste matrici, vanno trasmesse, attraverso lo stesso collegamento, anche i parametri del giunto, le velocità ed accelerazioni lineari e rotatorie, per un totale di un vettore a 33 componenti. Sempre nella logica di facilitarne la lettura, le operazioni di suddivisione e raggruppamento delle variabili avvengono rispettivamente nei blocchi di servizio ‘suddivisione’ e ‘raggruppamento’.
3.3.2 Blocco ‘Eq. dinamica’
Risolve le equazioni dinamiche (fig.7) di equilibrio alla traslazione ed alla rotazione del generico braccio (11); inoltre, comprende il blocco di servizio ‘per grafica’, che si occupa di ordinare le grandezze calcolate, e quello di ‘raggruppamento’ che ordina le informazioni dinamiche.
In ingresso si vedono in posizione 1 e 4 rispettivamente il flusso della cinematica del braccio attuale e la dinamica del braccio successivo, oltre a tutte le altre grandezze inerziali che si introducono nella maschera all’apertura del blocco.

Fig.7: schema del blocco ‘Eq. dinamica’
3.4 Blocco di ‘Base’ e di ‘Estremità’
Il blocco di base costituisce l’inizio della serie dei moduli braccio, pertanto fornisce il vettore cinematico di inizializzazione ed accoglie quello relativo alla dinamica del primo giunto, senza però utilizzarlo (vedi fig.4).
Al fine di chiudere la serie di moduli, si è realizzato il blocco d’estremità. Questo ha la funzione di considerare un punto dell’n-esimo braccio diverso dall’origine del corrispondente sistema di riferimento, tipicamente quindi è utilizzato per descrivere la posizione dell’end-effector. Pertanto, tale blocco riceve come input le informazioni cinematiche provenienti dal blocco n-esimo. Infine, il blocco d’estremità si occupa di considerare gli eventuali carichi esterni applicati all’end-effector in modo da inviare al braccio n-esimo il vettore delle informazioni dinamiche.
3.5 Blocco ‘Posizione’
Il blocco posizione sito dopo il blocco d’estremità fornisce la posizione assoluta dell’end-effector del robot che viene calcolata mediante una integrazione nel tempo della velocità. Le condizioni iniziali vengono fornite attraverso una maschera all’apertura del blocco. L’ingresso proveniente dal blocco precedente viene opportunamente gestito da un blocco di servizio che trasmette solo le informazioni necessarie. L’uscita del blocco ‘posizione’ va ad un blocco di output.
Il blocco ‘posizione’ può, inoltre, essere collegato alla uscita numero 1 di un qualsiasi blocco ‘braccio’ fornendo, così, la posizione assoluta dell’origine del sistema di riferimento del braccio al quale il blocco ‘posizione’ è anteriormente collegato.

4 VALIDAZIONE E RISULTATI
Al fine di validare il programma realizzato, si sono costruiti diversi modelli di robot e se ne sono verificati i risultati mediante un particolare software, ADAMS [5,6], specificatamente dedicato all’analisi dinamica dei sistemi multi-corpo. Nella fase di validazione si sono originati, e poi validati, svariati modelli di robot: articolato, cartesiano, SCARA, ecc. e per ciascuno di essi si sono variate le dimensioni geometriche, le caratteristiche inerziali e gli ingressi di velocità dei giunti; tutto questo al fine di evidenziare eventuali errori di modellazione.
A titolo di esempio si riportano i risultati della validazione numerica del modello di un robot di tipo SCARA a tre gradi di libertà, il cui schema è riportato in fig.8; il relativo
|
Giunto |
|
|
|
|
|
1 |
0 |
0 |
0 |
q1 |
|
2 |
0 |
0.4 |
0.1 |
q2 |
|
3 |
0 |
0.4 |
q3 |
0 |
Tab.1
: caratteristiche geometriche di un Robot di tipo Scara a 3 g.d.l.|
Braccio |
[Ixx Iyy Izz] [kgm2] |
[Ixy Ixz Iyz] [kgm2] |
m [kg] |
|
1 |
[0.01 0.14 0.14] |
[0 0 0] |
10 |
|
2 |
[0.01 0.14 0.14] |
[0 0 0] |
10 |
|
3 |
[0.14 0.14 0.01] |
[0 0 0] |
10 |
Tab.2
: caratteristiche inerziali di un Robot di tipo Scara a 3 g.d.l.
schema a blocchi in Simulink è quello di fig.4. Le caratteristiche geometriche sono riportate in tab.1, quelle inerziali in tab.2. Il baricentro di ogni singolo braccio si è ipotizzato giacente sull’asse x di ciascun braccio e localizzato nel punto di mezzeria. Le leggi di velocità dei giunti sono state imposte con andamento sinusoidale con durata pari ad un periodo della sinusoide, 1s per tutti i tre giunti, ed una ampiezza di 9.3 rad/s, per i due giunti rotatori, e di 1.2 m/s, per il terzo giunto traslatorio.
Per ciascun braccio del robot, i risultati ottenuti con Simulink e quelli di ADAMS hanno andamenti analoghi. La verifica è stata estesa a: gli andamenti di velocità ed accelerazioni lineari ed angolari per ciascun sistema di riferimento; le forze e i momenti al variare del tempo relativamente a ciascun giunto; la posizione nel tempo dell’end-effector.
Dovendo scegliere un ridotto numero di grandezze da riportare, abbiamo scelto la posizione dell’end-effector (fig.9) e la sua accelerazione (fig.10) e velocità (fig.11). In fig.12 e in fig.13 sono riportati rispettivamente le forze ed i momenti nel primo giunto. Dal confronto dei grafici è evidente che il modello in Simulink realizzato fornisce risultati perfettamente coincidenti con quelli prodotti da ADAMS, pertanto si può ritenere validato.


5 CONCLUSIONI
Il lavoro qui descritto ha portato alla realizzazione di una libreria di elementi modulari che consentono la realizzazione in ambiente Simulink del modello cinematico e dinamico di strutture robotiche seriali.
Sono state effettuate simulazioni delle più comuni tipologie di strutture di robot industriali; i risultati sono poi stati poi validati per confronto con quelli prodotti da uno specifico software per la simulazione di sistemi multi-corpo.
Il sistema realizzato costituisce pertanto un utile e facile strumento di indagine, che può avere un interessante utilizzo ad esempio per scopi didattici. I modelli matematici considerano attualmente strutture ideali, cioè costituite da corpi rigidi e da giunti privi di giochi e di attrito. La modularità del sistema consentirebbe, in una fase successiva, un importante completamento sotto questo aspetto, nel momento in cui fossero sviluppati adeguati blocchi funzionali da inserire tra i vari elementi della struttura, in modo da poter simulare il comportamento di sistemi robotici reali (ad esempio tenendo conto dei giochi). Gli autori di questo lavoro stanno attualmente procedendo in questa direzione, con l’obbiettivo di realizzare a breve questo significativo completamento del sistema.
6 BIBLIOGRAFIA
Ringraziamenti
Sentiti ringraziamenti vanno all’Ing. Paolo Giaretti per la gentile collaborazione prestata nello sviluppo del sistema.