ROBOCUP JR ITALIA 2012

Documenti analoghi
ROBOCUP JR ITALIA 2011 Catania aprile

ROBOCUP JR ITALIA 2011

Report di docmentazione della squadra spritis Dell istituto tecnico industriale di valdagno

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2011

ROBOCUP JUNIOR. CATANIA, Aprile SenigalliaRobot. A cura di: Mazzanti Matteo Stefanini Alessandro Simone Giovanni

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2011

Macchinina evita ostacoli Arduino

Rete di scuole per la ROBOCUP JR ITALIA. ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA 2012

Lego Mindstorms NXT è un kit robotico programmabile rilasciato dalla Lego alla fine di Luglio 2006.

ROBOCUP JR ITALIA Riva del Garda aprile

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA RIVA DEL GARDA

ROBOCUP JR ITALIA III EDIZIONE CATANIA 2011

LE ALTRE BOARD ARDUINO

ROBOCUP JR ITALIA 2012

sperimenta anche tu! A SCUOLA DI ROBOT STUDENTI Al Horany Mohammad, Ambrosini Alessandro, Bacco Gianmarco, Magagna Marilla DOCENTI

ROBOCUP JR ITALIA 2012

La piattaforma per la robotica educativa VEX IQ è pensata per gli studenti a partire dalla scuola primaria. Si adatta sia a studenti alle prime armi

Ultrasonic Sensor Block

ROBOCUP JR ITALIA 2012

Far lampeggiare un led o forse un semaforo?

ROBOCUP JR ITALIA 2012

Robotica e didattica

I.T.T.S. "Cerulli" GIULIANOVA -TE- Laboratorio di Robotica Educativa Tutorial Robot in... 5 minuti!

Il sensore seguilinea

Programmazione dei robot

Interfacciabili con: Profibus-DP, CANopen e DeviceNet.

TSP 240. Terminale operatore con PLC integrato. inferiore a 500 ma senza carichi. Memoria Programma

Internetworking V a nno

L Istituto Comprensivo Cosenza 1 Zumbini ha partecipato alla XII edizione della 3 giorni per la scuola Smart education e technology days :

CHI SIAMO.

KS 405. Terminale operatore con PLC integrato. inferiore a 200mA senza carichi. Memoria Programma Memoria Pagine

Sistema SRT - Unita centrale di raccolta dati

KS 407. Terminale operatore con PLC integrato. inferiore a 300 ma senza carichi. Memoria Programma

DMX 30. PLC visualizzato per montaggio a quadro. CARATTERISTICHE ELETTRICHE Min 20Vcc ; Max 26 Vcc Min 15 Vac ; Max 21 Vac

ROBOCUP JR ITALIA 2012

DFW2. Dinamometro Digitale. Caratteristiche principali

D.A.M. Bros Robotics -

Apparecchiatura Kit KS.ino2.1 Preliminare 0.1c

RELAZIONE. Descrizione dell apparato sperimentale, materiale utilizzato, altre caratteristiche specifiche

ROBOTICA Syllabus Versione 1.0

ROBOCUP JR ITALIA 2012

SMART BLUETOOTH KEYBOARD Tastiera Bluetooth con Supporto Removibile per Smartphone e Tablet PC

RPM Bridge MANUALE UTENTE

ROBOCUP JR ITALIA 2015

SENSORI DI PARCHEGGIO. PS4-a2s

Prefazione...IX. Capitolo 1 - La famiglia di Arduino...1

Sviluppo di sistemi di controllo su piattaforma LEGO Mindstorms

Politecnico di Milano

Indice generale. Ringraziamenti...xi Prefazione...xiii. Componenti necessari...xvii. Iniziare a lavorare con Arduino Benvenuti in Arduino...

I sistemi robotici Lego Mindstorms

I robot si sono evoluti...

Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

IL PROGETTO «TELECOMANDO» (sensore ad infrarossi)

IO LOG SIELCO SISTEMA DI ACQUISIZIONE DATI CARATTERISTICHE PRINCIPALI DESCRIZIONE GENERALE SISTEMI

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

Ditec DMCS Manuale d uso del sistema di monitoraggio e controllo porta

Sistema di Elaborazione. Sistema di Controllo. Figura 1

