Lezione 7 di 18

RI Lezione 07

🤖 Robotica Industriale · IV Anno · Lezione 07

Movimenti J, L, C 🛤️

Joint · Linear · Circular · Velocità in mm/s · Scelta del tipo corretto per ogni applicazione

⏱️ Durata stimata: 60–75 min 📊 Livello: Intermedio (IV anno) 🔧 Strumenti: Simulatore web · Editor TP 📋 Prerequisiti: Lezione 06

🎯 Obiettivi della lezione

  • Distinguere le tre traiettorie J (Joint), L (Linear) e C (Circular) e le loro caratteristiche cinematiche
  • Scrivere istruzioni L e C complete con la sintassi corretta
  • Spiegare perché L usa mm/s invece di % e qual è la differenza pratica
  • Scegliere il tipo di movimento corretto in base all’applicazione (pick & place, saldatura, dispensing, transito)
  • Combinare J, L e C nello stesso programma con logica corretta

📖 1. Teoria

1.1 — Le tre traiettorie a confronto

In TP esistono tre tipi fondamentali di movimento, ognuno con una traiettoria diversa del TCP nello spazio. La scelta del tipo corretto è una delle decisioni più importanti in fase di programmazione.

J
Joint Move
Tutti gli assi si muovono simultaneamente, ognuno al proprio ritmo proporzionale. Il TCP percorre una curva imprevedibile nello spazio.
Traiettoria TCPCurva — non deterministica
Velocità% della vel. massima assi
Calcolo controllerLeggero — solo FK
Rischio singolaritàBasso
L
Linear Move
Il TCP si muove in linea retta da posizione corrente a target. Il controller calcola continuamente le velocità articolari per mantenere la traiettoria.
Traiettoria TCPRetta — deterministica
Velocitàmm/s — costante sul TCP
Calcolo controllerPesante — IK continua
Rischio singolaritàMedio — evitare zone critiche
C
Circular Move
Il TCP percorre un arco di cerchio passando per un punto intermedio via. Richiede due istruzioni: via point e end point.
Traiettoria TCPArco circolare — deterministica
Velocitàmm/s — costante sul TCP
Calcolo controllerPesante — IK + geometria arco
Rischio singolaritàAlto — dipende dal percorso

1.2 — Il movimento L: sintassi e velocità in mm/s

Il movimento L ha una sintassi simile a J ma con due differenze fondamentali: il tipo (L) e la velocità espressa in mm/s invece di %.

L  P[2]  250mm/sec  FINE
Tipo
Linear
Posizione
target
Velocità TCP
in mm/s
Terminazione

Perché mm/s per L e non %? Perché il movimento L deve mantenere la velocità del TCP costante lungo la traiettoria rettilinea. Se usasse %, la velocità del TCP varierebbe in base alla configurazione del robot. Con mm/s il controller garantisce che il TCP si muova esattamente a quella velocità — fondamentale per saldatura, dispensing, taglio laser dove la quantità di materiale depositato dipende direttamente dalla velocità.

Velocità L tipiche per applicazione
Applicazione Velocità tipica Note
Avvicinamento pezzo50–100 mm/sLento per sicurezza e precisione
Pick & place (discesa)100–300 mm/sDipende dalla tolleranza del pezzo
Dispensing colla/silicone20–80 mm/sCostante per spessore uniforme del cordone
Saldatura MIG/TIG5–15 mm/sMolto lenta per qualità del cordone
Taglio laser/plasma10–50 mm/sDipende dallo spessore del materiale
Transito (uso insolito di L)500–2000 mm/sMeglio usare J per i transiti

📌 Limite di velocità in T1: sul controller R-30iB Mate in modalità T1 (teach), la velocità TCP è limitata a 250 mm/s indipendentemente dal valore programmato. Se scrivi L P[1] 1000mm/sec FINE e sei in T1, il robot si muove a 250 mm/s. In modalità AUTO la velocità programmata è quella effettiva.

1.3 — Il movimento C: sintassi e geometria dell’arco

Il movimento C (Circular) richiede due istruzioni consecutive per definire l’arco: un punto intermedio (via point) e il punto finale (end point). I tre punti — posizione corrente, via point, end point — definiscono univocamente un cerchio nello spazio 3D.

! Il robot è attualmente in P[1] (start point)
C P[2]                  ! ← via point (punto intermedio sull’arco)
  P[3] 200mm/sec FINE ! ← end point + velocità + terminazione
Geometria del movimento C
I tre punti devono essere:
— Non collineari (non sulla stessa retta)
— Non coincidenti (distanze > 0)
— All’interno del volume di lavoro

