Indice
Robotica industriale
Introduzione alla robotica industriale
La robotica è sempre più presente nei sistemi di automazione industriale perché permette di migliorare l'efficienza di molti processi produttivi e in particolare:
- migliorare la qualità (precisione, uniformità)
- velocizzare i processi di produzione/lavorazione/movimentazione
- diminuire i costi (affidabilità, produttività)
- aumentare la sicurezza (riduzione dei rischi per gli operatori nei lavori logoranti e ripetitivi)
Nei processi industriali i robot affiancano le tradizionali macchine automatiche ma a differenza di queste, che sono specializzate nello svolgere un compito semplice e sempre uguale, sono in grado di svolgere compiti diversi e molto più complessi permettendo una maggiore flessibilità di impiego.
In generale un robot è una macchina capace di compiere una serie complessa di azioni in maniera automatica. Un robot industriale è un tipo di robot usato nell'industria manifatturiera per svolgere in maniera automatica e ripetitiva compiti quali:
- trasporto e manipolazione: pallettizzazione1), carico/scarico, selezione e smistamento, pick and place e confezionamento2)
- assemblaggio e lavorazione: saldatura, verniciatura, trapanatura, avvitatura, incollaggio, taglio laser
- ispezione
La robotica è una materia interdisciplinare, infatti coinvolge:
- la meccanica, la cinematica e la dinamica3) che descrivono i movimenti del robot
- l'elettronica e l'elettrotecnica per il pilotaggio e controllo dei motori elettrici e per l'interfacciamento con altri dispositivi
- l'informatica per il calcolo dei movimenti e la programmazione del robot
Robot industriali
Definizioni fondamentali
Un robot industriale è definito così: manipolatore multi-funzione, controllato automaticamente, ri-programmabile, a tre o più gradi di libertà, utilizzato per l’automazione di applicazioni industriali, dove:
- manipolatore è un meccanismo composto da segmenti rigidi (link) collegati con giunti (joint) mossi da motori che movimenta utensili (tool/end-effector)
- multi-funzione indica sottolinea la versatilità del robot, che non è destinato ad un unico impiego
- il controllo è affidato a un computer e il comportamento è dettato da un programma
- gradi di libertà (DOF) è il numero di giunti del robot
Per la parte meccanica le definizioni più importanti sono:
- link (o braccio): segmenti rigidi collegati tra loro che partono dalla base (fissa) del robot e insieme formano il meccanismo
- joint (giunto): è l'articolazione che collega due link e può essere:
- prismatico, se i link possono scorrere uno rispetto all'altro
- rotoidale, se possono ruotare uno rispetto all'altro
- flangia: la parte terminale dell'ultimo link del robot
A seconda dell'applicazione da svolgere sulla flangia si monta un tool (utensile) adatto, ad esempio:
- una pinza meccanica (elettrica o pneumatica)
- una ventosa a depressione (pinza a vuoto o vacuum gripper)
- un saldatore
- una pistola verniciatrice
Il grado di libertà il tipo di giunti può cambiare a seconda del robot ma in generale, se si vuole poter raggiungere un punto a piacere nello spazio con un orientamento a piacere, servono sei gradi di libertà e quindi sei giunti. Nella robotica si usa il termine posa (pose in inglese) per indicare insieme la posa e l'orientamento di un oggetto nello spazio dove:
- la posizione è definita con una terna di coordinate cartesiane (x-y-z)
- l'orientamento è definito:
- in genere con gli angoli di Eulero, cioè rotazioni attorno agli assi del sistema di riferimento originario (ZYX)
- oppure con gli angolo RPY4), cioè rotazioni successive intorno agli assi X poi Y e poi Z
- o ancora con i quaternioni, una rappresentazione matematica (poco intuitiva) che usa quattro valori tra -1 e 1
La posizione e l'orientamento del punto di lavoro dove “agisce il tool” è chiamato TCP (tool center point) e la programmazione del robot di fatto consiste nel definire i movimenti e le azioni che deve compiere il TCP per svolgere un determinato compito.
Per quanto riguarda la parte elettrica e elettronica ogni robot è dotato di:
- sensori di posizione: generalmente dei resolver (simili agli encoder ma senza elettronica a bordo quindi più robusti)
- servomotori per il movimento dei giunti: motori con prestazioni elevate pilotati da sistemi di controllo elettronico che consentono di controllare con precisione posizione, velocità ed accelerazione
- armadio di controllo o controller: alimenta e pilota gli attuatori e contiene il sistema di controllo computerizzato a cui collegare l'unità di programmazione esterna (per la programmazione e la movimentazione) o un PC
Tipologie di robot e robot collaborativi
Esistono varie tipologie di robot con caratteristiche diverse. Le principali sono:
- payload: capacità di carico o peso massimo che il robot può sopportare alla flangia
- reach (raggio d'azione): distanza massima raggiungibile dal tool
- spazio di lavoro (area raggiungibile dal tool)
- velocità
- precisione e ripetibilità
- DOF (grado di libertà) e tipologie di giunti
I robot si classificano in base al numero e alla tipologia di giunti in:
- articolati, che hanno almeno due giunti rotoidali con assi paralleli
- antropomorfi, che hanno solo giunti rotoidali e somigliano all'articolazione di un braccio umano (e per questo sono chiamati anche bracci robotici o robot arm)
- cartesiani, che hanno un meccanismo simile a quello di una stampante 3D
- cilindrici, come il manipolatore che usiamo con i PLC
I robot industriali più utilizzati sono:
- gli articolati a sei assi, per le applicazioni industriali pesanti (il capostipite è il PUMA, già in uso negli anni ottanta)
- gli SCARA, robot a quattro assi usati nell'assemblaggio
- i delta, robot a quattro assi, veloci e a bassa inerzia, usati nella manipolazione di piccole parti
Negli ultimi anni sono sempre più diffusi anche i robot collaborativi o cobot. Sono piccoli robot a sei o sette assi, usati nel campo dell'assemblaggio, della manipolazione e dell'asservimento macchina, fatti per lavorare fianco a fianco con le persone senza barriere di sicurezza. Questo è possibile perché sono piccoli e leggeri, non hanno parti appuntite o pericolose e sono dotati di sensori che arrestano istantaneamente il movimento in caso di collisione. Oltre a questo sono facili da installare e utilizzare e possono essere programmati anche con una tecnica di auto-apprendimento che permette di programmare il robot senza scrivere codice ma spostando manualmente il tool e memorizzando le posizioni da raggiungere. Il robot in dotazione al laboratorio è un robot collaborativo della ABB. Questa soluzione ha molti vantaggi:
- costo contenuto5)
- ingombro ridotto e facilità di trasporto (da un laboratorio a un altro)
- bassa potenza e alimentazione monofase disponibile ovunque
- intrinsecamente sicuro quindi adatto ad un ambiente scolastico
- con un ambiente di sviluppo che permette di programmare e simulare senza essere fisicamente collegati al robot (ogni studente lavora singolarmente) e che è lo stesso utilizzato per i grandi robot industriali
Il robot YuMi IRB 14050
Il nostro robot collaborativo è il modello YuMi Single Arm, indicato anche con la sigla IRB15040. Le sue caratteristiche sono queste:
- 7 DOF (sette assi)
- payload 0,5 Kg
- raggio d'azione 0,5 m
- velocità 1,5 m/s
- peso 9,5 Kg
- controller Omnicore C30
- unità di programmazione esterna Flexpendant
- end-effector: Smartgripper ABB che monta:
- una pinza da 5cm
- una presa a vuoto (richiede alimentazione esterna con aria compressa a 4 bar)
- un sistema di visione integrato
Il controller nella parte inferiore del carrello si occupa di:
- alimentare e controllare con precisione i movimenti dei servomotori
- comunicare con dispositivi esterni (Flexpendant, PC, PLC, altri robot)
- gestire i movimenti del robot ed eseguire i programmi
Di fatto si tratta di un computer con una potenza di calcolo elevata su cui gira un sistema operativo dedicato (Robotware 7) ma che a bordo integra anche tutta l'elettronica di potenza che serve a pilotare i motori e le interfacce per gestire i segnali del robot e di altri dispositivi esterni, sia come ingressi che come uscite.
Nei robot ABB l'unità di programmazione esterna (teach pendant) collegata al controller viene chiamata Flexpendant6). Questo dispositivo, dotato di joystick e touchscreen, serve a:
- muovere manualmente il robot (jog) con un joystick
- definire target e movimenti
- spostando il TCP col joystick
- spostando fisicamente i giunti del robot nella modalità lead-through
- programmare il robot con un interfaccia intuitiva e semplificata
- caricare i programmi, avviare o arrestare l'esecuzione dei programmi
Volendo si può programmare e utilizzare il robot con la sola Flexpendant. In questa modalità, detta programmazione online perché per utilizzare la Flexpendant bisogna essere fisicamente collegati al robot, si definiscono i target spostando il TCP nelle posizioni desiderate, si specifica da touchscreen che tipo di percorso compiere e quali azioni svolgere con il tool e si salva il programma che il robot poi eseguirà ripetutamente in maniera automatica. Questa soluzione è veramente semplice ma richiede la presenza del robot e dell'operatore sul campo, cioè nell'ambiente di lavoro del robot. Per sfruttare appieno le potenzialità del robot bisogna ricorrere alla programmazione offline. In questa modalità la programmazione si fa al PC, senza essere necessariamente collegati al robot, usando l'ambiente di sviluppo (IDE) RobotStudio di ABB. Con questo software si può:
- simulare la stazione robotica, cioè il robot e il suo ambiente di lavoro
- sfruttare tutte le potenzialità del robot usando un ambiente di sviluppo sofisticato
- programmare il robot usando un linguaggio testuale con tutte le caratteristiche di un editor moderno (syntax highlighting, auto-completamento, debugging, ecc.)
In un laboratorio scolastico la programmazione offline è la più indicata perché consente a tutti gli studenti di lavorare contemporaneamente a un progetto ed eventualmente testare la propria soluzione singolarmente collegandosi al robot.
Programmazione del robot
Target e sistemi di riferimento
Per programmare il robot occorre:
- definire dei target, cioè delle pose (posizione e orientamento) che deve raggiungere il TCP
- definire i movimenti che il robot deve compiere per raggiungere i target
- definire le azioni che deve svolgere il tool una volta raggiunti i target
La definizione di posizione e orientamento di un target (o di qualunque altro oggetto) è data rispetto ad un sistema di riferimento scelto opportunamente. I vari sistemi di riferimento sono a loro volta definiti uno rispetto all'altro a partire da quello principale, detto work object zero (wobj0), posto alla base del robot. Altri sistemi di riferimento di uso comune sono:
- tool0, posto sulla flangia del robot
- servo, coincidente col TCP della pinza
Ma ce ne posso essere molti altri. In generale conviene definire sistemi di riferimento specifici a seconda dell'applicazione. Ad esempio se il robot deve eseguire una lavorazione su un pezzo conviene definire un riferimento specifico, detto work object, centrato su uno spigolo del pezzo perché:
- faciliterà la definizione dei target usando un sistema di riferimento locale
- permette di spostare il pezzo senza modificare i target
Movimentazione del robot
La movimentazione del robot può avvenire in due modi:
- per giunti, specificando la posizione in gradi di ogni giunto
- linearmente, spostando il TCP lungo gli assi cartesiani di un sistema di riferimento
La movimentazione lineare è particolarmente utile ma richiede una potenza di calcolo elevata per risolvere un problema di cinematica inversa, ovvero calcolare posizioni e velocità dei vari giunti che consentano di raggiungere la posizione desiderata. Questo compito può essere molto difficile, infatti:
- un target può essere raggiunto con più configurazioni diverse dei giunti
- alcune configurazioni sono critiche perché possono portare a delle singolarità, ovvero configurazioni dove due assi risultano allineati, il calcolo fallisce o i movimenti richiedono velocità molto elevate per superare la singolarità (vedi questo video o questo o questo specifico del robot IRB14050)
Nel raggiungere un target allora è particolarmente importante considerare il tipo di movimento e la configurazione con cui lo si raggiunge. Proprio per questo, nei robot ABB, i target vengono memorizzati in un tipo di dati chiamato robtarget che oltre alla posa contiene anche la configurazione del robot scelta per il target.
Nell'esecuzione del programma il robot si muove lungo dei percorsi, definiti con la Flexpendant o con RobotStudio, che contengono le istruzioni di movimento. In queste istruzioni, oltre al target da raggiungere, si specifica:
- il tipo di movimento, che può essere:
- moveJ (move joint), quello predefinito che segue una traiettoria ottimizzata per avere la massima velocità con le minime sollecitazioni e con configurazioni “naturali” che evitano le singolarità
- moveL (move linear), che segue una traiettoria rettilinea
- moveC (move circular), che segue una traiettoria circolare
- la velocità in mm/s
- precisione, definita dal parametro zone, che indica la massima distanza ammissibile dal punto esatto del target
- il tool, ovvero il TCP che deve raggiungere i target (ad esempio servo per la pinza)
- il workobject, cioè il sistema di riferimento da considerare nello spostamento
In genere si muove il robot con movimenti moveJ tranne quando si devono fare lavorazioni precise. In questo caso ci si avvicina al punto di lavoro definendo un target su punto di approccio, da raggiungere con movimenti moveJ, per poi procedere con movimenti moveL solo dove è necessario; per allontanarsi si definisce un target su un punto di svincolo e da lì si procede con movimenti moveJ.
RobotStudio
Nell'anno scolastico 2023-2024 abbiamo usato RobotStudio2023. Questa versione ha un'interfaccia grafica diversa rispetto a quelle precedenti a cui fanno riferimento i libri di testo (ad esempio la 2020) ma i comandi e le funzioni sono più o meno quelli. Questo software non è esente da difetti:
- specialmente nelle versioni più recenti è piuttosto impegnativo come risorse
- i crash non sono frequenti ma capitano, meglio salvare spesso
- è tradotto male in italiano (Project è tradotto proietta invece che progetto ma ci sono tanti altri esempi)
- il calcolo dei movimenti fallisce troppo spesso, o fallisce in maniera imprevedibile, specialmente per i robot a sette assi come il nostro
Installazione e licenze
RobotStudio si può utilizzare gratuitamente per 30 giorni poi richiede una licenza per funzionare. A scuola è installato un server che dispone di 100 licenze concesse a titolo gratuito da ABB ma da rinnovare ogni anno. RobotStudio va configurato indicando l'indirizzo IP del server a cui richiedere una licenza che viene impegnata solo mentre lo si usa e poi restituita.
Oltre ad installare RobotStudio occorre anche installare questi Add-In:
- RobotWare 7, OS del controllore del robot IRB14050
- SmartGripper, per la gestione della pinza
- Wizard Easy Programming, per la programmazione a blocchi su Flexpendant
RobotWare 7 a sua volta propone l'installazione del software Virtual Flexpendant, indipendente da RobotStudio, che simula l'unità di programmazione esterna Flexpendant. Per simulare correttamente la pinza conviene installare anche il componente Virtual SmartGripper.
File associati a RobotStudio
I principali tipi di file associati a RobotStudio sono:
- file stazione con estensione
.rsstn
, che contiene solo la rappresentazione virtuale del robot ma che solitamente è abbinata alla cartella di un controllore virtuale - file progetto con estensione
.rsproj
, creato insieme alla corrispondente cartella quando si crea un nuovo progetto in RobotSudio, che contiene stazione, controllore virtuale e altro e permette facilmente di scambiare e replicare una stazione - file pack-and-go con estensione
.rspag
, che contiene una copia completa della stazione e del controllore - file di backup con estensione
.tar
, creati con RobotStudio o direttamente da Flexpendant (si possono salvare su USB o sul controllore stesso), che contengono una copia completa del sistema (cioè del controllore) e di tutti i suoi parametri - cartella di backup, come sopra ma senza che i file vengano compressi in un unico file
- cartella con il nome del controllore virtuale, che contiene solo i dati del controllore abbinato a una stazione in RobotStudio o di un controllore reale
Impostazioni e particolarità
Ci sono una serie di impostazioni e procedure non bene documentate che è meglio utilizzare.
RobotStudio
Si può cambiare la lingua di RobotStudio dalle opzioni (NB la traduzione in italiano presenta degli errori). Sempre nelle opzioni, alla voce Sincronizzazione, conviene indicare per tutti e quattro i campi il nome MainModule; in questo modo tutti i dati principali (tool, workobject, ecc.) vengono salvati in un modulo principale con quel nome.
SmartGripper
Per cominciare, se si vuole replicare la stazione con il robot vero e proprio serve:
- creare una stazione
- importare il robot IRB14050
- aggiungere un controller virtuale (dal profilo)
- aggiungere l'end-effector Virtual SmartGripper e collegarlo al robot
- aggiungere un secondo end-effector SmartGripper (non virtual), collegarlo al robot e poi cancellarlo
L'ultimo passaggio serve solo a creare il sistema di coordinate Servo posto nel punto dove le dita della pinza afferrano un oggetto. Questo tool indispensabile, che manca nel componente Virtual SmartGripper (forse per una dimenticanza), viene creato e resta anche dopo aver eliminato lo SmartGripper.
Impostazioni del controllore
Si può usare RobotStudio anche senza modificare le opzioni predefinite ma sarebbe meglio:
- spuntare le opzioni Collision Detection e Multitasking del controller per avere a disposizione i blocchi dello SmartGripper nell'ambiente di programmazione Wizard; il modo più semplice per farlo è spuntare Opzioni di personalizzazione quando si crea il controller
Altre opzioni che risultano attivate nel controller reale e che non sono presenti di default:
- Absolute Accuracy
- RW Add-In Prepared
- Collsion Avoidance
- Integrated Vision Interface
- Path Recovery
- RobotStudio Connect
- Soft Move
- World Zone
- Profinet Device
Nel software
Quando il calcolo dei movimenti genera il warning Errore d'angolo la simulazione si interrompe. Questo situazione capita molto di frequente ed è abbastanza imprevedibile. Per trascurare il warning inserire nel codice RAPID l'istruzione:
CornerPathWarning FALSE;
In simulazione non è richiesto ma la pinza del robot richiede una calibrazione ad ogni nuovo avvio del controller. Per farla in automatico inserire nel condice RAPID le istruzioni:
g_JogIn; WaitTime 1; g_Calibrate;
Che chiudono la pinza e dopo un secondo effettuano la calibrazione.
File con modello di stazione robot
Nel link seguente si può scaricare un file che contiene una stazione robotica (robot, virtual controller, smartgripper) che replica quella del laboratorio9) e può essere usato come modello da cui partire per un progetto RobotStudio.
modello stazione con robot IRB14050
E' un file pack-and-go da aprire con RobotStudio; dopo averlo scompattato si salva il progetto in una nuova posizione.
Lezioni in aula con la 5C
Lezione 1
- generalità sui sistemi robotici industriale, motivazioni, applicazioni (video)
- il robot PUMA: video promozionale del 198110) che permette di introdurre tutti i temi riguardanti la robotica industriale (vantaggi, utilizzi, giunti, programmazione online, movimento per giunti, sistemi di coordinate e movimenti cartesiani, cinematica inversa calcolo e singolarità, programmazione offline, cambio tool, ispezione e sistema di visone)
- confronto con la soluzione moderna: video del robot IRB 14050, robot collaborativi, programmazione semplificata (wizard, auto-apprendimento o lead through)
- quanto costa un robot collaborativo, produttori principali di robot
- perché un cobot: costo, trasportabilità, peso e ingombro, alimentazione, sicurezza, facilità d'uso
- perché il robot IRB 14050: il più usato nella didattica, programmazione-offline, stesso ambiente di sviluppo dei robot industriali
- esame delle parti del robot IRB14050 e della funzione svolta: parte meccanica e tool, controllore, flexpendant
- prime movimentazioni: accensione e attivazione motori, jog manuale da flexpendant, jog asse per asse e jog lineare, allineamento
Lezione 2
- documento con i dati tecnici del robot
- 7 giunti invece che 6 (ridondante)
- articolazioni (joint) prismatiche e rotoidali
- connettori nella parte posteriore del robot
- tipologie di motori robot (brushless in quelli seri altrimenti stepper)
- riduttori
- sensori di posizione (resolver nelle applicazioni industriali altrimenti encoder)
- payload, raggio d'azione e spazio di lavoro del robot
- caratteristiche dell'end-effector
Lezione 3
- primo avvio di RobotStudio
- panoramica dell'interfaccia di RobotStudio
- creazione di una stazione con IRB14050, Virtual SmartGripper e SmartGripper, controller e Flexplendant
Lezione 4
- movimentazione del robot con Flexpendant11) in simulazione e dal vero
- movimento per giunti e movimento lineare
- allineamento del tool al piano e riorientamento del tool
- movimento della pinza
- pick and place manuale (spostamento di un pezzo dal piano a un contenitore)
Lezione 5
- interfaccia della Flexpendant:
- pagina principale e applicazioni12), chiudere le applicazioni
- tasti fisici, vista QuickSet
- control panel: auto/manual, motori on/off, velocità, reset programma, avvio/arresto/passo-passo
- execution: singolo/continuo
- barra di stato, impostazioni, logout
- jog: vista, informazioni sulla posizione, lock dei movimenti, sistema di coordinate13), tipo di movimento, tool e workobject
- controllo del robot dalla Flexpendant virtuale
- generalità sulla movimentazione del robot: percorsi, tipo di movimento, singolarità14)
- istruzioni di movimento: target (destinazione), tool, moveJ, moveL, velocità, zona15)
Lezione 6
- sincronizzazione tra ambiente grafico e controller (e viceversa)
- programmazione grafica con l'applicazione Wizard su Flexpendant usando un interfaccia grafica a blocchi simile a Scratch
- seguiamo il tutorial della Flexpendant
- passiamo alla applicazione code16): il programma è tradotto in RAPID (sia su Flexpendant che su RobotStudio)
- collegamento al compressore e prova con la pinza a vuoto
Lezione 7
Simulazione:
- si possono eseguire i singoli movimenti (o i singoli percorsi) dall'ambiente grafico senza lanciare le simulazione
- viene simulato il RAPID → occorre sincronizzare
- se non è presente una procedura (o percorso) che si chiama main bisogna definire un punto di ingresso per la simulazione
- per tornare a un punto di partenza basterà selezionare un target e spostare il robot (dalla scheda profilo)
- è utile memorizzare uno stato iniziale della simulazione a cui tornare prima di lanciarla
- si può attivare la traccia TCP per vedere il percorso effettivo
- si può registrare e esportare la simulazione come video
Concetti sul RAPID:
- non è case sensitive
- segnaposto (ad es. <SMP>)
- commenti e operatori
- moduli e procedure, modulo main
- programma = cartella con moduli (.mod) e descrizione (.pgf)
- procedure, funzioni (restituiscono un valore) e routine trap (interrupt)
- variabili persistenti
- arresto del programma
- help online: manuale operatore RobotStudio e manuale completo del RAPID (reference istruzioni)
- le istruzioni del gripper sono documentate nel manuale del gripper
- Intellisense e TAB
Esercizio:
- spacchettare pack-and-go (robot+controller+tooldata+procedure pinza)
- creare due workobject
- selezione tool e workobject
- selezionare MoveAbsJ nella barra di stato
- creare un JointTarget Sollevato
- trascinare nel main per insegnare l'istruzione
- provare il movimento (sposta Home poi Sposta lungo il percorso)
- imposta UCS (user coordinate system)
- creare un solido e duplicarlo (5 copie)
- moveL v100 fine
- creare target (selezione e snap)
- moveJ v500 z10, spostamento lineare e posizione approccio
- chiamata a procedure apri pinza, chiudi pinza
- chiamata a istruzione waittime
- punto reset simulazione
- sincronizzazione e simulazione
- istruzioni moveJ e moveL
- uso di Offs e RelTool
- simulazione
- esportazione video
- salvataggio e trasferimento al robot
Risorse e documentazione
La documentazione sul robot si può scaricare dal portale ABB della documentazione (alcuni richiedono una registrazione al sito).
Pagine principali di ABB
- pagina prodotto IRB14050 (in inglese) con datasheet e documentazione
Documentazione
- materiale informativo
- documenti tecnici più utili
- Manuale del sistema Omnicore, installazione e uso del robot con l'unità di programmazione esterna Flexpendant
- Panoramica del linguaggio RAPID (180 pagine)
- altri documenti tecnici
- Manuale della pinza SmartGripper, end-effector del robot
- Manuale del robot IRB14050 (installazione e manutenzione)
- Manuale Wizard per la programmazione semplificata su Flexpendant
- Manuale completo del RAPID (2000 pagine)
- Manuale operativo di Robotstudio, ambiente di sviluppo per programmazione offline
Altre risorse
- video:
- altro
- Tutorial Pick and Place di Lepori (formatore ABB)
- RoboDK software di simulazione e programmazione gratuito vendor-independent
Terminologia
- stazione o isola robotica: robot (con il suo tool) e ambiente di lavoro del robot
- stazione (station) in RobotStudio: rappresentazione virtuale del robot (senza controller)
- frame: terna di frecce che indicano gli assi xyz di un sistema di coordinate
- sistema di coordinate: permette di definire la posizione e l'orientamento di un elemento (un robot, un tool, un oggetto di lavoro, un altro sistema di riferimento) rispetto ad un altro; spostando un sistema di riferimento anche tutti gli oggetti definiti rispetto ad esso si spostano17)
- pose: indica la posizione, definita da tre coordinate cartesiane (xyz), abbinata all'orientamento, definito con gli angoli di Eulero, YPR o quaternioni
- flangia: parte terminale del robot dove si monta il tool
- tool/end-effector: montato sulla flangia del robot per svolgere un compito specifico (prendere, saldare, verniciare, ecc.)
- TCP (Tool Center Point): è sistema di coordinate posto al centro del tool; è dove l'end-effector svolge il suo compito quindi è il sistema che vogliamo controllare nelle applicazioni robotiche
- smart component: componente “intelligente” di Robotstudio (ad es. smartgripper) che serve solo nella simulazione per interagire con altri oggetti simulati
- jog: movimentazione manuale del robot
- approccio/svincolo: posizioni vicino ai target dove si userà il tool che possono essere raggiunti con movimenti semplici e veloci (joint)
- snap: negli IDE facilita l'individuazione delle coordinate di un punto in base alla geometria degli oggetti
- singolarità: configurazione da evitare perché uno o più giunti risultano allineati e porta a un comportamento anomalo e imprevedibile del robot (assi bloccati, velocità molto elevate, errore di calcolo)
- cinematica diretta: calcolo della posizione e dell'orientamento del TCP conoscendo la posizione dei singoli giunti
- cinematica inversa: calcolo di posizione e velocità dei singoli giunti per raggiungere una determinata posizione con l'orientamento desiderato (è un problema molto più complicato richiede una potenza di calcolo elevata, il calcolo può fallire)
Note e altro
PROFINET e comunicazione con PLC
Il 10/9/2024 provo a configurare PROFINET per comunicare col PLC. Non si può testare con un controller virtuale ma bisogna collegarsi direttamente al robot sulla porta LAN o sulla WAN (chiamate anche rispettivamente I/O e Public network). Non si usa la porta MGMT che serve solo per accedere al controller da RobotStudio con DHCP18).
Appena lanciato RobotStudio con Online|One Click Connect ci si collega al controller via MGMT. Poi si accede e, eventualmente si richiede l'accesso in scrittura. L'utente Default User ha permessi sufficienti per configurare PROFINET (Authenticate|View User Grants). Non serve configurare LAN e WAN (dalla scheda Controllore tasto destro sul nome del controller poi Proprietà|Impostazioni di Rete|Rete I/O oppure Public Network come descritto nel paragrafo 18.6 del manuale RobotStudio) perché la WAN Network ha già un IP 192.168.0.10 (è anche gateway per la I/O network) compatibile con quello dei PLC (192.168.0.1). Purtroppo servono due cavi di rete su PC e controller:
- uno per la porta MGMT
- uno per la porta WAN con PROFINET
Per usare contemporaneamente TIA Portal e RobotStudio il PC deve avere tre schede di rete (una per la rete di istituto, una per PLC e controller con PROFINET, una per accedere al controller). Uso un adattatore ethernet USB per collegarmi a MGMT.
Seguo l'Application Manual su PROFINET per configurazione e altro19), chiedo l'accesso in scrittura e lancio I/O Engineering20). Probabilmente il manuale è scritto per i controller IRC5 e i passaggi indicati nel paragrafo 4.4 per impostare il nome della stazione su PROFINET non corrispondono per il controller Omnicore del nostro robot. Alla fine scopro che da I/O Engineering, dopo aver selezionato PROFINET, posso cliccare sulla scheda Device Catalogue e aggiungere un nome e la label. Aggiungo anche i segnali DI e DO a 64byte. Prima di sovrascrivere la configurazione salvo quella di Lepori (qui c'è un backup). Riaprendo I/O Engineering ritrovo la configurazione salvata e dopo averlo chiuso ritrovo le stesse voci su Configuration|I/O System|PROFINET Network. PROFINET è finalmente espandibile tra gli I/O system.
Provo a fare uno scan della rete PROFINET da I/O Engineering ma non trova il PLC. Riprovo dopo aver impostato LLDP legacy. Rimetto LLDP standard e imposto il nome “omnicore” come compare di default su TIA Portal. Carico SW e HW sul PLC dopo aver corretto l'indirizzo IP del controller. Lo scan da I/O Engineering non va comunque.
Provo a seguire il tutorial tedesco e poi quello spagnolo. In I/O Engineering creo:
- nello slot 1: DO 64 byte (uscite PROFINET dal robot)
- nello slot 2: DI 64 byte (ingressi PROFINET del robot)
In TIA Portal, dopo aver aggiunto dall'apparecchiatura di campo il controller Omincore configurato così:
- nome ominicore
- IP 192.168.0.10
- dalla vista generale dispositivi (espandibile sulla destra) aggiungo due moduli nell'ordine inverso rispetto a robotstudio (le uscite del controller sono ingressi del PLC): DI 64 bytes e DO 64 bytes
Compilo la configurazione hardware e la carico sul PLC. Poi scrivo un programma con un solo segmento dove attivando l'ingresso fisico I0.0 del PLC si attiva l'uscita Q2.0 su PROFINET (l'indirizzo si vede dalla vista generale dei dispositivi associata al controller ominicore in TIA Portal). Dopo aver caricato il programma, se mi collego online col controller e apro la vista I/O System dalla scheda Controllore, vedo l'ingresso digitale PROFINET passare a 1 quando attivo l'ingresso del PLC. Funziona!
Dalla simulazione al robot
Ci sono più modi di caricare un programma sviluppato offline su RobotStudio simulando e eseguendo il progetto su un controller virtuale. Sarebbe bene che il controller virtuale avesse le stesse opzioni e configurazioni di quello reale, altrimenti si avranno comportamenti imprevisti (vedi i problemi nelle configurazioni dei target legati al parametro Arm Angle Reference). Si può salvare il programma su chiavetta USB e caricarlo da FlexPendant ma è più semplice usare un collegamento Ethernet sulla porta MGMT del controller. Andando online su Robotstudio compare il controller reale insieme a quello virtuale; a questo punto, chiedendo l'accesso in scrittura, si può direttamente caricare un programma sul controller.
Una soluzione ancora migliore, ma forse più complicata per il gran numero di opzioni a disposizione, è quella di creare una “relazione” tra i due controller e fare un “transfer” di programmi e dati tra i due controller.
TODO
- usare la contattiera
- pilotare il nastro trasportatore
- scambiare dati non booleani con PROFINET
- progetto con PLC, HMI e robot