2.978,00 (iva esclusa)

TIO 16. Test Input Output 16 linee MANUALE TECNICO. (Bologna) ITALY

DISPLAY A LED MONOCROMATICO

TERMOMETRO PALMARE MULTISONDA

Descrizione puntuale delle modalità di collocazione delle attrezzature

Esame di INFORMATICA Lezione 4

LIMITATORE DI CARICO DIGITALE

Ministero dell Istruzione, dell Università e della Ricerca

KIT METEORETE FORNITO DI:

Sommario. 1. Introduzione

CATANIA 2011 DATI GENERALI DATI DI CONTESTO E MOTIVAZIONE

Programma di Robotica[LEGO EV3]

RILEVATORE DI MOVIMENTO Art

Acquisizione dati a LABORATORIO - 4 (by Faso Diego)

Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo

Tutto quello che abbiamo imparato all Istituto Tecnico Maserati. Scopri tutti i dettagli

Per vedere tutti i tutorial:

TERMINALE DI RILEVAZIONE PRESENZE E CONTROLLO ACCESSI CON LETTORE DI IMPRONTE DIGITALI E TESSERE RFID, MOD. 300

NB HP PAVILION G6-1310EL

Sch ed e Ser ie RD7 7

Cos'è Arduino? rilasciata con licenza di tipo open source.

Primi passi con Bee-Bot e Cubetto


PWM 30 A. Disclaimer. Precauzioni di sicurezza

Azionamenti per il controllo dell attuazione elettrica Serie DRWB

ROBOT CUP SCHOOL Competizione organizzata dall Università degli Studi di Salerno Corso di laurea in Ingegneria Informatica

1 Power Commander 1 Cavo USB 1 CD-Rom 1 Guida Installazione 2 Adesivi Power Commander 2 Adesivi Dynojet 2 Striscia di Velcro 1 Salvietta con Alcool

RELAZIONE. Titolo Esperimento ALLA RICERCA DELLA ZONA DI ABITABILITA

Elementi di Informatica

Cos è? Definizione ufficiale scritta dall inventore di Arduino, Massimo Banzi.

MANUALE D USO E INSTALLAZIONE. LC 200 Limitatore di carico digitale. Versione Software 0.1

INNOVAZIONE DIGITALE: CODING, ROBOTICA, MAKING

Transcript:

Rete di scuole per la ROBOCUP JR ITALIA ROBOCUP JR ITALIA 2012 Trento 19-20-21 Aprile 2012 Della squadra Stracaganase Istituto ITIS De Pretto di Schio 1

2

La Rete di scuole per la Robocup Jr ITALIA è espressione dell Autonomia scolastica regolata dal D.P.R. 275/99 (art. 7) che permette alle scuole statali di operare sinergicamente per obiettivicondivisi e ritenuti importanti per l offerta formativa erogata all utenza. La Rete di scuole è nata sulla condivisione di una serie di principi EDUCATIVI e DIDATTICI riferiti alla realtà della scuola italiana. Questi principi e le conseguenti proposte operative erano stati riportati in un documento del maggio 2008 dal titolo: Manifesto per una RoboCupJr italiana - una proposta per la diffusione dell utilizzo didattico della Robotica nelle scuole a cura di Andrea Bonarini, Augusto Chioccariello e Giovanni Marcianò. Maggio 2008 L obiettivo della Rete organizzare l edizione italiana della Robocup Jr concretizza una spinta al confronto e alla collaborazione tra Istituti scolastici, elementi che motivano docenti e studenti all impegno nell innovazione, sia didattica che tecnologica, affrontando i problemi che costituiscono uno standard internazionale dal 2000, quando la Robocup (manifestazione riservata alle Università di tutto il mondo) ha proposto le tre gare per la scuola: Dance Rescue Soccer. La Robocup Jr ITALIA è Una manifestazione nazionale fondata di tre punti forti: 1. una struttura che cura l organizzazione e gestisce gli aspetti di organizzazione, promozione, svolgimento ai diversi livelli, regionali e nazionali; 2. un contenuto condiviso, ovvero regolamenti, formule di gara, supporto formativo e informativo ai partecipanti; 3. una documentazione delle proposte didattiche e del lavoro degli studenti che coinvolgono l uso di kit o robot auto costruiti per la partecipazione agli eventi organizzati dalla Rete. Questo volumetto appartiene alla collana di documentazione. 3