Se i tre punti sono collineari il controller genera un errore — tre punti su una retta non definiscono un cerchio ma una retta, e il movimento C non è calcolabile.
Casi d’uso tipici del movimento C
  • Saldatura di cordoni curvi
  • Dispensing su profili circolari
  • Lavorazione di fori con traiettoria circolare
  • Movimenti su traiettorie che seguono superfici curve
  • Avvitatura con approccio circolare

⚠️ Errore comune: usare il movimento C per fare una curva di transito tra due punti senza preoccuparsi del via point. Se il via point non è sull’arco desiderato, il robot percorre un arco completamente diverso da quello atteso — con rischio di collisione. Pianifica sempre i tre punti del C su carta prima di programmare.

1.4 — Quando usare J, L o C: regola pratica

Situazione J L C Perché
Movimento di transito (home ↔ area lavoro) ✅ — — Veloce, nessun ostacolo, traiettoria non critica
Avvicinamento a un pezzo — ✅ — Traiettoria controllata, velocità precisa
Presa / deposito verticale — ✅ — Discesa verticale precisa, velocità costante
Saldatura / dispensing su retta — ✅ — Velocità TCP costante = deposito uniforme
Saldatura / dispensing su arco — — ✅ Solo C garantisce la traiettoria circolare precisa
Lavorazione di un foro circolare — — ✅ Traiettoria circolare = cerchio completo (2 × C)
Movimento sopra un ostacolo ✅ — — Con punto intermedio in alto: J sicuro e prevedibile

1.5 — Pattern tipico di un ciclo pick & place con J e L

La struttura classica di un ciclo pick & place combina J per i transiti e L per gli avvicinamenti precisi. Questo pattern si ritrova in quasi tutte le celle industriali reali:

! === PICK & PLACE STANDARD — pattern J+L ===

! — TRANSITO VERSO PRESA —
1: J P[1] 100% FINE     ! home
2: J P[2] 80% CNT100  ! approccio sopra presa (punto sicuro alto)

! — AVVICINAMENTO E PRESA —
3: L P[3] 200mm/sec FINE ! discesa verticale sul pezzo
! [qui: DO[1]=ON — attiva pinza — Lezione 10]
4: L P[2] 200mm/sec FINE ! risalita verticale (stessa traiettoria inversa)

! — TRANSITO VERSO DEPOSITO —
5: J P[4] 80% CNT100  ! approccio sopra deposito

! — AVVICINAMENTO E DEPOSITO —
6: L P[5] 200mm/sec FINE ! discesa sul punto di deposito
! [qui: DO[1]=OFF — disattiva pinza]
7: L P[4] 200mm/sec FINE ! risalita

! — RITORNO HOME —
8: J P[1] 100% FINE     ! home

✅ Regola dei punti di sicurezza (approccio e risalita): P[2] e P[4] sono i “punti alti” — si trovano direttamente sopra P[3] e P[5] con la stessa X, Y ma Z più alto (es. +100 mm). Questa struttura garantisce che la discesa e la risalita siano sempre verticali (movimento L), evitando collisioni laterali con il pezzo o con l’attrezzatura. È uno dei pattern più usati nella programmazione industriale FANUC.


💻 2. Esempi guidati nel simulatore

Esempio A — J vs L: vedere la differenza di traiettoria

  1. Insegna due punti distanti tra loro: P[1] = J1=0°, J2=–10°, J3=20°, J4=0°, J5=–90°, J6=0° · P[2] = J1=60°, J2=–45°, J3=80°, J4=0°, J5=–90°, J6=0°.
  2. Scrivi ed esegui questo programma — nota bene la traiettoria del TCP:
    1: J P[1] 30% FINE
    2: J P[2] 30% FINE
    3: J P[1] 30% FINE
  3. Osserva la traiettoria del TCP: è una curva. Ora modifica le righe 2 e 3 con L a 200mm/sec:
    1: J P[1] 30% FINE
    2: L P[2] 200mm/sec FINE
    3: L P[1] 200mm/sec FINE
  4. Esegui di nuovo. Il TCP ora si muove in linea retta tra P[1] e P[2]. Gli assi si muovono a velocità diverse e variabili, ma il TCP mantiene la traiettoria rettilinea.
  5. Aumenta la velocità L a 2000mm/sec e ri-esegui. Il movimento è più veloce ma la traiettoria è identica — questo è il vantaggio del L: velocità e traiettoria sono indipendenti.

Esempio B — Programma pick & place con pattern J+L

Implementiamo il pattern classico visto in teoria. Insegna 5 punti secondo questo schema:

