diff --git a/docs/approfondimenti.md b/docs/approfondimenti.md new file mode 100644 index 00000000..216e752d --- /dev/null +++ b/docs/approfondimenti.md @@ -0,0 +1,39 @@ +# Approfondimenti Tecnici su PRIMO + +--- + +## Introduzione al Controllo Predittivo (MPC) + +Il **controllo predittivo basato su modello** (Model Predictive Control, MPC) è una tecnica avanzata di controllo che utilizza un modello matematico del sistema per prevedere il comportamento futuro e ottimizzare le azioni di controllo in tempo reale. A differenza dei controlli tradizionali, MPC calcola una sequenza ottimale di comandi considerando vincoli fisici e obiettivi prestazionali, aggiornando continuamente la strategia ad ogni passo temporale. + +Questa metodologia è particolarmente utile in robotica per gestire sistemi complessi con più variabili, limiti operativi e necessità di precisione elevata. + +--- + +## Cos’è ROS2 e perché sarà usato su PRIMO + +**ROS2** (Robot Operating System 2) è un framework open-source per lo sviluppo di software robotico modulare, scalabile e distribuito. Offre strumenti e librerie per la comunicazione tra componenti, gestione dei dati, simulazione, e integrazione di sensori e attuatori. + +Su PRIMO, ROS2 sarà adottato per: + +- Facilitare l’integrazione di sensori e attuatori avanzati +- Abilitare il controllo in retroazione (closed-loop) con feedback in tempo reale +- Supportare lo sviluppo di funzionalità complesse come pianificazione, percezione e interfacce utente +- Consentire una maggiore modularità e interoperabilità con altri sistemi robotici + +--- + +## Cenni sulla Realtà Aumentata Applicata alla Robotica + +La **realtà aumentata** (AR) consiste nell’integrare elementi digitali (grafica, dati, interfacce) direttamente nel campo visivo reale dell’utente. In robotica, l’AR può essere utilizzata per: + +- Visualizzare in tempo reale lo stato del robot e i suoi parametri +- Guidare l’operatore durante la calibrazione o la manutenzione +- Offrire interfacce intuitive per la programmazione e il controllo +- Sovrapporre traiettorie, aree di lavoro e modelli virtuali per migliorare la comprensione spaziale + +L’applicazione di AR su PRIMO punta a rendere più immediata e coinvolgente l’esperienza educativa e operativa. + +--- + +*Questo documento fa parte della documentazione tecnica di PRIMO e contiene approfondimenti sulle tecnologie future e avanzate.* diff --git a/docs/appunti.yml b/docs/appunti.yml new file mode 100644 index 00000000..e46929a3 --- /dev/null +++ b/docs/appunti.yml @@ -0,0 +1,32 @@ +site_name: PRIMO +site_url: https://primo.crearobotics.com +site_description: PRIMO documentation +site_author: CREA Robotics +site_logo: images/logo.png +site_icon: images/favicon.ico +#repo_url: + +nav: + - Home: index.md + - Fondamenti: cos_e_la_robotica.md + - Struttua del robot: struttura_robotica.md + - Componenti: componenti_primo.md + - Controllo: controllo_robot.md + - Programmazione: programmazione.md + - Programmazione Avanzata: programmazione_avanzata.md + - Approfondimenti: approfondimenti.md +#theme: readthedocs + + +theme: + name: material + palette: + scheme: default + primary: cyan + accent: amber + features: + - navigation.tabs + - content.code.copy + icon: + logo: fontawesome/solid/robot + \ No newline at end of file diff --git a/docs/componenti_primo.md b/docs/componenti_primo.md new file mode 100644 index 00000000..8b4ab6ed --- /dev/null +++ b/docs/componenti_primo.md @@ -0,0 +1,67 @@ +# Componenti principali di PRIMO + +PRIMO è un braccio robotico articolato progettato per introdurre alla robotica industriale in modo pratico e accessibile. Ogni componente che lo costituisce ha un ruolo funzionale ben preciso, pensato per simulare il comportamento di veri robot industriali. + +## Struttura generale + +Il robot è composto da sei assi rotazionali, ognuno dei quali permette un movimento controllato. Questi assi sono realizzati attraverso una combinazione di: + +- **Motori passo-passo** +- **Giunti meccanici** +- **Supporti e snodi** +- **Elementi strutturali stampati in 3D** + +Ogni asse introduce un grado di libertà (DoF), permettendo movimenti indipendenti che, combinati, danno vita a una cinematica articolata. + +--- + +## Motori passo-passo + +I motori utilizzati sono chiamati **NEMA 17**. Sono motori in grado di ruotare di piccoli passi precisi (es. 1.8° per passo), rendendoli ideali per la robotica educativa. Non utilizzano sensori di posizione (open-loop), ma possono essere controllati con alta precisione tramite appositi driver. + +### Come contribuiscono + +Ogni motore è responsabile della rotazione di un segmento del braccio robotico. La combinazione di più rotazioni consente al braccio di orientarsi nello spazio. + +--- + +## Giunti rotazionali + +I giunti permettono il movimento relativo tra due parti del braccio. Sono il cuore della struttura articolata e simulano le articolazioni di un braccio umano (es. spalla, gomito, polso). + +### Come contribuiscono + +Senza i giunti, le rotazioni dei motori non avrebbero alcun effetto: è grazie ai giunti che i segmenti del braccio possono muoversi in modo coordinato. + +--- + +## Supporti e snodi + +Gli snodi sono elementi meccanici che collegano tra loro motori, giunti e bracci. Possono contenere cuscinetti per rendere fluido il movimento e garantire stabilità. + +--- + +## Controller e driver + +Il controllo dei motori avviene tramite una scheda centrale, a cui i motori sono collegati. In PRIMO, i driver sono in **open-loop**, ovvero senza retroazione: il sistema invia comandi ai motori ma non verifica se il movimento è stato realmente eseguito. + +### Che cosa permette questa configurazione? + +- Riduzione dei costi +- Maggiore semplicità didattica +- Possibilità di esplorare limiti e potenzialità del controllo senza feedback + +--- + +## In sintesi + +Ogni componente di PRIMO è stato progettato per simulare i concetti fondamentali della robotica industriale: + +| Componente | Funzione | +|-------------------|--------------------------------------------| +| Motore passo-passo| Genera il movimento rotazionale | +| Giunto | Trasmette e permette la rotazione | +| Supporto/snodo | Collega e guida i movimenti | +| Controller | Invia comandi ai motori (open-loop) | + +> Lo scopo non è solo vedere PRIMO muoversi, ma capire **come e perché** ogni parte contribuisce al movimento complessivo del robot. diff --git a/docs/controllo_robot.md b/docs/controllo_robot.md new file mode 100644 index 00000000..a002d357 --- /dev/null +++ b/docs/controllo_robot.md @@ -0,0 +1,35 @@ +# Controllo del Robot PRIMO + +## Differenza tra controllo Open-Loop e Closed-Loop + +Il **controllo open-loop** è un metodo in cui il sistema esegue comandi senza ricevere alcun feedback sulla posizione o lo stato reale degli attuatori. Il controllo si basa esclusivamente sull’invio di istruzioni, presupponendo che l’azione venga eseguita correttamente. Questo tipo di controllo è semplice e meno costoso, ma può essere soggetto a errori non rilevati come perdite di passi o scostamenti di posizione. + +Il **controllo closed-loop** utilizza un sistema di retroazione che misura continuamente la posizione o lo stato effettivo dell’attuatore tramite sensori. Il sistema confronta il valore misurato con il valore desiderato e apporta correzioni per minimizzare gli errori, garantendo una maggiore precisione e affidabilità del movimento. + +--- + +## Perché PRIMO è Open-Loop + +PRIMO utilizza un controllo open-loop perché impiega motori passo-passo senza sensori di retroazione. Questa scelta permette di mantenere il progetto semplice, economico e facilmente accessibile a chi si avvicina alla robotica educativa. La semplicità hardware e software facilita l’apprendimento dei principi base del controllo dei robot senza la complessità aggiuntiva del feedback. + +Inoltre, per applicazioni didattiche con carichi leggeri e velocità moderate, il controllo open-loop è sufficiente per ottenere movimenti precisi e affidabili. + +--- + +## Come Avviene il Movimento dei Motori Passo-Passo + +I motori passo-passo sono motori elettrici che si muovono a scatti discreti chiamati “passi”. Ogni impulso elettrico ricevuto fa ruotare l’albero del motore di un angolo fisso. La posizione è quindi controllata contando il numero di impulsi inviati al motore. + +Il movimento complessivo del motore è ottenuto sommando questi passi, permettendo un controllo accurato della posizione senza necessità di sensori esterni. + +--- + +## Come PRIMO Riceve ed Esegue i Comandi di Movimento + +Il sistema di controllo interpreta le istruzioni di movimento e le traduce in impulsi elettrici inviati ai motori passo-passo. Questi impulsi indicano quanti passi ciascun motore deve compiere e con quale velocità. + +L’esecuzione avviene in open-loop: si presume che il motore compia esattamente il numero di passi comandati senza una verifica attiva della posizione raggiunta. Questo metodo è efficace in condizioni controllate e permette una programmazione semplice e diretta del movimento del robot. + +--- + +*Questo documento fa parte della documentazione tecnica del braccio robotico educativo PRIMO.* diff --git a/docs/cos_e_la_robotica.md b/docs/cos_e_la_robotica.md new file mode 100644 index 00000000..6511181e --- /dev/null +++ b/docs/cos_e_la_robotica.md @@ -0,0 +1,68 @@ +# Cos’è la robotica? + +La robotica è una disciplina che unisce **meccanica**, **elettronica** e **informatica** per progettare, costruire e controllare macchine capaci di compiere azioni in modo autonomo o semi-autonomo. +Ma cosa si intende esattamente per **robot**? E come si inserisce nella più ampia categoria dell’automazione? + +--- + +## Cos'è un robot industriale + +Un **robot industriale** è una macchina programmabile, progettata per **eseguire movimenti e compiti ripetitivi con precisione, velocità e affidabilità**. +I robot industriali vengono spesso utilizzati per: +- Spostare oggetti (pick & place) +- Saldare componenti +- Assemblare parti +- Verniciare superfici +- Lavorare materiali + +La definizione ufficiale secondo ISO 8373 è: +> *"Manipolatore multifunzionale, riprogrammabile, controllato automaticamente, con tre o più assi, che può essere fisso o mobile per l’uso in applicazioni di automazione industriale."* + +--- + +## Automazione ≠ Robotica + +Molti pensano che **automazione** e **robotica** siano sinonimi. Non è così! + +| Automazione | Robotica | +|-----------------------------------|-------------------------------------------| +| Sistema che esegue una sequenza fissa di operazioni | Sistema programmabile e riconfigurabile | +| Spesso rigido e specifico per un compito | Flessibile e adattabile a diversi compiti | +| Esempio: una macchina per imbottigliare | Esempio: un braccio robotico che confeziona prodotti diversi | + +In breve, **l'automazione esegue**, la **robotica decide come eseguire**. + +--- + +## Dove si usano i robot oggi + +I robot non sono solo nelle fabbriche! +Ecco alcuni settori dove i robot sono sempre più presenti: + +- **Industria automobilistica**: per saldare, assemblare, verniciare +- **Elettronica**: per il montaggio di circuiti stampati +- **Logistica**: per la movimentazione automatica nei magazzini +- **Sanità**: con robot per chirurgia assistita o riabilitazione +- **Agricoltura**: per la raccolta automatizzata o l’analisi del suolo +- **Servizi**: come camerieri robot, assistenti o pulitori automatici + +--- + +## Cos'è un manipolatore articolato + +Un **manipolatore articolato** è una tipologia di robot composta da più segmenti (bracci) collegati da **giunti rotanti**, simile a un braccio umano. + +Ogni giunto fornisce un **grado di libertà** (DOF, dall’inglese *Degree of Freedom*), ovvero la possibilità di ruotare o muoversi in una certa direzione. +Un robot con **6 DOF** può: +1. Spostarsi avanti/indietro (X) +2. Spostarsi a sinistra/destra (Y) +3. Spostarsi in alto/basso (Z) +4. Ruotare intorno all’asse X (roll) +5. Ruotare intorno all’asse Y (pitch) +6. Ruotare intorno all’asse Z (yaw) + +Questo lo rende capace di **raggiungere qualsiasi punto nello spazio** con qualunque orientamento, proprio come farebbe un braccio umano per afferrare un oggetto. + +--- + +Nella prossima sezione scoprirai com’è fatto un robot come PRIMO, e quali sono i suoi assi e componenti principali! diff --git a/docs/icons/robot.svg b/docs/icons/robot.svg new file mode 100644 index 00000000..eb9a675d --- /dev/null +++ b/docs/icons/robot.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/docs/img/primo-cover.png b/docs/img/primo-cover.png new file mode 100644 index 00000000..d3628f63 Binary files /dev/null and b/docs/img/primo-cover.png differ diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..b334205b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,54 @@ +# Benvenuto in PRIMO: il tuo primo passo nella robotica + +Benvenuto! Questo sito è dedicato a **PRIMO**, un braccio robotico a 6 assi open‑source progettato per farti scoprire il mondo della robotica industriale. Qui troverai tutte le risorse necessarie per imparare i concetti fondamentali della robotica e applicarli concretamente attraverso l’interazione con un robot reale. + +![image](./img/primo-cover.png) + +--- + +## Che cos’è PRIMO + +PRIMO è un manipolatore articolato progettato per la didattica. È stampabile in 3D, programmabile, completamente open‑source, e nasce con l'obiettivo di **rendere accessibile l'apprendimento della robotica** in contesti scolastici e formativi. + +È pensato per aiutarti a: +- Comprendere come funziona un robot industriale +- Imparare i principi di base del controllo del movimento +- Mettere in pratica concetti teorici con un sistema fisico reale + +--- + +## Cosa imparerai attraverso questo sito + +1. **Cos’è un robot** e come si classificano i diversi tipi di manipolatori +2. **Concetti chiave** come gradi di libertà, cinematica diretta e inversa +3. **Struttura di un robot articolato** e come ogni parte contribuisce al movimento +4. **Principi di controllo** e programmazione base +5. **Esercizi pratici**, simulazioni e movimenti reali +6. **Approfondimenti** su tematiche moderne della robotica + +--- + +## Perché è importante studiare la robotica oggi + +La robotica è ovunque: dalle fabbriche ai magazzini automatizzati, dai robot chirurgici ai bracci meccanici nei laboratori. Comprendere come funziona un robot ti permette di: +- **Sviluppare competenze trasversali** tra meccanica, elettronica e programmazione +- **Affrontare problemi reali** con approccio ingegneristico +- **Prepararti alle professioni del futuro**, dove l'automazione sarà sempre più centrale + +Studiare robotica non significa solo imparare a costruire un robot, ma soprattutto a pensare in modo sistemico, logico e creativo. + +--- + +## Come usare questo sito passo dopo passo + +1. **Parti dalla teoria**: esplora i concetti fondamentali della robotica +2. **Scopri PRIMO**: analizza come è costruito e quali sono le sue funzionalità +3. **Prova a programmare**: inizia con esempi guidati +4. **Sperimenta**: esegui esercizi pratici per applicare quanto appreso +5. **Approfondisci**: se sei curioso, troverai spunti per esplorare tematiche più avanzate +6. **Condividi e contribuisci**: PRIMO è un progetto aperto, nato per crescere con la comunità + +--- + +Ti auguriamo buon apprendimento e buon divertimento con PRIMO! +Comincia dal primo capitolo: _"Cos’è la robotica"_. diff --git a/docs/programmazione.md b/docs/programmazione.md new file mode 100644 index 00000000..f42b51ca --- /dev/null +++ b/docs/programmazione.md @@ -0,0 +1,61 @@ +# Programmazione Base del Robot PRIMO + +--- + +## Cos'è il G-code + +Il **G-code** è un linguaggio di programmazione standard utilizzato per controllare macchine CNC, stampanti 3D e robot industriali. Consiste in una serie di comandi testuali che indicano movimenti, velocità, posizioni e altre azioni da eseguire. Ogni comando in G-code specifica istruzioni precise come spostare un asse, cambiare velocità o attivare/disattivare un utensile. + +Utilizzando il G-code è possibile definire traiettorie e sequenze di movimento per il robot in modo semplice e flessibile. + +--- + +## Come si controlla manualmente PRIMO + +Il controllo manuale di PRIMO permette di spostare singolarmente gli assi del robot per operazioni di prova, calibrazione o posizionamento preciso. Questo controllo diretto viene effettuato inviando comandi che indicano lo spostamento di un singolo asse di una certa quantità o angolo. + +Attraverso un'interfaccia di controllo, è possibile scegliere quale asse muovere e definire il numero di passi o la distanza da percorrere, controllando così manualmente la posizione del robot. + +--- + +## Come si possono dare comandi da una console o interfaccia web + +Il robot PRIMO può ricevere comandi da una console di controllo o da un’interfaccia web dedicata. Questi strumenti consentono di inviare comandi testuali (come quelli in G-code) direttamente al sistema di controllo, visualizzare lo stato del robot e monitorare l'esecuzione dei movimenti. + +La console e l’interfaccia web permettono anche di eseguire macro, caricare file di programma e inviare istruzioni di movimento in tempo reale, facilitando così l’interazione con il robot. + +--- + +## Esempi di G-code semplici per muovere gli assi + +Ecco alcuni esempi base di comandi per muovere gli assi del robot: + +- **Spostamento rotativo su un asse (esempio: asse B):** + +G1 B10 F1000 + +Questo comando sposta l'asse B a 10 gradi con una velocità di 1000 gradi/minuto. + +- **Spostamento contemporaneo di più assi (esempio: X e Y):** + +G1 X20 Y15 F800 + +Sposta gli assi X e Y rispettivamente a 20 e 15 gradi con velocità 800. + +- **Ritorno alla posizione zero (home):** + +G28 + +Comando per riportare tutti gli assi alla posizione di origine. + +- **Spostamento relativo (rispetto alla posizione corrente):** + +G91 +G1 X5 Y-3 F500 +G90 + +Qui il robot si sposta di +5 sull'asse X e -3 sull'asse Y rispetto alla posizione attuale. `G91` abilita il modo di spostamento relativo, mentre `G90` lo disabilita tornando al modo assoluto. + +--- + +*Questa guida fa parte della documentazione tecnica del braccio robotico educativo PRIMO.* diff --git a/docs/programmazione_avanzata.md b/docs/programmazione_avanzata.md new file mode 100644 index 00000000..2b22d900 --- /dev/null +++ b/docs/programmazione_avanzata.md @@ -0,0 +1,41 @@ +# Programmazione Avanzata del Robot PRIMO + +--- + +## Cos’è RoboDK + +**RoboDK** è un software di simulazione e programmazione offline per robot industriali. Permette di creare, simulare e ottimizzare percorsi di movimento in un ambiente virtuale prima di eseguirli sul robot reale. RoboDK supporta un'ampia varietà di robot e consente di generare codici di controllo personalizzati tramite post-processor, facilitando l’integrazione con sistemi hardware diversi. + +--- + +## Come si importa un modello PRIMO + +Per lavorare con PRIMO in RoboDK, è necessario importare il modello 3D del braccio robotico. Questo modello include la struttura meccanica e i riferimenti cinematici degli assi. + +L’importazione avviene tipicamente attraverso un file CAD o un file di definizione robot compatibile con RoboDK (ad esempio file `.stp`, `.igs` o un modello RoboDK `.rdk`). Il modello viene caricato nell’ambiente di simulazione, permettendo di visualizzare e manipolare il robot in 3D. + +--- + +## Come si simula un movimento e si esporta il codice + +Una volta importato il modello PRIMO, si possono definire traiettorie e movimenti per il robot all’interno di RoboDK. Attraverso l’interfaccia grafica o utilizzando script, è possibile: + +- Creare percorsi con punti intermedi +- Definire velocità e accelerazioni +- Simulare l’esecuzione della traiettoria per verificarne la correttezza e assenza di collisioni + +Terminata la simulazione, RoboDK consente di esportare il codice di controllo specifico per PRIMO, adattato al suo firmware e hardware tramite un post-processor personalizzato. Questo codice è pronto per essere caricato e eseguito sul robot reale. + +--- + +## Come funziona il post-processor personalizzato per PRIMO + +Il **post-processor** è un componente software che traduce i movimenti e le istruzioni generati in RoboDK in un linguaggio di controllo comprensibile dal robot PRIMO. + +Nel caso di PRIMO, il post-processor personalizzato converte le traiettorie in comandi compatibili con il controllo open-loop basato su motori passo-passo e invia istruzioni in forma di comandi passo-passo o G-code adattati al firmware usato. + +Questo permette di garantire che il codice esportato sia ottimizzato per il funzionamento di PRIMO, rispettando i limiti meccanici, i parametri dei motori e la modalità di controllo open-loop. + +--- + +*Questo documento fa parte della documentazione tecnica avanzata del braccio robotico educativo PRIMO.* diff --git a/docs/struttura_robotica.md b/docs/struttura_robotica.md new file mode 100644 index 00000000..04532f44 --- /dev/null +++ b/docs/struttura_robotica.md @@ -0,0 +1,45 @@ +# Struttura Robotica + +## Cosa sono gli assi e i gradi di libertà + +Un **robot** si muove nello spazio grazie a una serie di **assi**, cioè snodi o giunti che gli permettono di ruotare o traslare. Ogni asse aggiunge un **grado di libertà (DoF, Degree of Freedom)**, cioè una direzione possibile di movimento. + +Un corpo nello spazio può avere fino a **6 gradi di libertà**: + +- 3 di **traslazione**: avanti/indietro, sinistra/destra, su/giù. +- 3 di **rotazione**: rollio, beccheggio, imbardata. + +Un robot con **6 assi** può quindi raggiungere qualsiasi posizione e orientamento nello spazio tridimensionale, proprio come il braccio di un essere umano. + +--- + +## Cinematica diretta e cinematica inversa + +La **cinematica** studia il movimento dei corpi, senza preoccuparsi delle forze. + +- **Cinematica diretta**: si conoscono gli angoli dei giunti → si calcola dove si trova l’estremità del braccio (end-effector). +- **Cinematica inversa**: si conosce la posizione desiderata dell’estremità → si calcolano gli angoli da dare ai giunti. + +La cinematica inversa è particolarmente importante: ci permette di dire al robot *"Vai lì"* e il robot calcola come muoversi. + +--- + +## Che struttura ha PRIMO + +PRIMO è un **braccio robotico a 6 assi**, ovvero un **manipolatore articolato** che ricorda il braccio umano. È composto da: + +1. **Base** – ruota il braccio orizzontalmente +2. **Spalla** – alza e abbassa il braccio +3. **Gomito** – estende o ritrae il braccio +4. **Polso 1** – piega verso l'alto o il basso +5. **Polso 2** – ruota lateralmente +6. **Polso 3** – ruota sull'asse dell'end-effector + +Questa struttura è molto diffusa nell'industria, perché permette di raggiungere molti punti nello spazio con grande flessibilità. + +--- + +## Cinematica a catena aperta (visiva) + +PRIMO ha una **struttura a catena aperta**: ogni giunto è collegato al successivo in sequenza, come i segmenti di un braccio umano. + diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..130be827 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,32 @@ +site_name: PRIMO +site_url: https://primo.crearobotics.com +site_description: PRIMO documentation +site_author: CREA Robotics +site_logo: images/logo.png +site_icon: images/favicon.ico +#repo_url: + +nav: + - Home: index.md + - Fondamenti: cos_e_la_robotica.md + - Struttua: struttura_robotica.md + - Componenti: componenti_primo.md + - Controllo: controllo_robot.md + - Programmazione: programmazione.md + - Programmazione Avanzata: programmazione_avanzata.md + - Approfondimenti: approfondimenti.md +#theme: readthedocs + + +theme: + name: material + palette: + scheme: default + primary: orange + accent: amber + features: + - navigation.tabs + - content.code.copy + icon: + logo: fontawesome/solid/robot + \ No newline at end of file