Sul piano organizzativo e gestionale della Rete di scuole lo Statuto prevederà organismi ben distinti ma fortemente integrati: COMITATO DI GESTIONE formato dai Dirigenti scolastici degli Istituti fondatori o associati alla Rete. Si riunisce due volte l anno in via ordinaria, e online per decisioni straordinarie. ISTITUTO CAPOFILA come previsto dal DPR 275/99 cura gli aspetti burocratici, amministrativi e contabili della Rete. Il Dirigente scolastico dell Istituto capofila è il legale rappresentante della Rete e provvede a dare esecuzione alle delibere del Comitato di Gestione. COMITATO TECNICO formato dai docenti referenti degli Istituti fondatori o associati alla Rete, provvede a definire il Bando e i Regolamenti di gara per la manifestazione annuale nazionale, trasmettendoli al Comitato di gestione che li deve approvare. RICERCATORI ASSOCIATI portano nella Rete il loro contributo scientifico di alto livello. Partecipano di diritto al Gruppo Tecnico e un loro rappresentante al Comitato di Gestione (senza diritto di voto). ISTITUTI PARTECIPANTI iscrivendosi alle gare, beneficiano del supporto della Rete ma non partecipano alle decisioni gestionali o tecniche. La partecipazione alla gara nazionale li rende idonei per aderire alla Rete. Diversamente serve il parere del Comitato Tecnico. 4

Maruffa Simone Zulpo Davide Zaltron Nicola Martini Nicolò Santoni Giacomo STRACAGANASE PARTECIPA ALLA GARA DI RESCUE B Istituto ITIS De Pretto Schio Classe 4 AE- 4 BE 5

CAP. 1 - DATI GENERALI COMPONENTI DELLA SQUADRA: Maruffa Simone Zulpo Davide Zaltron Nicola Martini Nicolò Santoni Giacomo ISTITUTO DI PROVENIENZA: ITIS De Pretto di Schio(VI) DOCENTI RESPONSABILI: Tomiello Giuseppe Marchiorato Dario 6

CAP. 2 - DATI DI CONTESTO E MOTIVAZIONE Ormai da qualche anno, la nostra scuola propone come attività extrascolastica un laboratorio di sistemi ed automazioni in cui noi studenti abbiamo la possibilità di ampliare le nostre conoscenze inerenti alla materia, programmando dei robot o seguendo altri progetti e attività proposti dai professori. Il nostro gruppo, che già da un paio d anni segue con interesse il progetto, non ha perso l occasione e, sotto consiglio del prof. Tomiello, ci siamo iscritti per partecipare alla RoboCup. Un esperienza del tutto nuova per noi la quale ci ha fatto comprendere molte aspetti, come lo spirito di squadra, primo fra tutti e la voglia di fare ma soprattutto di non arrendersi davanti alle difficoltà. 7

NOME: ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile CAP. 3 NOME E STRUTTURA DEL ROBOT Stracaganase è il termine dialettale che indica una particolare tipologia di castagne particolarmente difficili da masticare in quanto molto dure. Abbiamo scelto questo nome per il nostro robot a causa delle ingenti difficoltà incontrate durante lo sviluppo. Non è stata sicuramente un esperienza da prendere alla leggera in quanto, numerose sono state le ore passate a elaborare e a realizzare il robot ma soprattutto molte sono state le ore passate a programmarlo. 8

SCHEMA A BLOCCHI DEL ROBOT: 9

COMPONENTI PRINCIPALI DEL ROBOT: Il nostro robot è costituito da un Brick, che contiene il software e riesce, attraverso i sensori, a relazionarsi con l ambiente circostante, e da 3 motori e 4 sensori. I motori A e B comandano i cingoli, che consentono al robot di muoversi all interno del labirinto superando ostacoli e assicurano la massima aderenza anche in salita. Un terzo motore C viene utilizzato per far girare la testa del robot, costituita da un sensore Ultrasonic e un sensore di temperatura. Il primo sensore, un Ultrasonic, è in grado di rilevare la distanza da muri ed oggetti posti sul percorso. Il secondo sensore, un termico TPA-81, legge 8 valori di temperatura utili per individuare le vittime poste sul tracciato di gara. Il terzo sensore misura la variazione di luminosità del pavimento, così da individuare le celle nere, dove non si deve entrare. Il quarto ed ultimo sensore è anch esso un sensore di luminosità, ma ha il solo scopo di emettere luce nel caso in cui una vittima sia stata individuata. 10