PuntoRuoloCome ottenerlo
P[1]HomeJ1=0°, J2=–10°, J3=20°, J4=0°, J5=–90°, J6=0°
P[2]Approccio sopra presaIK: X=250, Y=0, Z=200, W=180, P=0, R=0
P[3]Punto di presaIK: X=250, Y=0, Z=50, W=180, P=0, R=0
P[4]Approccio sopra depositoIK: X=250, Y=150, Z=200, W=180, P=0, R=0
P[5]Punto di depositoIK: X=250, Y=150, Z=50, W=180, P=0, R=0
! Pick & place con pattern J+L
1: J P[1] 100% FINE
2: J P[2] 80% CNT100
3: L P[3] 200mm/sec FINE
! [presa — vedremo DO[] in lezione 10]
4: L P[2] 200mm/sec FINE
5: J P[4] 80% CNT100
6: L P[5] 200mm/sec FINE
! [deposito]
7: L P[4] 200mm/sec FINE
8: J P[1] 100% FINE
Esegui con RUN e con STEP. Nota: nelle righe 3, 4, 6, 7 il TCP si muove verticalmente in linea retta. Nelle righe 2 e 5 il TCP curva (J) — ma non c’è nulla sotto, quindi è sicuro.

Esempio C — Movimento C: un semicerchio

  1. Insegna 3 punti che formano un semicerchio sul piano XY a Z=200:
    P[10]: IK X=300, Y=0, Z=200, W=180, P=0, R=0
    P[11]: IK X=250, Y=100, Z=200, W=180, P=0, R=0 (via point — punto intermedio sull’arco)
    P[12]: IK X=200, Y=0, Z=200, W=180, P=0, R=0
  2. Scrivi il programma:
    1: J P[10] 50% FINE          ! vai al punto di inizio arco
    2: C P[11]                    ! via point
       P[12] 100mm/sec FINE    ! end point
  3. Esegui. Il TCP percorre un arco dal P[10] a P[12] passando per P[11].
  4. Ora sposta P[11] a Y=–100 (sotto invece che sopra) e riesegui. L’arco si specchia.
  5. Cerchio completo: per fare un cerchio intero servono due movimenti C consecutivi — il primo copre 180°, il secondo i restanti 180°.

🏋️ 3. Esercizi

🟢 Esercizio 1 — Classifica il movimento (Facile)

Per ognuna delle seguenti situazioni, indica quale tipo di movimento (J, L o C) useresti e perché:

a) Il robot deve andare dalla posizione di home all’area di lavoro — nessun ostacolo nel percorso
b) Il robot deve scendere verticalmente di 80 mm per afferrare un connettore su un PCB
c) Il robot deve applicare un cordone di silicone lungo il perimetro circolare di un coperchio
d) Il robot deve attraversare sopra un macchinario alto — rischio collisione se va diretto
e) Il robot deve applicare una striscia di colla dritta lunga 200 mm su un pannello
f) Il robot torna in home dopo il ciclo

🔵 Esercizio 2 — Pick & place completo (Medio)

Implementa nel simulatore un ciclo pick & place con questi requisiti:

— Punto di presa: X=280, Y=–80, Z=40 (con approccio a Z=180)
— Punto di deposito: X=280, Y=80, Z=40 (con approccio a Z=180)
— Home a piacere (rispetta i criteri della Lezione 04)
— Movimenti di transito: J a 80% con CNT100
— Avvicinamenti e risalite: L a 150mm/s con FINE
— Tutti i punti in configurazione N U T
— Almeno 5 commenti nel programma

Esegui il programma, verifica con STEP che ogni fase si comporti come previsto, poi eseguilo in continuo con RUN per almeno 3 cicli.

🟠 Esercizio 3 — Traiettoria a L con punto intermedio sicuro (Medio)

Il robot deve spostare un pezzo da A a B, ma tra i due punti c’è un ostacolo alto 120 mm (immagina un muro). Le coordinate sono:

A (presa): X=200, Y=0, Z=30
B (deposito): X=200, Y=200, Z=30
Ostacolo: occupa tutto l’intervallo Y=80–120 fino a Z=120

Progetta il programma completo con i punti di sicurezza necessari per superare l’ostacolo. Scrivi il programma TP con la corretta sequenza J/L, definisci tutti i punti P[ ] con le relative coordinate, e spiega perché hai scelto quel percorso.

🟣 Esercizio 4 — Cerchio completo con due movimenti C (Difficile)

Un pezzo circolare di diametro 100 mm (raggio 50 mm) deve essere percorso completamente dal TCP. Il centro del cerchio è a X=250, Y=0, Z=150 e il piano del cerchio è orizzontale (Z costante).

Calcola le coordinate di 4 punti: il punto di partenza/arrivo e i tre via/end point per due movimenti C consecutivi che coprono il cerchio intero. Scrivi il programma TP completo. Implementalo nel simulatore verificando che il TCP percorra effettivamente il cerchio.

Suggerimento: dividere il cerchio in due semicerchi di 180° ciascuno. Per un cerchio di raggio 50 centrato a X=250, Y=0: il punto a 0° è X=300, Y=0 · il punto a 90° è X=250, Y=50 · il punto a 180° è X=200, Y=0 · il punto a 270° è X=250, Y=–50.


