RI Lezione 05
🤖 Robotica Industriale · III Anno · Lezione 05
Configurazioni e singolarità ⚠️
Elbow-up/down · Flip/noflip · Wrist singularity · Arm singularity · Gestione pratica
🎯 Obiettivi della lezione
- Capire cosa è una configurazione robot e perché lo stesso TCP può essere raggiunto in modi diversi
- Distinguere le configurazioni elbow-up/down e flip/noflip del FANUC ER-4iA
- Spiegare cos’è una singolarità cinematica e quali sono le tre singolarità del robot articolato 6-DOF
- Riconoscere e provocare le singolarità nel simulatore in modo controllato
- Applicare le strategie per evitare e gestire le singolarità nella programmazione
📖 1. Teoria
1.1 — Configurazioni: più strade per lo stesso punto
Nella Lezione 03 abbiamo visto che la cinematica inversa calcola gli angoli J1–J6 a partire dalla posizione TCP (X, Y, Z, W, P, R). Ma c’è un problema: per molti punti dello spazio di lavoro esistono più soluzioni — cioè più combinazioni di J1–J6 che portano il TCP nella stessa posizione con lo stesso orientamento.
💡 Analogia: immagina di dover toccare la punta del naso con il dito indice. Puoi farlo con il gomito alzato (elbow-up) o con il gomito abbassato (elbow-down). La punta del dito è nello stesso punto nello spazio, ma la postura del braccio è completamente diversa. Il robot ha lo stesso problema — moltiplicato per 6 assi.
Per un robot articolato a 6 assi come il FANUC ER-4iA esistono fino a 8 soluzioni distinte della cinematica inversa per un dato punto. Il controller le organizza in base a tre coppie di configurazioni:
| Coppia | Opzione A | Opzione B | Asse coinvolto |
|---|---|---|---|
| Braccio | Noflip (J1 frontale) | Flip (J1 ruotato 180°) | J1 |
| Gomito | Elbow-up (J3 alto) | Elbow-down (J3 basso) | J2, J3 |
| Polso | Wrist-noflip (J5 > 0°) | Wrist-flip (J5 < 0°) | J4, J5, J6 |
1.2 — Elbow-up e Elbow-down
La configurazione di gomito è la più intuitiva. Dati J1 e il TCP target, J3 può assumere due valori distinti che soddisfano la cinematica — uno con il gomito “in alto” e uno con il gomito “in basso”.
— Maggior spazio libero sotto al braccio
— Meno rischio di collisione con il tavolo
— Configurazione preferita per pick & place
— Permette di lavorare sotto al piano di installazione
— Utile per robot montati a soffitto
— Può raggiungere zone altrimenti inaccessibili
📌 Attenzione al cambio di configurazione: se durante un movimento L (lineare) il controller passa da elbow-up a elbow-down per raggiungere il punto successivo, il gomito compie un movimento ampio e brusco — anche se il TCP si muove in linea retta. Questo è pericoloso in celle con ostacoli. La soluzione è programmare tutti i punti nella stessa configurazione.
1.3 — Flip e Noflip
La configurazione di braccio (flip/noflip) riguarda J1: per ogni punto del volume di lavoro, il robot può raggiungerlo con J1 nel quadrante “frontale” (noflip) oppure ruotato di circa 180° (flip), con J2 e J3 in configurazione speculare.
In pratica, per applicazioni su banco con il FANUC ER-4iA si lavora quasi sempre in noflip. La configurazione flip è utile per robot che devono lavorare su entrambi i lati di un nastro o in celle dove il robot è posizionato centralmente rispetto ai punti di lavoro.
1.4 — Singolarità: quando il robot perde un grado di libertà
Una singolarità cinematica è una configurazione in cui il robot perde (temporaneamente) la capacità di muoversi in tutte le direzioni cartesiane. Matematicamente: la matrice Jacobiana del robot diventa singolare (determinante = 0) e la cinematica inversa non ha soluzione stabile.
Per un robot articolato a 6 assi esistono tre tipi di singolarità, tutte presenti nel FANUC ER-4iA:
1.5 — Gestione pratica delle configurazioni in programmazione TP
Ogni punto P[ ] memorizzato in un programma TP include non solo le coordinate X, Y, Z, W, P, R ma anche la stringa di configurazione, che specifica quale delle 8 soluzioni usare. Sul controller R-30iB Mate si presenta così:
GP1:
UF : 0, UT : 1,
X = 300.000 mm, Y = 0.000 mm, Z = 300.000 mm,
W = 180.000 deg, P = 0.000 deg, R = 0.000 deg,
Config: N U T, 0, 0, 0 // ← stringa di configurazione
}
La stringa N U T, 0, 0, 0 si legge così:
| Campo | Valore A | Valore B | Significato |
|---|---|---|---|
| 1° carattere | N = Noflip | F = Flip | Configurazione di J1 (braccio frontale o ruotato) |
| 2° carattere | U = Up (elbow-up) | D = Down (elbow-down) | Configurazione del gomito (J3 alto o basso) |
| 3° carattere | T = No-wrist-flip | B = Wrist-flip (Back) | Configurazione del polso (J5 positivo o negativo) |
| Tre zeri | 0, 0, 0 | Numero di giri interi di J4, J5, J6 (normalmente tutti 0) | |
✅ Regola pratica per il III anno: quando insegni i punti in un programma pick & place, assicurati che tutti i punti abbiano la stessa stringa di configurazione — tipicamente N U T, 0, 0, 0. Se durante l’esecuzione il robot compie movimenti bruschi inaspettati, spesso la causa è un cambio di configurazione tra due punti consecutivi.
💻 2. Esempi guidati nel simulatore
Esempio A — Stessa posizione TCP, due configurazioni diverse
Verifichiamo concretamente che lo stesso punto è raggiungibile in configurazioni diverse.
- Usa il pannello IK: inserisci X=250, Y=0, Z=250, W=180, P=0, R=0. Premi MUOVI IK.
- Annota i valori J1–J6. In particolare annota J2 e J3.
- Il gomito è visibilmente sopra la linea base–polso? Questa è configurazione elbow-up.
- Con jog JOINT, abbassa lentamente J2 (valori più negativi) tenendo J3 compensato per mantenere il TCP approssimativamente nella stessa posizione.
- Osserva: il gomito ora è sotto la linea base–polso. Questa è configurazione elbow-down.
- Verifica nel pannello posizione: X, Y, Z sono rimasti simili? W, P, R sono rimasti uguali?
- Confronta i valori J2 e J3 tra la configurazione A e B. Nota la differenza.
Esempio B — Provocare e gestire la wrist singularity
Questo è l’esperimento più importante della lezione: vedere la singolarità del polso con i propri occhi.
- Porta il robot in: J1=0°, J2=–30°, J3=60°, J4=0°, J5=–30°, J6=0°. (J5 lontano da 0°, tutto ok.)
- Seleziona jog WORLD. Muovi leggermente +X e –Z: il robot si muove fluidamente.
- Con jog JOINT, porta J5 lentamente verso 0° (da –30° verso 0°).
- Riprova jog WORLD +X: il movimento diventa progressivamente meno fluido. Vicino a J5=0° il robot esita o si blocca.
- Recupero: seleziona jog JOINT, porta J5 a –90°. Tutto torna normale.
- Osserva il pannello IK mentre J5 si avvicina a 0°: i valori di J4 e J6 cambiano in modo esagerato per compensare piccoli movimenti cartesiani.
Esempio C — Riconoscere un cambio di configurazione indesiderato
- Porta il robot in configurazione elbow-up: usa IK con X=250, Y=0, Z=300, W=180, P=0, R=0.
- Annota la configurazione J1–J6 (gomito in alto).
- Ora usa IK con X=250, Y=0, Z=50, W=180, P=0, R=0 (stesso X, stessa Y, Z molto più basso).
- Osserva: il simulatore potrebbe scegliere una configurazione elbow-down per raggiungere questo punto. J2 e J3 cambiano drasticamente.
- Immagina questo cambio avvenga durante un movimento L (lineare) in un programma TP: il TCP seguirebbe la retta, ma il gomito compierebbe un arco ampio. In una cella con ostacoli sarebbe una collisione certa.
- Soluzione: programmare un punto intermedio in elbow-up prima di scendere in basso, oppure usare un movimento J per il transito tra le due zone.
🏋️ 3. Esercizi
🟢 Esercizio 1 — Decodifica la stringa di configurazione (Facile)
Decodifica le seguenti stringhe di configurazione FANUC scrivendo per ognuna cosa significano i tre caratteri e come si presenta visivamente il robot:
a) N U T, 0, 0, 0
b) N D T, 0, 0, 0
c) F U T, 0, 0, 0
d) F D B, 0, 0, 0
Per le configurazioni b) e c) prova a riprodurle nel simulatore partendo da un punto a piacere.
🔵 Esercizio 2 — Mappa delle singolarità (Medio)
Per ognuna delle tre singolarità viste in teoria, compila questa tabella nel simulatore:
Wrist singularity: porta J5 esattamente a 0°. Prova jog WORLD in +X, –X, +Y, –Y, +Z, –Z. Quali direzioni funzionano? Quali no?
Arm singularity: trova una posizione dove il polso è sull’asse di J1 (Y≈0, X piccolo). Prova jog WORLD +Y. Cosa succede?
Elbow singularity: porta J3 al massimo positivo (braccio completamente esteso). Prova jog WORLD +X. Cosa succede?
Scrivi per ognuna: la condizione geometrica esatta, il comportamento osservato, la strategia di recupero.
🟠 Esercizio 3 — Controllo configurazione su traiettoria (Medio)
Programma mentalmente (senza editor TP — solo jog e IK) una traiettoria con 4 punti che simula un pick & place verticale:
P1 (home): J1=0°, J2=–10°, J3=20°, J4=0°, J5=–90°, J6=0°
P2 (sopra presa): X=280, Y=0, Z=200, W=180, P=0, R=0
P3 (presa): X=280, Y=0, Z=30, W=180, P=0, R=0
P4 (sopra deposito): X=280, Y=150, Z=200, W=180, P=0, R=0
Per ognuno dei 4 punti raggiunti con il pannello IK, annota la stringa di configurazione (N/F, U/D, T/B). Tutti i punti hanno la stessa configurazione? Se uno è diverso, come potresti correggere il problema?
🟣 Esercizio 4 — Analisi di un movimento pericoloso (Difficile)
Considera questa sequenza di due punti in un programma TP reale:
P[1]: X=300, Y=0, Z=400 — Config: N U T
P[2]: X=300, Y=0, Z=–50 — Config: N D T
Tra P[1] e P[2] c’è un cambio di configurazione (U→D). Se il movimento è di tipo L (lineare), il TCP si muove in linea retta verticale, ma il gomito compie un arco ampio.
Raggiungi P[1] e P[2] nel simulatore con il pannello IK. Osserva cosa succede agli angoli J2 e J3 nel passaggio tra i due punti. Stima (in gradi) di quanto si sposta J3 nel cambio di configurazione. Poi proponi una soluzione con punto intermedio che mantiene la configurazione N U T per tutto il percorso.
❓ 4. Quiz di verifica
1. Quante soluzioni di cinematica inversa esistono al massimo per un robot articolato 6-DOF? Da cosa dipendono?
Mostra risposta
Fino a 8 soluzioni, date da 2³ = 2×2×2 combinazioni delle tre coppie di configurazione (flip/noflip, elbow-up/down, wrist-flip/noflip). Non tutte le 8 sono sempre disponibili: alcune possono essere escluse dai limiti articolari del robot, da collisioni con strutture interne o dal fatto che certi punti si trovano vicino a singolarità che eliminano alcune soluzioni.
2. Durante l’esecuzione di un movimento L il robot compie un movimento brusco del gomito pur mantenendo il TCP sulla traiettoria retta. Qual è la causa più probabile?
Mostra risposta
Un cambio di configurazione tra i punti P[n] e P[n+1]: la cinematica inversa ha scelto soluzioni diverse (es. elbow-up → elbow-down) per i due punti. Il TCP segue correttamente la traiettoria rettilinea, ma per farlo il controller cambia configurazione nel mezzo del movimento, causando il movimento brusco del gomito. Soluzione: verificare che tutti i punti del programma abbiano la stessa stringa di configurazione.
3. Cos’è la wrist singularity e a quale valore di J5 si verifica?
Mostra risposta
La wrist singularity si verifica quando J5 = 0°: il polso è completamente esteso e gli assi J4 e J6 diventano coassiali (paralleli e sovrapposti). In questa condizione, per ruotare il tool attorno al suo asse (componente W dell’orientamento) servirebbero rotazioni teoricamente infinite di J4 e J6. Il controller blocca i movimenti cartesiani che richiederebbero questa condizione. Tenere J5 lontano da 0° — idealmente a –90° per pick & place verticale — la evita completamente.
4. Cosa significa la stringa di configurazione F D B, 0, 0, 0?
Mostra risposta
F = Flip (J1 ruotato circa 180° dalla posizione frontale), D = Down (elbow-down, gomito sotto la linea base–polso), B = Back/wrist-flip (J5 > 0°, polso in configurazione “ribaltata”). È una configurazione insolita nel lavoro su banco, ma può essere necessaria per robot montati a soffitto o per raggiungere zone specifiche della cella.
5. Perché è importante che tutti i punti di un programma pick & place abbiano la stessa configurazione N U T?
Mostra risposta
Perché durante i movimenti L (lineari) il controller interpola la traiettoria del TCP nello spazio cartesiano. Se due punti consecutivi hanno configurazioni diverse, il controller deve cambiare configurazione durante il movimento — il che causa movimenti bruschi e ampi degli assi J2 e J3 (o J4/J6 per cambi di polso). In una cella con attrezzature, robot secondari o persone, questi movimenti inaspettati sono una fonte di collisioni. La configurazione N U T con J5=–90° è la scelta più sicura e standard per applicazioni di pick & place verticale su banco.
📚 Riepilogo della lezione
- Uno stesso TCP può essere raggiunto con fino a 8 configurazioni diverse: flip/noflip, elbow-up/down, wrist-flip/noflip
- La stringa di configurazione FANUC (
N U T,F D B…) è salvata in ogni punto P[ ] del programma - Le 3 singolarità: wrist (J5=0°), arm (polso sull’asse J1), elbow (braccio completamente esteso)
- La wrist singularity è la più critica: evitarla tenendo J5 ≠ 0° — idealmente J5=–90°
- Un cambio di configurazione tra punti consecutivi in un movimento L causa movimenti bruschi del gomito — pericolosi in cella
- Regola d’oro: tutti i punti di un ciclo pick & place devono avere la stessa configurazione, preferibilmente
N U T, 0, 0, 0
Fine del III Anno — Prossimo modulo →
Lezione 06 — Introduzione al linguaggio TP
Struttura del programma, istruzione di movimento, commenti.
Inizio del IV anno: dalla teoria alla programmazione.
© Prof. D. Bertolino · Robotica Industriale FANUC ER-4iA · Lezione 05 di 18 · Fine III Anno