CAP. 4 MECCANICA I principi che ci hanno accompagnato durante tutta la costruzione del robot sono molti. Innanzitutto abbiamo sempre cercato di rendere il robot compatto, così da conferire stabilità e una dimensione più piccola possibile, consentendogli di muoversi agilmente all interno del labirinto senza sbattere contro i muri e soprattutto senza sbilanciarsi durante le curve e la salita. In secondo luogo abbiamo cercato di costruire il robot più bello possibile perché si sa, anche l occhio vuole la sua parte. 11

Un aspetto che è stato fondamentale per la riuscita del robot è stata la trasmissione del moto tra motori e cingoli. Infatti abbiamo usato degli ingranaggi in modo da diminuire la velocità di rotazione dei cingoli, conferendo al robottino una coppia maggiore, così da percorrere senza difficoltà anche la salita. Sono stati utilizzati inoltre due pesi, da 150 g ciascuno posizionati sulla parte anteriore del robot, in modo da aumentare il suo peso e facilitare così il passaggio sulla rampa. Per quanto riguarda il movimento del robot, esso avviene attraverso l utilizzo di cingoli plastificati anziché utilizzare le ruote standard in dotazione con il kit di base Lego Mindstorm. La scelta di utilizzare i cingoli è stata determinata da tre fondamentali fattori: In primo luogo essi sono dotati di una maggiore superficie di contatto con il terreno del labirinto di gara. I cingoli permettono inoltre un migliore superamento di eventuali macerie poste sul tracciato di gara. 12

L altro aspetto fondamentale è strettamente legato col primo in quanto una maggior superficie di contatto permette al robot di eseguire la rampa, presente in ogni campo di gara, correttamente. Utilizzando infatti le normali ruote, fornite nel kit di base della Lego, si poteva osservare una evidente difficolta da parte del robot a compiere l intera rampa, difficoltà dovuta allo slittamente delle stesse ruote sulla superficie. 13

CAP. 5 UNITÀ DI CONTROLLO PORTE PER IL COLLEGAMENTO DEI TRE MOTORI PORTA PER IL COLLEGAMENTO DEL ROBOT CON IL PC TASTI PER NAVIGARE NELL INTERFACCIA UTENTE A MENU GERARCHICI. USCITA PER I SUONI PORTE PER IL COLLEGAMENTO DEI QUATTRO SENSORI Il componente principale del kit è il computer a forma di mattone chiamato "NXT brick". Può ricevere l'input da un massimo di quattro sensori e controlla fino a tre motori elettrici, attraverso cavi RJ12. Il "mattone" ha un display LCD monocromatico di 100x64 pixel e quattro bottoni che possono essere utilizzati per navigare l'interfaccia utente a menu gerarchici. Esso è dotato anche di un altoparlante che può riprodurre file sonori campionati a 8 khz. La corrente viene fornita da 6 batterie ricaricabili AA (1.5 V ognuna) o da una batteria ricaricabile Li-Ion. 14

SPECIFICHE TECNICHE: 1 Microprocessore centrale a 32-bit AT91SAM7S256 @ 48 MHz (256 KB flash memory, 64 KB RAM). 2 Microcontroller a 8-bit ATmega48 @ 4 MHz (4 KB flash memory, 512 Bytes RAM). 3 CSR BlueCore 4 Bluetooth controller @ 26 MHz (Memoria flash esterna da 8 MBit, 47 KB RAM). 4 Display LCD con matrice da 100 64 pixel. 5 Può essere programmato usando Windows o Mac OS (NBC/NXC supporta anche Linux). 6 L'utente crea un programma con un nuovo software, derivato da LabVIEW di National Instruments. 7 Una sola porta USB 1.1 a piena velocità (12 Mbit/s). 8 Connettività wireless Bluetooth (Classe II), per trasferire programmi all'nxt senza fili o per poter controllare il robot remotamente (attraverso cellulare o possibilmente da un PDA). 9 Quattro porte di input, piattaforma digitale a 6 fili (una porta include una porta di espansione conforme IEC 61158 Fieldbus Type 4/EN 50 170 (P-NET) per usi futuri). 10 Tre porte di output, piattaforma digitale a 6 fili. 11 Digital Wire Interface, permettendo a terze parti di sviluppare dispositivi esterni. 15

