Lezione 5 di 18

RI Lezione 05

🤖 Robotica Industriale · III Anno · Lezione 05

Configurazioni e singolarità ⚠️

Elbow-up/down · Flip/noflip · Wrist singularity · Arm singularity · Gestione pratica

⏱️ Durata stimata: 60–75 min 📊 Livello: Base — fine III anno 🔧 Strumenti: Simulatore web · Jog JOINT · Pannello IK 📋 Prerequisiti: Lezioni 01–04

🎯 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
2 × 2 × 2 = 8 combinazioni possibili. Non tutte sono raggiungibili per ogni punto (limiti articolari o collisioni possono escluderne alcune).

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”.

🔼 Elbow-UP
J3 assume un valore che porta il gomito sopra la linea retta base–polso.
Vantaggi:
— Maggior spazio libero sotto al braccio
— Meno rischio di collisione con il tavolo
— Configurazione preferita per pick & place
🔽 Elbow-DOWN
J3 assume un valore che porta il gomito sotto la linea retta base–polso.
Vantaggi:
— 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:

SINGOLARITÀ 1
Wrist Singularity — Singolarità del polso
Condizione
J5 = 0° (polso completamente esteso o completamente flesso). Gli assi J4 e J6 diventano coassiali.
Effetto
Per ruotare attorno all’asse del tool (W), J4 e J6 devono ruotare di quantità enormi e opposte — velocità infinite teoriche. Il controller blocca il movimento.
Come si manifesta
Jog WORLD anomalo, movimenti bruschi, allarme MOTN-067 sul robot reale.
✅ Come evitarla
Tenere J5 lontano da 0°. Per pick & place verticale, J5 = –90° è la scelta sicura.
SINGOLARITÀ 2
Arm Singularity — Singolarità del braccio
Condizione
Il centro del polso (intersezione J4–J5–J6) si trova esattamente sull’asse di J1. Il braccio è completamente steso o completamente raccolto.
Effetto
J1 deve ruotare di 180° per spostare il TCP di pochi mm. Velocità di J1 teoricamente infinita. Il controller non riesce a seguire la traiettoria cartesiana.
Come si manifesta
Il robot rallenta bruscamente o si blocca durante un movimento L che attraversa l’asse di J1.
✅ Come evitarla
Non programmare traiettorie lineari che passano sopra la base del robot. Usare movimenti J per attraversare quella zona.
SINGOLARITÀ 3
Elbow Singularity — Singolarità del gomito
Condizione
J3 al suo limite massimo positivo: il braccio è completamente esteso. Base, gomito e polso sono allineati su una retta.
Effetto
Il robot è al bordo del volume di lavoro. Qualsiasi movimento cartesiano che allontana ulteriormente il TCP dalla base è impossibile.
Come si manifesta
Il robot si avvicina al limite del volume di lavoro e il controller rifiuta il movimento. Meno pericolosa delle altre due.
✅ Come evitarla
Posizionare il robot più vicino ai punti di lavoro. Non programmare punti al limite estremo dello sbraccio.

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ì:

P[1] = {
  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.

Configurazione A — Elbow-UP (N U T)
  1. Usa il pannello IK: inserisci X=250, Y=0, Z=250, W=180, P=0, R=0. Premi MUOVI IK.
  2. Annota i valori J1–J6. In particolare annota J2 e J3.
  3. Il gomito è visibilmente sopra la linea base–polso? Questa è configurazione elbow-up.
Configurazione B — Elbow-DOWN (N D T)
  1. Con jog JOINT, abbassa lentamente J2 (valori più negativi) tenendo J3 compensato per mantenere il TCP approssimativamente nella stessa posizione.
  2. Osserva: il gomito ora è sotto la linea base–polso. Questa è configurazione elbow-down.
  3. Verifica nel pannello posizione: X, Y, Z sono rimasti simili? W, P, R sono rimasti uguali?
  4. 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.

⚠️ Questo esperimento va fatto sul simulatore. Sul robot reale avvicinarsi alla singolarità del polso con jog WORLD può causare movimenti bruschi pericolosi.
  1. Porta il robot in: J1=0°, J2=–30°, J3=60°, J4=0°, J5=–30°, J6=0°. (J5 lontano da 0°, tutto ok.)
  2. Seleziona jog WORLD. Muovi leggermente +X e –Z: il robot si muove fluidamente.
  3. Con jog JOINT, porta J5 lentamente verso 0° (da –30° verso 0°).
  4. Riprova jog WORLD +X: il movimento diventa progressivamente meno fluido. Vicino a J5=0° il robot esita o si blocca.
  5. Recupero: seleziona jog JOINT, porta J5 a –90°. Tutto torna normale.
  6. 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

  1. Porta il robot in configurazione elbow-up: usa IK con X=250, Y=0, Z=300, W=180, P=0, R=0.
  2. Annota la configurazione J1–J6 (gomito in alto).
  3. Ora usa IK con X=250, Y=0, Z=50, W=180, P=0, R=0 (stesso X, stessa Y, Z molto più basso).
  4. Osserva: il simulatore potrebbe scegliere una configurazione elbow-down per raggiungere questo punto. J2 e J3 cambiano drasticamente.
  5. 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.
  6. 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

Cosa hai imparato oggi:
  • 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