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
🎯 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.
| Traiettoria TCP | Curva — non deterministica |
| Velocità | % della vel. massima assi |
| Calcolo controller | Leggero — solo FK |
| Rischio singolarità | Basso |
| Traiettoria TCP | Retta — deterministica |
| Velocità | mm/s — costante sul TCP |
| Calcolo controller | Pesante — IK continua |
| Rischio singolarità | Medio — evitare zone critiche |
| Traiettoria TCP | Arco circolare — deterministica |
| Velocità | mm/s — costante sul TCP |
| Calcolo controller | Pesante — 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 %.
Linear
target
in mm/s
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à.
| Applicazione | Velocità tipica | Note |
|---|---|---|
| Avvicinamento pezzo | 50–100 mm/s | Lento per sicurezza e precisione |
| Pick & place (discesa) | 100–300 mm/s | Dipende dalla tolleranza del pezzo |
| Dispensing colla/silicone | 20–80 mm/s | Costante per spessore uniforme del cordone |
| Saldatura MIG/TIG | 5–15 mm/s | Molto lenta per qualità del cordone |
| Taglio laser/plasma | 10–50 mm/s | Dipende dallo spessore del materiale |
| Transito (uso insolito di L) | 500–2000 mm/s | Meglio 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.
C P[2] ! ← via point (punto intermedio sull’arco)
P[3] 200mm/sec FINE ! ← end point + velocità + terminazione
— 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.
- 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:
! — 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
- 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°.
- 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 - Osserva la traiettoria del TCP: è una curva. Ora modifica le righe 2 e 3 con
La200mm/sec:
1: J P[1] 30% FINE
2: L P[2] 200mm/sec FINE
3: L P[1] 200mm/sec FINE - 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.
- Aumenta la velocità L a
2000mm/sece 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:
| Punto | Ruolo | Come ottenerlo |
|---|---|---|
| P[1] | Home | J1=0°, J2=–10°, J3=20°, J4=0°, J5=–90°, J6=0° |
| P[2] | Approccio sopra presa | IK: X=250, Y=0, Z=200, W=180, P=0, R=0 |
| P[3] | Punto di presa | IK: X=250, Y=0, Z=50, W=180, P=0, R=0 |
| P[4] | Approccio sopra deposito | IK: X=250, Y=150, Z=200, W=180, P=0, R=0 |
| P[5] | Punto di deposito | IK: X=250, Y=150, Z=50, W=180, P=0, R=0 |
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
Esempio C — Movimento C: un semicerchio
- 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 - 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 - Esegui. Il TCP percorre un arco dal P[10] a P[12] passando per P[11].
- Ora sposta P[11] a Y=–100 (sotto invece che sopra) e riesegui. L’arco si specchia.
- 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
- 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