CAP. 6 SENSORI Sono stati utizzati 4 sensori, di cui uno ad Ultrasonic, un sensore termico TPA81 e due sensori di luce, il tutto collegato all NXT attraverso cavi RJ12. SENSORE AD ULTRASONIC: E un sensore di tipo attivo che viene collegato a una delle quattro porte di INPUT (1234). Il segnale fornito è di tipo analogico ed è proporzionale alla distanza dell'oggetto rilevato. Misura distanze in centimetri ( o pollici) da 0 a 255cm. con precisione di + /- 3 cm. E' più sensibile a oggetti grandi con superfici dure, mentre lo è meno con oggetti sottili, piccoli o con superficie non piana. Misura la distanza dall'ostacolo calcolando il tempo impiegato da un'onda sonora a colpirlo e tornare indietro. Questo sensore è digitale e usa il bus I2C. 16

Qui sopra è evidenziato il sensore Ultrasonic montato sul nostro robot. E fissato su un motore, posizionato sopra al brick, il quale permette al sensore di ruotare di un angolo complessivo di 180, in modo da poter non solo evidenziare e comunicare la presenza di muri e di ostacoli di fronte al robot ma anche a destra e a sinistra. Grazie alla funzione Rotate Motor, noi siamo in grado di imprimere al motore una rotazione di 90 perfetti evitando così di utilizzare funzioni, le quali si basano sul tempo (attraverso il Wait ) e che risultano in molti casi, molto meno efficaci della funzione sopra indicata ( Rotate Motor ). 17

SENSORE TERMICO TPA-81: Il TPA-81 è un dispositivo composto da un array di sensori di temperatura. Esso è in grado di rilevare un sorgente ad infrarossi nel range 2µm a 22 µm. Inoltre riesce a misurare contemporaneamente la temperatura di 8 punti adiacenti detti pixel. Il TPA-81 è in grado, non solo di rilevare una sorgente ad infrarossi, ma anche una sorgente di calore, come per esempio una candela, senza essere influenzato dalla temperatura ambientale. Il sensore termico utilizza l i2c bus ed e costituito da otto piedini di connessione; di questi otto piedini ne verranno utilizzati da noi solamente quattro: Il Vcc +5V pin : rappresenta la tensione utilizzata per alimentare il sensore termico. L SCL (Serial Clock Line) pin: rappresenta il clock della linea bus. L SDA (Serial DAta line) pin: trasmette il/i dato/i dal dispositivo dal quale è collegato. Il GND pin. 18

Ogni linea SDA e SCL deve essere dotata di una corrispettiva resistenza di pull-up. Il valore di resistenza consigliato dal produttore del TPA-81 è di 1,8k Ω. Nonostante ciò la resistenza da noi utilizzata sulle linee SDA e SCL è di 82k Ω, in quanto 1,8k risultava essere troppo basso come valore. L immagine qui raffigura il TPA-81 completo. Si possonoo notare i fili blu, giallo, verde e rosso provenienti dal brick Lego e connessi al sensore. 19

COME COLLEGARE IL SENSORE TERMICO TPA-81 AL BRICK LEGO MINDSTORM NXT 2.0: P P TPA-81 Vcc SDA SCL GND +5V Pin Pin Pin 20

SENSORE DI LUCE: Questo dispositivo Lego è un sensore analogico dotato di un led ed un sensore. Il led emette una luce colore rosso di cui il sensore rileva la parte riflessa dalla superficie illuminata. Il valore letto da questo sensore può essere molto utile quando c è bisogno di determinare se il robottino si trova di fronte o sopra ad una superficie chiara o ad una scura. Nel nostro robot sono presenti 2 di questi sensori. Sono due sensori di fondamentale importanza: il primo è posto nella parte anteriore del robot, in prossimità del terreno, ed ha il fondamentale compito di individuare le parti nere della superficie del labirinto di gara. Queste parti di labirinto non devono essere percorse dal robot Lego e grazie a questo sensore possono essere facilmente individuate. Il secondo sensore, molto importante anch esso, serve semplicemente ad emettere luce segnalando la presenza di una resistenza calda posta in prossimità del robot. 21

