Rete di scuole per la ROBOCUP JR ITALIA ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Della squadra DA VINCI TN Liceo Scientifico L. Da Vinci Trento
Dati generali La squadra è composta da 7 componenti Nardelli Andrea, classe 3 a Tonon Vassili, classe 2 a Lametti Andrè, classe 2 a Barone Elia, classe 1 a Avi Filippo, classe 1 a Bertoni Jacopo, classe 1 a Dorigatti Emilio classe 1 a L'istituto di provenienza è il Liceo Scientifico Leonardo da Vinci di Trento, i docenti responsabili sono Vincenzo Mario e Poletti Matteo.
Dati di contesto e motivazioni La partecipazione alla Robocup Jr Italia 2012 nasce in seguito all'esperienza positiva maturata nei due anni precedenti con la partecipazione alla manifestazione di Vicenza e Catania. Durante il mese di febbraio è stato proposto a noi studenti del Liceo la possibilità di partecipare ad un corso di avviamento alla robotica. In seguito quelli tra noi che erano più motivati hanno frequentato un corso pomeridiano extrascolastico mirato ad approfondire argomenti più strettamente legati a una possibile partecipazione alla competizione. Durante questo abbiamo messo a punto e implementato le strategie di gara; all'insorgere di particolari problematiche legate all'hardware o al software abbiamo potuto chiedere consigli al ragazzo che ci seguiva. Nome e struttura del robot Abbiamo deciso di chiamare il nostro robot Claudicante. L'unità centrale è costituita dal brick NXT della Lego Mindstorms, alla quale abbiamo collegato sensori e motori. Il robot dispone anche di pinze per il recupero della vittima. La struttura portante è stata realizzata in alluminio. Meccanica Il telaio, realizzato in metallo, consta di una piattaforma di base alla quale sono attaccati i cingoli e di un'altra piattaforma mobile all'interno della quale sono posizionate le tenaglie. Nella piattaforma mobile verticale è posizionato un pistone meccanico che le permette di sollevarsi.
L'NXT dispone di tre porte motori nelle quali abbiamo collegato i motori Lego, due per i cingoli e uno per il pistone. La tenaglia è mossa attraverso un servomotore che agisce su due barrette di acciaio collegate ai due bracci delle tenaglie. Abbiamo preso poi accorgimenti particolari per rendere il robot in grado di salire la rampa, in particolar modo bilanciando il peso in avanti zavorrando con del piombo. Inoltre sia un sensore di ultrasuoni che il sensore di luce sono collegati a dei servomotori che gli permettono una rotazione di 90. Unità di controllo L'unità di controllo utilizzata è il rick Lego Mindstorms NXT 2.0. Il firmware è il n 1.28. Il collegamento al computer è realizzato attraverso cavo USB. L'unità dispone di tre porte motori e quattro porte sensori.
Sensori Sul robot sono presenti i seguenti sensori: - luce con 2 LED a luce bianca fredda per eliminare eventuali problemi di illuminazione; - ultrasuoni (2); - moltiplicatore che ci ha permesso di connettervi alla stesso tempo un selettore per i servomotori e gli switch; - Il selettore permette tramite il protocollo I2C di gestire i servomotori; - Una batteria di resistenze permette il collegamento simultaneo di 3 switch; essi infatti modificano l intensità di corrente il cui valore viene letto ed in base ad esso viene identificato lo switch premuto; - Per settare la porta in modo da utilizzare i servomotori o gli switch è sufficiente leggerla in modalità Lowspeed (cioè digitale e quindi I2C) oppure come porta analogica. Attuatori I motori presenti sul robot sono: Tre motori della Lego, due dei quali utilizzati per i cingoli e il terzo per il movimento del pistone. Tre servomotori che regolano il movimento di un sensore di ultrasuoni, del sensore di luce e delle tenaglie utilizzate per il salvataggio della vittima. Ambiente di sviluppo L'ambiente di sviluppo scelto per la programmazione del robot è BricxCC, e il linguaggio utilizzato è NXC.
Il motivo per è stato scelto questo linguaggio è che è simile al C++, un linguaggio molto utilizzato dagli sviluppatori di software. Il programma software Il software è diviso in numerose task e subroutine: task main: in cui sono inizializzati tutti i sensori e le altre task task seguilinea: si occupa di far sì che il robot segua la linea. task maceria: utilizza i sensori di ultrasuoni per evitare le macerie -task rampa: un task che permette al robot di salire la rampa e rendersi perpendicolare alla parete per entrare nella terza stanza task terzastanza: prevede le operazioni da svolgere nella terza stanza per il recupero della vittima task us/touch/light_check: controlla regolarmente I valori dei sensori sub raddrizzati: grazie a questa sub il robot riesce a rendersi perpendicolare alle pareti grazie a due sensori di tocco posteriori Nella prima parte della gara(1a e 2a stanza) le task seguilinea e task maceria, task light/us/touch_check vengono eseguite in parallelo. La prima permette al robot di seguire la linea mentre la task maceria, se ne individua una, interrompe la prima e esegue i comandi necessari per evitarla. Le task light/us/touch_check sono eseguite ripetutamente per aggiornare i valori registrati dai sensori. Sorgente di alimentazione L'NXT è alimentato da una batteria al litio ricaricabile da 7.4V, mentre i servomotori e i LED a luce bianca fredda utilizzano 4 batterie AA da 1.5V.