Come pianificare la traiettoria di un Robot

Questo numero di Didattica della Robotica è dedicato alla pianificazione (o generazione) della traiettoria, che ha il compito di stabilire la modalità con cui si vuole che evolva il movimento del manipolatore da una configurazione iniziale ad una configurazione finale desiderata.

L’obiettivo è definire sia il percorso geometrico che dovrà essere compiuto dal manipolatore, sia la legge di moto da realizzare (ossia come posizioni, velocità ed accelerazioni dipendono dal tempo di esecuzione della traiettoria). In questo modo è possibile generare gli ingressi di riferimento al sistema di controllo del moto in anello chiuso (tema che verrà trattato in uno dei prossimi numeri) eassicurare che il moto desiderato possa essere effettivamente eseguito.

Una corretta pianificazione della traiettoria è di estrema importanza, perché comporta che la traiettoria possa essere eseguita da parte del sistema di controllo del moto, senza incorrere nei limiti di saturazione degli attuatori o provocare dannose sollecitazioni meccaniche alla struttura.

In questo numero di Didattica nella Robotica considereremo il problema della pianificazione della traiettoria nello spazio dei giunti, e successivamente nello spazio operativo, distinguendo tra il caso in cui vengano specificate le condizion iiniziali e finali del moto (moto punto-punto), e il caso in cui venga assegnata una sequenza di punti intermedi lungo il cammino (moto su percorso assegnato). Infine, descriveremo brevemente i concetti principali della programmazione del moto per un robot industriale.

Introduzione

In generale, l’obiettivo che ci si pone nella pianificazione della traiettoria è di ottenere traiettorie da una configurazione iniziale ad una configurazione finale che abbiano curvatura quanto più possibile regolare. A tale riguardo, è importante non confondere i concetti di percorso (cioè l’insieme dei punti che il manipolatore deve descrivere) e di traiettoria (un percorso su cui sia stata specificata una legge oraria, ovvero in cui a ciascun punto corrisponda un istante di tempo specifico).

Possiamo definire una serie di ingressi e di uscite per l’algoritmo di pianificazione della traiettoria.

Ingressi:

  • Definizione del percorso
  • Vincoli al percorso
  • Vincoli dovuti alla dinamica del manipolatore

Uscite

  • Traiettorie (ai giunti o all’organo terminale) espresse come sequenza dei valori assunti da posizione, velocità, accelerazione

In generale l’utente specifica un numero ristretto di parametri:

  • Per il percorso: punti estremi, eventuali punti intermedi, primitive geometriche
  • Per la legge di moto: tempo complessivo, velocità e/o accelerazioni massime, 
velocità e/o accelerazioni in determinati punti

Come anticipato, le traiettorie possono essere pianificate nello spazio operativo oppure nello spazio dei giunti.

Traiettorie nello spazio operativo: si definisce il percorso dell’organo terminale del manipolatore nel comune spazio cartesiano.

  • La descrizione del compito è naturale
  • Sono facilmente descrivibili i vincoli sul percorso
  • Punti di singolarità o gradi di mobilità ridondanti generano problemi
  • Occorre in ogni caso uno stadio di inversione cinematica per passare allo spazio di attuazione

Traiettorie nello spazio di giunto: si specifica direttamente l’andamento desiderato per la posizione, la velocità e l’accelerazione dei singoli giunti.

  • Consente di risolvere direttamente problemi relativi a singolarità cinematiche
  • È una modalità di interesse quando i giunti non danno luogo ad un moto coordinato oppure quando interessa solo che gli assi si portino da una posizione iniziale ad una finale (e non ha interesse il movimento risultante nello spazio operativo)
  • Per i punti estremi può essere necessaria un’inversione cinematica delle posture assegnate dall’utente

Traiettorie nello spazio dei giunti

Con la pianificazione della traiettoria nello spazio dei giunti si desidera generare una funzione q(t) che interpoli i valori assegnati per le variabili di giunto, rispettando i vincoli imposti.
Alcuni criteri per la scelta della traiettoria possono essere:

  • Bassa complessità computazionale
  • Continuità di posizioni e velocità (ed eventualmente di accelerazioni)
  • Minimizzazione di effetti indesiderati (curvatura non regolare)

Operiamo una distinzione tra:

  • Moto punto-punto: si specificano solo i punti estremi ed il tempo di transizione
  • Moto su percorso assegnato: si specificano anche dei punti intermedi

Moto punto-punto nello spazio dei giunti

Il caso più semplice di pianificazione della traiettoria per moto punto-punto si ha quando sono specificate alcune condizioni iniziali e finali sulla posizione, velocità ed eventualmente anche su accelerazione e jerk (derivata dell’accelerazione) ed il tempo di percorrenza. Si possono prendere in considerazione funzioni polinomiali. Più alto è il grado del polinomio, più condizioni al contorno si possono soddisfare e più smooth (dolce) sarà la traiettoria.Le traiettorie polinomiali più note sono la traiettoria cubica (che utilizza un polinomio di grado 3) o quintica (polinomio di grado 5), la traiettoria armonica e infine quella cicloidale.Un procedimento alternativo, di largo utilizzo nella pratica industriale per generare la traiettoria, consiste nel pianificare un profilo di posizione lineare raccordato all’inizio e alla fine della traiettoria con tratti parabolici. Il profilo di velocità che ne risulta ha il tipico andamento trapezoidale.  In questo caso la traiettoria è divisa in tre parti:

  1. Accelerazione costante, velocità a rampa, posizione a parabola;
  2. Accelerazione nulla, velocità costante, posizione lineare;
  3. Decelerazione costante, velocità a rampa, posizione a parabola.