CAP. 7 ATTUATORI I servomotori utilizzati nel nostro progetto sono tre e funzionano tutti in corrente continua (DC). Sono collegati al brick attraverso cavi RJ12 i quali vanno inseriti nelle tre porte di OUTPUT (A-B-C). I primi due motori (servomotore A e servomotore B) sono adibiti allo spostamento del robot all interno del labirinto e sono quindi posizionati nella parte sottostante al brick e collegati con i cingoli attraverso una trasmissione costituita da ingranaggi forniti nei kit Lego. Il terzo servomotore (servomotore C) è posizionato invece sopra al brick Lego e viene utilizzato per far ruotare il sensore Ultrasonic, fissato su di esso. Come spiegato nel capito 6, nella parte riguardante il sensore ad ultrasuoni, la rotazione di 90 verso destra e verso sinistra avviene grazie alla funzione Rotate Motor. 22

CARATTERISTICHE: Tensione alimentazione 9V (DC) Velocità max 170 rpm (giri/minuto) (117 rpm a 9V) Potenza meccanica a 9V 2,03W Potenza elettrica a 9V 4,95W Efficienza a 9V 41% Assorbimento a 9V 0,55A No-Load current 60 ma Coppia a 9V 16,7 N*cm Coppia in stallo 50 N*cm Corrente di stallo 2 A Peso 80 gr. Il servomotore ha al suo interno un sensore di rotazione che permette di misurare la velocità e/o la distanza percorsa. Grazie al software è possibile sincronizzare più motori e garantire che si muovano alla stessa velocità. Inoltre con gli ingranaggi presenti nel Kit è possibile modificare ulteriormente il rapporto di trasmissione. 23

CAP. 8 AMBIENTE DI SVILUPPO Il robot è stato sviluppato in gran parte all interno del laboratorio scolastico e solo durante l ultimo periodo il robot ed alcuni componenti sono stati portati a casa per poterli completare e/o migliorare. Il laboratorio è dotato di due labirinti in legno. Il primo labirinto viene utilizzato dalle squadre partecipanti alla specialità Rescue A della RoboCup mentre il secondo labirinto, viene utilizzato dalla nostra squadra, partecipante alla Rescue B. Il nostro labirinto è costituito da due piani e da una rampa che li collega. E dotato inoltre di muri mobili in modo da poter variare i percorsi del robot. 24

Nell immagine è visibile il labirinto adibito alla Rescue B e utilizzato dalla nostra squadra. Per quanto riguarda il linguaggio di programmazione, non abbiamo adottato il software in dotazione con il kit Lego in quanto, a nostro parere, il software Lego è ritenuto semplice e sprovvisto di alcune funzioni reputate indispensabili da noi. Abbiamo così optato, fin dall inizio, al linguaggio NXC, un linguaggio molto simile al C++ e costituito da codici e funzioni (anziché da blocchi come il software Lego). Attraverso Bricx Command Center il programma da noi elaborato, veniva compilato e scaricato poi all interno del nostro brick pronto per essere testato sul robot. 25

