ROBOCUP JR ITALIA 2016 BARI 27-30 Aprile Report di documentazione Squadra ST-CASTROROBOT Istituto Tecnico Industriale Statale “Enrico Fermi” Castrovillari (CS) ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 1. DATI GENERALI Istituto di provenienza Tipologia Istituto Tecnico Industriale Statale Nome Enrico Fermi Indirizzo Via Piero della Francesca, 87012 Città Castrovillari (Cosenza) Telefono 0981 480171 Sito Web www.itiscastrovillari.gov.it Componenti della squadra Nome Cognome Valentino Carriuolo Francesco Cersosimo Alessio Confessore Età 18 18 16 Classe 5°B Elettr 5°B Eletr 3°B Eletr Sesso M M M Fulvio D’Atri 16 3°B Eletr M Antonio Francesco Francesco Pio Luigi Mario Carmine Roberto Fazio Fazio Gaeta Gerardi Halabi Iannicelli Tamburi 18 18 18 18 18 18 18 5°A Elettr 5°A Elettr 5°B Elettr 5°A Elettr 5°A Elettr 5° A Elettr 5°B Elettr M M M M M M M Docenti referenti Nome Eleonora Vittorio Gennaro Cognome Converti Del Colle Siciliano I.T.I.S. “E. Fermi” – Castrovillari (CS) 2 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 2. CONTESTO E MOTIVAZIONE Quando i nostri professori ci hanno proposto di partecipare a questa gara abbiamo accolto con entusiasmo la possibilità concreta di mettere in pratica le nostre conoscenze acquisite nel corso dei nostri studi sulla programmazione dei microcontrollori e sui processi di automazione. Subito ci siamo resi conto della complessità del progetto , le difficoltà sarebbero state tante e si sarebbero manifestate in tutte le fasi della realizzazione. Ma la nostra propensione a lavorare in gruppo e l’incoraggiamento dei nostri professori ci hanno consentito di andare avanti. Poiché è la prima volta che il nostro Istituto partecipa a questo tipo di competizione siamo contenti ed orgogliosi di aprire la strada e dare un esempio per le future partecipazioni Abbiamo scelto la gara rescue perché l’idea di realizzare un robot in grado di ricercare dispersi e salvarli ci è sembrata stimolante ed utile. Abbiamo iniziato a lavorare dal mese di Gennaio ma con ritmi più serrati soltanto negli ultimi due mesi. I compiti sono stati ripartiti a seconda delle attitudini e competenze di ognuno di noi; alcuni si sono occupati della costruzione pensata condotta in maniera artigianale e non precostituita; alcuni pezzi (come la benna per la raccolta delle biglie) sono stati progettati e costruiti nei nostri laboratori tramite l’utilizzo di materiali di facile reperibilità. I.T.I.S. “E. Fermi” – Castrovillari (CS) 3 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione La costruzione del robot ,che ci ha impegnato sia nelle ore mattutine che in quelle pomeridiane, non ci ha tolto tempo allo studio, ma ci ha svelato l’efficacia dell’ “ imparare facendo”: per risolvere i problemi che si presentavano di volta in volta eravamo costretti a ricercare le soluzioni migliori “sul campo”. L’utilizzo di libri ,manuali e di internet si è rivelato fondamentale perché ci ha consentito di ricercare i componenti più adatti alle nostre esigenze. Purtroppo non abbiamo avuto la possibilità di installare sul robot determinati dispositivi come ad esempio i servomotori a rotazione continua per via della reperibilità non immediata. Pur non avendo ottenuto risultati pienamente soddisfacenti siamo comunque contenti del lavoro svolto e di aver condotto questa esperienza che ci ha in ogni caso arricchito in termini di conoscenze e competenze. I.T.I.S. “E. Fermi” – Castrovillari (CS) 4 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 3. NOME E STRUTTURA DEL ROBOT Il nome scelto per il nostro robot “Castrorobot” è identificativo della nostra città di provenienza Castrovillari. Ci è sembrato doveroso il richiamo alle radici storiche di “Castrum Villarum”,”fortezza delle ville”, l’antico insediamento romano sulle cui basi è sorta la nostra ridente cittadina ai piedi del monte Pollino. Con questo nome il nostro robot porta con sé il passato, il presente ed il futuro della nostra terra in un connubio perfetto fra antichità e modernità. Castrovillari I.T.I.S. “E. Fermi” – Castrovillari (CS) 5 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Screenschoot del video-spot di orientamento del nostro Istituto con robot. Il video è stato realizzato da noi studenti con il programma di animazione Muvizu I.T.I.S. “E. Fermi” – Castrovillari (CS) 6 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione La struttura del robot è illustrata nella seguente figura: Fig.1 - Schema a blocchi del robot L'unita di controllo del robot è una scheda Arduino Mega, sulla quale è caricato il programma; la scheda interagisce con l'ambiente tramite i sensori che inviano informazioni al programma, il quale controlla la velocità e il verso di rotazione dei motori. I servomotori montati ai lati della pala consentono di sollevarla e abbassarla a seconda delle esigenze. I due sensori ultrasuoni permettono al robot di rilevare I.T.I.S. “E. Fermi” – Castrovillari (CS) 7 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione la presenza di ostacoli sul percorso e delle vittime nell’area libera. I tre sensori infrarossi riflettenti misurano il livello di luminosità della pista e consentono al robot di individuare la linea nera da seguire. I.T.I.S. “E. Fermi” – Castrovillari (CS) 8 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 4. MECCANICA L’hardware e la meccanica del nostro robot sono disposti su due telai prefabbricati sovrapposti tra loro e separati da opportuni distanziatori. Nella parte superiore del telaio è alloggiata la scheda di Arduino con la relativa “Motor shield L298” che funziona da interfaccia fra il microcontrollore ed i motori (figure 2-3). Fig.2 - Dual stepper controller motor Fig.3 - Schema elettrico I.T.I.S. “E. Fermi” – Castrovillari (CS) 9 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Inoltre è presente un primo sensore ultrasuoni per la rilevazione degli ostacoli (descritto dettagliatamente nel capitolo 6 “SENSORI”). Sempre sul medesimo telaio è stata installata la benna atta al salvataggio delle vittime (figure 4-5). Fig.4: Benna per salvataggio Fig.5:Montaggio della benna sul robot I.T.I.S. “E. Fermi” – Castrovillari (CS) 10 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione La benna utilizzata, mostrata nelle figure precedenti, è stata interamente costruita da noi alunni. Come si può notare, è formata da diversi fogli di plexiglas, congiunti tra loro grazie ad una colla ad alta resistenza e tagliati con un seghetto a mano. Per garantire il suo controllo sono stati anche utilizzati quattro servo motori del tipo SG90 (descritti successivamente nel capitolo 7:”Attuatori”): due sono utilizzati per controllare il movimento della benna in modo da garantire anche la stabilità di quest’ultima; altri due sono stati montanti sulla parte superiore del telaio, al fine di movimentare i bracci. Come si può notare dalle foto, il fissaggio dei due motori collocati sul telaio superiore è stato realizzato mediante due fermi metallici su una basetta millefori di bachelite adattata sul telaio da noi alunni e tagliata con un seghetto e smussata con una smerigliatrice. Nel telaio inferiore è stato collocato un altro sensore ad ultrasuoni dello stesso tipo di quello nominato in precedenza. Inoltre è stata montata anche una batteria di alimentazione a 12V utilizzata per alimentare la Motor Shield e, di conseguenza, i motori. Sono state utilizzate anche due batterie da 9V collegate in parallelo per l’alimentazione della scheda Arduino. Nella zona anteriore del secondo telaio sono stati montati due motori in corrente continua con tensione di lavoro da 3 a 24 volt e rapporto di riduzione di 370 connessi alla rispettive ruote (Descritti dettagliatamente nel capitolo 7 “Attuatori”). Per I.T.I.S. “E. Fermi” – Castrovillari (CS) 11 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione garantire la stabilità del nostro robot, abbiamo preferito mettere nella parte posteriore del telaio un ruotino bulbo oculare con palla rotonda a sfera, come mostrato in figura 6, in alternativa al ruotino di figura 7 Fig.6:ruotino bulbo oculare I.T.I.S. “E. Fermi” – Castrovillari (CS) 12 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Fig.7:ruotino posteriore Infine, sempre nella parte inferiore del secondo telaio, è stata collegata la scheda dei sensori “Line Follower”. Attualmente la configurazione dei sensori è quella mostrata in figura 8, ma si prevede l’aggiunta di due sensori per l’individuazione del colore come mostra la figura 9. I.T.I.S. “E. Fermi” – Castrovillari (CS) 13 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Fig.8:Configurazione scheda sensori n°1. Come si può notare nella figura in alto vi sono sei sensori: i 4 sensori “MH-Sensor” sono di tipo analogico-digitale e servono per effettuare una correzione della linea; i due sensori esterni “KEYSIR-01” sono di tipo digitale e servono per le curve strette con angolo compreso tra 45° e 90°. I.T.I.S. “E. Fermi” – Castrovillari (CS) 14 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Fig.9:Configurazione scheda sensori n°2. I.T.I.S. “E. Fermi” – Castrovillari (CS) 15 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 5. UNITÀ DI CONTROLLO L’unità di controllo adottata è la scheda Arduino Mega 2560, che fa uso di un ATmega2560 ed è un’evoluzione dell’Arduino Mega. La sua architettura si basa su un circuito stampato che integra un microcontrollore con pin connessi alle porte I/O, un regolatore di tensione ed un’interfaccia USB che permette la comunicazione con il computer. A questo Hardware viene affiancato un ambiente di sviluppo integrato (IDE)multipiattaforma( per Linux,Apple,Macintosh e Windows). Fig.10:Scheda Arduino Mega 2560 La scheda Arduino Mega 2560 Rev3 è una scheda elettronica basata sul microcontrollore Atmega2560. Dispone di 54 ingressi/uscite digitali ), 16 ingressi analogici, 4 porte seriali hardware UART, un oscillatore a 16 MHz, una connessione USB, un jack I.T.I.S. “E. Fermi” – Castrovillari (CS) 16 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione di alimentazione, un header ICSP e un pulsante di reset. La scheda riceve i dati dai sensori ed , in base a questi, ordina ai motori di eseguire determinate azioni. Specifiche tecniche Microcontrollore: ATmega2560 Tensione di funzionamento: 5V Tensioni in ingresso raccomandate: 7-12V Massima tensione in entrata: 6-20V Numero di ingressi/uscite digitali: 54 (di cui 14 utilizzabili come uscite PWM) Numero di ingressi analogici: 16 Corrente supportata per i pin di ingresso e uscita:40 mA Corrente supportata per il pin da 3.3V: 50 mA Memoria Flash: 256 KB (8 KB utilizzati per il bootloader) SRAM: 8 KB EEPROM: 4 KB Frequenza di clock: 16 Mhz I.T.I.S. “E. Fermi” – Castrovillari (CS) 17 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 6. SENSORI Seguono i diversi tipi di sensori utilizzati, con le relative immagini e i relativi schemi elettrici. 6.1. Ultrasonic Ranging Module HC – SR04 Fig.11:Sensore ultrasuoni I sensori ultrasuoni sono costituiti da due parti principali: l’emettitore e il ricevitore consentono di rilevare la presenza di corpi solidi e la loro distanza servendosi di impulsi sonori ad alta frequenza. Il robot si avvale di due sensori che gestisce tramite un algoritmo: l’oggetto viene identificato come vittima quando vi è una differenza tra le rivelazioni del sensore alto rispetto a quello basso ; l’assenza di questa differenza permette al robot di riconoscere l’ ostacolo posto sul percorso rispetto alle vittime. I.T.I.S. “E. Fermi” – Castrovillari (CS) 18 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Specifiche tecniche Tensione di lavoro: DC 5 V Corrente di lavoro : 15mA Frequenza di lavoro : 40Hz Raggio d’azione Max : 4m Raggio d’azione Min : 2cm Angolo di misura : 15 gradi Trigger Input Signal 10uS TTL pulse Dimensioni : 45*20*15mm 6.2. Sensore ottico riflettete con transistor d’uscita Tali sensori (la cui foto è mostrata successivamente), sono stati utilizzati principalmente per rilevare i diversi colori che compongono il circuito di gara. Vengono tarati impostando diverse bande di valori che identificano diversi colori in modo da poter nitidamente distinguere il nero, che compone la linea guida del percorso, il bianco, che compone la maggior parte del circuito, ed in particolare il verde, presente nelle intersezioni (incroci) e posto in corrispondenza della diramazione esatta che il robot dovrà percorrere. Tali sensori risultano efficaci per le capacità che essi offrono, ma nel nostro caso è stato riscontrato un problema riguardante l’errata identificazione dei colori, dovuto anche ai problemi che la luce esterna fornisce. I.T.I.S. “E. Fermi” – Castrovillari (CS) 19 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Fig.12:Sensori ottici riflettenti Di seguito si riporta lo schema elettrico e le caratteristiche principali del sensore ottico riflettente. Tale sensore è formato da un dispositivo emettitore ad infrarossi e da un dispositivo ricevitore (fototransistor). I.T.I.S. “E. Fermi” – Castrovillari (CS) 20 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Fig.13:Sensore ottico con fototransistore 6.3. Sensore Infrarossi fotoelettrico riflettente Il sensore infrarossi rileva i cambiamenti di luminosità sulla pista e consente al robot di seguire la linea di percorso nera. Fig.14:Sensore infrarossi fotoelettrico riflettente I.T.I.S. “E. Fermi” – Castrovillari (CS) 21 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Specifiche Tecniche -Canale output : 1 -Tensione di lavoro : 3.3-5V -Raggio D’azione : 1-8mm -Distanza Focale : 2,5mm -Peso netto : 3g 6.4. Modulo di Riflessione Infrarossi I due moduli di riflessione sono utilizzati dal robot nel caso in cui quest'ultimo perda la linea di percorso e possa tornare a seguirla. Fig.15 - Modulo di riflessione infrarossi Specifiche Tecniche -Tensione di lavoro : DC 3V ~~ 5.5 - Tensione di esercizio consigliata : 5V -Distanza di rilevamento : 1mm ~ 8mm -Lunghezza focale : 2.5mm - Lunghezza : 32mm ~ 37 mm -Larghezza : 7.5mm - Spessore : 5mm I.T.I.S. “E. Fermi” – Castrovillari (CS) 22 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 7. ATTUATORI Tra gli attuatori vi sono i due motori in corrente continua utilizzati per far muovere il robot e i servo motori utilizzati per la pala. In seguito tali componenti vengono descritti nel dettaglio. 7.1. Servomotori a Rotazione Continua Le caratteristiche di un servomotore a rotazione continua sono: -Rotazione Continua Bidirezionale -Risposta Lineare tra 0 e 50 RPM -Possibile Pilotaggio tramite PWM per generare rapidamente delle rampe -Il Servo a Rotazione Continua della Parallax è controllato da un impulso, di ampiezza variabile, in cui il senso e la velocità di rotazione dell’albero sono determinate dalla durata dell’impulso. Per ottenere rotazioni regolari , il Servo, richiede di una pausa di 20 ms tra gli impulsi. Appena la durata dell’impulso decresce da 1,5ms il servomotore ruoterà in senso orario. I.T.I.S. “E. Fermi” – Castrovillari (CS) 23 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione Fig.16:Servomotore a rotazione continua 7.2. Micro Servo SG90 Il robot comanda la pala con l’ausilio di 4 servomotori: Specifiche Tecniche - Velocità di funzionamento: 0,12 secondi / 60 gradi (4.8V senza carico) - Range di temperatura: da -30° a +60° C (-22 ~ 140 gradi Fahrenheit) - Coppia di stallo: 1.2kg / 42,3 once @ 4.8V 1,6 kg / 56,4 once @ 6.0V -V oltaggio di imput : 3 - 7.2v - Peso del prodotto : 9g - Peso del pacchetto : 0.225 kg - Dimensioni del prodotto (l x w x h) : 29 x 3.5 x 1.5 cm I.T.I.S. “E. Fermi” – Castrovillari (CS) 24 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione - Dimensioni del pacchetto (l x w x h) : 10 x 5 x 2 cm Fig.17: Micro Servo SG90 7.3. Motore in corrente continua Il motore utilizzato per il movimento del robot presenta una tensione di lavoro tra 3V e 24V e rapporto di riduzione di 370, peso:88g. Fig.18.:Motore in corrente continua I.T.I.S. “E. Fermi” – Castrovillari (CS) 25 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 8. AMBIENTE DI SVILUPPO L'ambiente di sviluppo integrato (IDE) di Arduino è un'applicazione multipiattaforma scritta in Java, ed è derivata dall'IDE creato per il linguaggio di programmazione Processing e per il progetto Wiring. È concepita per iniziare alla programmazione artisti e altri neofiti, che siano a digiuno di pratica nello sviluppo di software. Per permettere la stesura del codice sorgente, l'IDE include un editore di testo dotato inoltre di alcune particolarità, come il syntax highlighting, il controllo delle parentesi, e l'indentazione automatica. L'editor è inoltre in grado di compilare e lanciare il programma eseguibile in una sola passata e con un solo click. In genere non vi è bisogno di creare dei Makefile o far girare programmi dalla riga di comando. L’ambiente di sviluppo integrato di Arduino è fornito di una libreria software C/C++ chiamata “Wiring” (dall’omonimo progetto Wiring): la disponibilità della libreria rende molto più semplice implementare via software le comuni operazioni di input/output. I programmi di Arduino sono scritti in C/C++, ma per potere creare un file eseguibile, non è richiesto di scrivere un programma in C, ma solo di definire due funzioni: setup () -funzione invocata una sola volta all’inizio di un programma che può essere utilizzata per i settaggi I.T.I.S. “E. Fermi” – Castrovillari (CS) 26 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione iniziali; loop() -funzione chiamata ripetutamente, la cui esecuzione si interrompe solo con lo spegnimento della scheda. Di seguito un esempio dell’IDE di Arduino I.T.I.S. “E. Fermi” – Castrovillari (CS) 27 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 9. IL PROGRAMMA SOFTWARE Il programma, dopo la classica dichiarazione delle variabili, è suddiviso in setup(), la parte iniziale del programma che viene eseguita una sola volta, e in loop(), la parte che viene ripetuta ininterrottamente. All’interno di queste vengono richiamate varie routine che svolgono azioni precise (taratura dei sensori, misura della distanza, settaggi della velocità e direzione dei motori, etc.). Si tratta di una strategia induttiva che si rifà alla metodologia “bottom-up” tipica della programmazione ad oggetti: si affronta il problema preoccupandosi prima dei dettagli più semplici, fino ad arrivare al modello più complesso. Il principio di riusabilità del codice è uno degli scopi di questo metodo che si può definire opposto a quello del “top-down”. Con quest’ultimo si affronta il problema osservandolo più in generale e poi rifinendo ogni sua parte. I moderni approcci della metodologia software comunemente combinano sia la tecnica “top-down” sia quella “bottom-up”. Benchè l’analisi e la comprensione del sistema completo sia tipicamente considerata necessaria per una buona progettazione ( e quindi tramite l’approccio “top-down”), nella maggior parte dei progetti software si cerca di fare uso di codice già esistente ad alcuni livelli (tendenza “bottom-up). Di seguito le immagini di alcune sezioni del I.T.I.S. “E. Fermi” – Castrovillari (CS) 28 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione programma usato: I.T.I.S. “E. Fermi” – Castrovillari (CS) 29 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione 10. ALIMENTAZIONE Il robot è alimentato da una batteria da 6 V e 4Ah,per ciò che riguarda la scheda Arduino ed i servomotori della benna( come quella in figura 20 )e da una batteria da 12 V che alimenta la scheda shield ed i motori. I.T.I.S. “E. Fermi” – Castrovillari (CS) 30 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione APPENDICE - Cavi I cavi jumper, del tipo quelli della figura precedente, sono stati utilizzati per collegare i diversi elementi che compongono il robot con la scheda arduino mega, o meglio con l’interfaccia di tale scheda. Come noto, i cavi sono di diverso colore, in modo da poter individuare facilmente a quale morsetto sono collegati entrambi i terminali, evitando cosi eventuali collegamenti errati che potrebbero danneggiare la scheda. I.T.I.S. “E. Fermi” – Castrovillari (CS) 31 ROBOCUP JR 2016 – Bari 27 – 30 Aprile Report di documentazione INDICE 1. DATI GENERALI................................................................. 2 2. CONTESTO E MOTIVAZIONE .......................................... 3 3. NOME E STRUTTURA DEL ROBOT ................................ 5 4. MECCANICA ....................................................................... 9 5. UNITÀ DI CONTROLLO .................................................. 16 6. SENSORI ............................................................................ 18 6.1. Ultrasonic Ranging Module HC – SR04...................... 18 6.2. Sensore ottico riflettete con transistor d’uscita ............ 19 6.3. Sensore Infrarossi fotoelettrico riflettente.................... 21 6.4. Modulo di Riflessione Infrarossi.................................. 22 7. ATTUATORI ....................................................................... 23 7.1. Servomotori a Rotazione Continua .............................. 23 7.2. Micro Servo SG90 ....................................................... 24 7.3. Motore in corrente continua ......................................... 25 8. AMBIENTE DI SVILUPPO ............................................... 26 9. IL PROGRAMMA SOFTWARE ........................................ 28 10. ALIMENTAZIONE .......................................................... 30 APPENDICE - Cavi ................................................................ 31 I.T.I.S. “E. Fermi” – Castrovillari (CS) 32