Una volta pianificata una traiettoria è spesso necessario scalarla per soddisfare i vincoli del sistema di attuazione, che si manifestano in termini di saturazioni. Si parla in particolare di:

  1. Messa in scala cinematica: si deve fare in modo che la traiettoria rispetti vincoli sulla massima velocità e sulla massima accelerazione;
  2. Messa in scala dinamica: si deve fare in modo che agli attuatori del sistema meccanico non vengano richieste coppie superiori alle coppie massime erogabili.

Moto su percorso assegnato nello spazio dei giunti

Il problema di determinare una traiettoria che passi per n punti può essere risolto in modo univoco adottando una funzione polinomiale di grado n−1. Un vantaggio dell’interpolazione polinomiale è che la funzione q(t) ha derivate continue di ordine qualsiasi all’interno del tempo di esecuzione della traiettoria.
Tuttaviaquesto metodo presenta degli svantaggi, tra cui quello di non essere efficiente dal punto di vista numerico. Un’alternativa è utilizzare n−1 polinomi di grado p (tipicamente inferiore), ognuno dei quali definito in un tratto della traiettoria. Il grado p dei polinomi è normalmente preso uguale a 3 (tratti di traiettoria cubica). L’interpolazione mediante cubichegenera però una traiettoria che presenta accelerazione discontinua nei punti di passaggio.
Per ovviare a questo problema si deve rinunciare ad imporre specifici valori di velocità nei punti intermedi, limitandosi ad imporre la continuità in due tratti contigui di posizione, velocità ed accelerazione. La traiettoria che si ottiene con questo procedimento prende il nome di spline (smoothpath line). Si può dimostrare che la spline è lafunzione interpolante a curvatura minima, a parità di condizioni di continuità sulle derivate. Un modo alternativo, molto semplice, per gestire il problema dell’interpolazione di punti consiste nel collegare i punti di percorso con funzioni lineari. Per evitare discontinuità di velocità, i tratti lineari possono essere raccordati da tratti parabolici nell’intorno dei punti di percorso. La traiettoria risultante  non tocca nessuno dei punti di percorso, anche se vi passa vicino. In questo caso i punti di percorso prendono il nome di punti di via (via points).Se invece si volessero utilizzare in sequenza tratti di traiettoria con profilo di velocità trapezoidale per interpolare punti intermedi si otterrebbe un movimento che passa per i punti intermedi a velocità nulla (cioè fermandosi).
Un modo per ovviare al problema consiste nell’iniziare la pianificazione di un tratto di traiettoria in anticipo rispetto alla conclusione del tratto precedente.

Traiettorie nello spazio operativo

La pianificazione della traiettoria nello spazio dei giunti comporta movimenti imprevedibili dell’organo terminale. Quando si desidera invece che il moto si sviluppi lungo un percorso definito nello spazio operativo, è necessario pianificare direttamente la traiettoria in questo spazio. In generale il percorso può essere caratterizzato dando N punti (di via). Le N componentipossono essere poi singolarmente raccordate con una delle tecniche viste precedentemente. Se però il moto dell’organo terminale deve rispettare una traiettoria con precisione, la traiettoria stessa deve poter essere espressa analiticamente. In questo caso è necessario utilizzare delle primitive di moto, che hanno la funzione di descrivere le caratteristiche geometriche del percorso,in aggiunta a primitive di tempo, che attribuisconouna legge oraria al percorso stesso.

Programmazione del moto per robot industriali

Una prima modalità di programmazione del moto per un robot è la programmazione cosiddetta teaching-by-showing. L’operatore con il teach pendant muove il manipolatore lungo il percorso desiderato. I trasduttori di posizione memorizzano le posizioni che il robot deve raggiungere, che saranno poi raccordate da un software di generazione della traiettoria. Il robot sarà quindi in grado di ripetere autonomamente il movimento insegnato con apprendimento sul campo. Non vengono richieste particolari capacità di programmazione all’operatore, d’altra parte il metodo presenta limitazioni, in quanto la messa a punto del programma richiede che l’operatore abbia a disposizione il robot (che quindi non è operativo), non è prevista la possibilità di eseguire funzioni di condizionamento logico o cicli di attesa ed in generale non si possono programmare attività complesse.La programmazione di un sistema robotico richiede la presenza di un ambiente di programmazione, corredato da opportuni linguaggi, attraverso il quale l’operatore possa impartire i comandi alla macchina per mezzo di programmi appositamente scritti.
L’ambiente di programmazione è parte della interfaccia uomo-macchina (MMI), cui è affidato anche il compito di verificare la corretta esecuzione dei compiti da parte del robot e comunicare con l’operatore, in particolare in presenza di anomalie o errori. Un linguaggio di programmazione, ad esempio PDL2 della COMAU, è un linguaggio ad alto livello (simile al PASCAL) con il quale l’operatore può programmare il movimento del robot ed operazioni complesse in cui il robot, inserito in una cella di lavoro, interagisce con altre macchine e dispositivi. Rispetto ad un linguaggio di programmazione general purpose, il linguaggio prevede specifiche funzionalità orientate al robot. (Matteo Parigi Polverini)

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here