CAP. 9 IL PROGRAMMA SOFTWARE Il programma da noi utilizzato, permette al robot di memorizzare tutto il labirinto man mano che esso viene esplorato. Perché ciò sia possibile, il software considera ogni cella del labirinto come una variabile in cui viene memorizzato l ordine con cui passa da una cella all altra. Dopo una prima fase in cui il programma cerca di esplorare più celle possibili alla ricerca di fonti di calore, esso controlla la posizione delle celle ancora da esplorare e cerca di raggiungerle ripercorrendo a ritroso il percorso finché non trova la zona ancora da percorrere. Quando gran parte delle celle sono state esplorate il robot raggiunge l uscita del labirinto e inizia a salire sulla rampa. Utilizzando il sensore a ultrasuoni si tiene a distanza costante dal muro in modo da avanzare perfettamente diritto. Quando il robot arriva nella stanza al secondo piano, essa viene interpretata come il labirinto della stanza al piano sotto con la sola eccezione che le variabili corrispondenti alle celle sono minori. Con questo software il robot è costretto a fermarsi in ogni cella per cercare vie da percorrere e per controllare le pareti in cerca di fonti di calore. Quando una vittima viene trovata, un sensore di luce posto verso l alto viene acceso e spento un paio di volte in modo che lampeggiando segnali la rilevazione della vittima. Quando viene trovata una cella nera il robot retrocede immediatamente e cerca una via alternativa. In questo tipo di gara è risultato essenziale che il robot avanzasse perfettamente diritto e che eseguisse le curve in modo perfetto perché basterebbe un singolo errore e il programma non saprebbe più l esatta posizione all interno del labirinto e quindi la sua uscita. Per questo motivo ogni volta che il robot compie una curva retrocede di qualche centimetro in modo da posizionarsi diritto. Inoltre nei rettilinei il robot cerca di tenersi sempre alla stessa distanza dalle pareti per evitare di appoggiarsi contro di esse. 26

LINGUAGGIO UTILIZZATO: Per tutto lo svolgimento del programma è stato utilizzato il linguaggio NXC, un linguaggio dai tratti molto simili al C++. ESEMPIO DI PROGRAMMA: if (spiad==1) { corregd=1; OnFwd(OUT_B,100); OnRev(OUT_A,100); Wait(trot); Off(OUT_AB); pos++; if(pos>4) { pos=1; } } if (spias==1) { corregs=1; OnFwd(OUT_A,100); OnRev(OUT_B,100); Wait(trot); Off(OUT_AB); pos--; if(pos<1) { pos=4; } } QUI IL ROBOT HA DECISO DI SVOLTARE A DESTRA. QUI IL PROGRAMMA MEMORIZZA CHE SUCCESSIVAMENTE DOVRÀ ARRETRARE PER METTERSI DIRITTO. IL ROBOT SI GIRA A DESTRA. pos INDICA LA DIREZIONE DEL ROBOT(1=VERSO ALTO, 2=VERSO DESTRA ECC...). QUI IL ROBOT HA DECISO DI SVOLTARE A SINISTRA. QUI IL PROGRAMMA MEMORIZZA CHE SUCCESSIVAMENTE DOVRÀ ARRETRARE PER METTERSI DIRITTO. IL ROBOT SI GIRA A SINISTRA. IL ROBOT SPEGNE I MOTORI. 27

L esempio di programma riportato è molto ridotto in quanto la funzione principale dell esempio è quella di dare un idea di come funziona la programmazione in NXC. Durante lo sviluppo del software sono stati riscontrati da noi numerose difficoltà; gran parte consistevano in un errata gestione delle celle del labirinto per cui il robot non riusciva più a comprendere la sua posizione. Per quanto riguarda il sensore termico, il quale non è compreso con il kit Lego ma acquistato a parte, abbiamo riscontrato problematiche riguardo alla lettura del valore della temperatura, in quanto sono state utilizzate funzioni e codici poco a noi poco conosciute. Si è trattato quindi di prendere un manuale, trovato su internet, il quale spiegava il linguaggio NXC e le sue funzioni. Solo grazie a ciò è stato possibile leggere sul display del robot il valore di temperatura rilevato dal TPA81. 28

CAP. 10 SORGENTE DI ALIMENTAZIONE La corrente viene fornita da 6 batterie ricaricabili AA (1.5 V ognuna) oppure da una batteria ricaricabile Li-Ion. 29

INDICE P. 6 CAP. 1 - DATI GENERALI P. 7 CAP. 2 - DATI DI CONTESTO E MOTIVAZIONE P.8 CAP. 3 - NOME E STRUTTURA DEL ROBOT P. 11 CAP. 4 - MECCANICA P.14 CAP. 5 - UNITÀ DI CONTROLLO P.16 CAP. 6 - SENSORI P.22 CAP. 7 - ATTUATORI P.24 CAP. 8 - AMBIENTE DI SVILUPPO P.26 CAP. 9 - IL PROGRAMMA SOFTWARE P.29 CAP. 10 - SORGENTE DI ALIMENTAZIONE 30