❓ 4. Quiz di verifica

1. Perché il movimento L usa mm/s invece di % come il movimento J?

Mostra risposta

Perché in L il TCP deve mantenere una velocità costante lungo la traiettoria rettilinea. La velocità in % si riferisce agli assi articolari — in una configurazione diversa del robot, lo stesso % produrrebbe velocità TCP completamente diverse. Con mm/s il controller garantisce che il TCP si muova esattamente a quella velocità indipendentemente dalla configurazione. Questo è essenziale in saldatura e dispensing dove la quantità di materiale depositato per unità di lunghezza dipende direttamente dalla velocità TCP.


2. Un programma contiene: 2: J P[2] 80% CNT100 seguito da 3: L P[3] 200mm/sec FINE. Cosa succede esattamente alla transizione tra riga 2 e riga 3?

Mostra risposta

Con CNT100 nella riga 2, il robot inizia a deviare verso P[3] prima di arrivare a P[2] — non si ferma in P[2]. Quando passa al movimento L della riga 3, il TCP deve seguire una traiettoria rettilinea verso P[3]. Il punto di inizio della retta non è P[2] esatto ma il punto dove il robot si trovava quando ha iniziato l’esecuzione dell’istruzione L — che con CNT100 può essere significativamente distante da P[2]. Questo è accettabile per avvicinamenti sopra il pezzo (P[2] è il punto di sicurezza alto), ma non va usato quando la retta deve iniziare esattamente da P[2].


3. Perché per un cerchio completo servono due movimenti C e non uno solo?

Mostra risposta

Perché un movimento C è definito da tre punti: start (posizione corrente), via point e end point. Tre punti non collineari definiscono un unico arco, che può al massimo coprire quasi 360° ma non può essere un cerchio chiuso (start e end sarebbero coincidenti, il che è un caso degenere). La soluzione è dividere il cerchio in due semicerchi da 180° ciascuno usando due C consecutivi: il primo copre la metà superiore e il secondo la metà inferiore (o qualsiasi altra suddivisione). Alcuni controller avanzati offrono istruzioni specifiche per cerchi completi, ma in TP standard FANUC la soluzione è sempre 2 × C.


4. Perché nei punti di approccio (P[2] e P[4] nel pattern pick & place) si usa J con CNT100 invece di L?

Mostra risposta

Tre motivi: (1) Velocità: J è più veloce di L per spostamenti ampi — i movimenti di transito non richiedono traiettoria controllata, quindi J è più efficiente. (2) Il punto di approccio non è un punto di lavoro preciso: con CNT100 il robot vi passa vicino senza fermarsi, risparmiando tempo di ciclo. (3) Evita singolarità: L su traiettorie lunghe e trasversali può passare vicino a singolarità del braccio. J le aggira naturalmente scegliendo il percorso articolare ottimale. L entra in gioco solo per la discesa/risalita verticale precisa.


5. Cosa succede se i tre punti di un movimento C sono collineari (sulla stessa retta)?

Mostra risposta

Tre punti collineari non definiscono un cerchio — il raggio sarebbe infinito e il “cerchio” degenera in una retta. Il controller FANUC rileva questa condizione e genera un errore (tipicamente MOTN-054 “Circular motion error”): il programma si blocca senza eseguire il movimento. Per evitarlo: assicurarsi che il via point P[via] sia lateralmente spostato rispetto alla retta che congiunge P[start] e P[end] di almeno qualche mm. Quanto più il via point è lontano dalla retta start-end, tanto più l’arco è ben definito e il calcolo è stabile.


📚 Riepilogo della lezione

Cosa hai imparato oggi:
  • J = traiettoria curva, velocità %, usato per transiti veloci e movimenti home
  • L = traiettoria rettilinea, velocità mm/s costante sul TCP, usato per avvicinamenti precisi e applicazioni di processo
  • C = traiettoria ad arco, velocità mm/s, richiede via point + end point — due C per un cerchio completo
  • Il pattern J+L (transito in J, discesa/risalita in L) è lo standard industriale per pick & place
  • I punti di sicurezza alti (approccio e risalita) evitano collisioni laterali — stessa X,Y del punto di lavoro, Z più alto
  • Il limite 250 mm/s in T1 si applica sia a L che a C, indipendentemente dal valore programmato

Prossima lezione →

Lezione 08 — Teaching dei punti P[ ]
Registrazione posizioni nel simulatore, modifica manuale delle coordinate,
gestione sicura delle posizioni e convenzioni di nomenclatura.

© Prof. D. Bertolino · Robotica Industriale FANUC ER-4iA · Lezione 07 di 18