ROBOCUP JR ITALIA 2012

Documenti analoghi
ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2012

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

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA Riva del Garda aprile

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2011 Catania aprile

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

ROBOCUP JR ITALIA 2012

LA TECNOLOGIA. LME NXT è un sistema di sviluppo robotico.

ROBOCUP JR ITALIA 2012

Macchinina evita ostacoli Arduino

ROBOCUP JR ITALIA RIVA DEL GARDA

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

Sviluppo di sistemi di controllo su piattaforma LEGO Mindstorms

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

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

ROBOCUP JR ITALIA III EDIZIONE CATANIA 2011

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

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

Ultrasonic Sensor Block

Robotica e didattica

ROBOCUP JR ITALIA 2011

Sistema di Elaborazione. Sistema di Controllo. Figura 1

CHI SIAMO.

FIRST LEGO LEAGUE ITALIA BOLZANO 14 febbraio Squadra FLL 4: LICEO ROSMINI RELAZIONE TECNICA. TITOLO DEL PROGETTO: ipec

I sistemi robotici Lego Mindstorms

FREQUENZIMETRO FQ-16S3-800

FIRST LEGO LEAGUE ITALIA MILANO 6-7 marzo Squadra FLL4: LICEO ROSMINI RELAZIONE TECNICA. TITOLO DEL PROGETTO: ipec

RELAZIONE TECNICA. ISTITUTO SUPERIORE STATALE G. GALILEI MIRANDOLA (MO) Via J. Barozzi, 4 Sede temporanea E.S.T.

Introduzione alla robotica

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

In questo nuovo fascicolo ZAKINPROGRESS COMPONENTI

ROBOCUP JR ITALIA 2012

Programma di Robotica[LEGO EV3]

Descrizione puntuale delle modalità di collocazione delle attrezzature

ROBOCUP JR ITALIA 2012

Programmazione dei robot

ROBOCUP JR ITALIA 2015

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

RELAZIONE. Titolo Esperimento ALLA RICERCA DELLA ZONA DI ABITABILITA

ROBOCUP JR ITALIA 2012

Robot Escape scatola di montaggio. Presentazione del produttore. Attrezzi necessari per la costruzione del robot Escape:

ROBOCUP JR ITALIA 2012

LE ALTRE BOARD ARDUINO

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

ZAKINPROGRESS COMPONENTI

ISTITUTO TECNICO INDUSTRIALE STATALE "G. MARCONI" Via Milano n PONTEDERA (PI) PROGRAMMAZIONE COORDINATA TEMPORALMENTE DISCIPLINA: ROBOTICA

ROBOTICA Syllabus Versione 1.0

Samsung School. Project Informatica

DOCUMENTAZIONE. Isovak Team. classe 3D Liceo Scientifico Tecnologico. IISS Galilei

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile 2012

OSD DAU 10 DIGIFLY. Open System Digifly. Data Acquisition Unit MANUALE D'ISTRUZIONI SW 1.02

CIM Computer Integrated Manufacturing

Politecnico di Milano

ROBOCUP JR ITALIA 2012

Introduzione ad Arduino Giuseppe Augiero

CLASSE 3A MISSIONE SU MARTE

ATTIVITÀ 1. Controllo con telecomando

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

Robotica educativa. Chiara Beltramini e Mauro Sabella

Primi passi con Bee-Bot e Cubetto

Azionamenti per il controllo dell attuazione elettrica Serie DRWB

obiettivi tempi aree didattiche

Internetworking V a nno

CARATTERISTICHE TECNICHE dei QUADRI A6 per MONITORI ELETTRICI TELECOMANDATI

Prontuario per la programmazione di mbot. Versione V01

Ultrasonic Level Meter USM-02. (Estratto dal manuale operatore)

Workshop Teachers For Teachers settembre 2013

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

Università degli Studi di Cagliari

ROBOCUP JR ITALIA 2012 Riva del Garda aprile

ISTITUTO STATALE AUGUSTO MONTI P.zza Cagni, ASTI sito: istitutostatalemonti.com

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

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

Sensori di Prossimità Guida Utente

Predisposizione stampa a fine picking. Manuale utente

INNOVAZIONE DIGITALE: CODING, ROBOTICA, MAKING

R4G ROBOT FOR GEOMETRY

BRAIN 17 scheda elettronica per cancelli a battente 230V.

Non riesco ad entrare in calibrazione Provare a toccare il display 3 volte più lentamente, se il problema persiste 3 volte più velocemente.

e-bike System Progettato, sviluppato e prodotto in Italia

FINE DELLA FASE SOUND FOLLOWER

JDroid KIT P3L Project

Display numerico con i LED

DISPLAY A LED MONOCROMATICO

ROBOCUP JR ITALIA 2012

Aspirapolvere: quale scegliere?

Apparecchiatura Kit KS.ino2.1 Preliminare 0.1c

Qualità Innovazione Dialogo Assistenza. Premessa.

Rete di scuole per la

Stepper. montascale con pedana

Programmazione decoder MFX

Transcript:

Rete di scuole per la ROBOCUP JR ITALIA ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile Della squadra TUX Istituto

I.T.I.S. A. Rossi

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 obiettivi condivisi 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 documentazione. appartiene alla collana di Sul piano organizzativo e gestionale della Rete di scuole lo Statuto prevede 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. COMITATO LOCALE - Cura l edizione annuale della manifestazione, ed è formato a cura del Istituto fondatore o associato a cui il Comitato di Gestione ha assegnato la cura dell evento. 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.

TUX Autori: Massignan Fabio Tosato Luciano PARTECIPA ALLA GARA DI Rescue A Istituto: I.T.I.S. A. Rossi Classe: 4 AT-BT

CAP. 1 - DATI GENERALI Istituto di provenienza: I.T.I.S. A. Rossi Vicenza Componenti: Massignan Fabio Tosato Luciano Docenti responsabili: Andriolo Stefano Serbo Gianluca Vodola Donato

CAP. 2 - DATI DI CONTESTO E MOTIVAZIONE Il mondo robocup ha sempre affascinato entrambi i componenti del gruppo, per questo arrivati al quarto anno abbiamo deciso di vivere l'esperienza Robocup Jr in prima persona. Tra i principali ostacoli trovati in fase di sviluppo e programmazione del robot c'è stato il problema di trovare il miglior modo per affrontare le varie parti del percorso. Ad esempio per oltrepassare gli ostacoli presenti nella parte della pista, sono state trovate molte soluzioni, ognuna con i sui pregi e difetti, dopo averle sperimentate tutte si è scelto per la soluzione più precisa che sarà illustrata di seguito nel capitolo dedicato al software del robot. Importante è stata l'opinione di tutti coloro che hanno voluto sbilanciarsi nel giudicare il robot offrendoci sempre nuovi spunti e nuove tecniche da sperimentare e che in alcuni casi si sono dimostrate migliori di quelle provate fino a quel momento. In particolare in questo ruolo di critici sono stati molto utili i commenti di fratelli e cugini, ma anche dei genitori che con la loro abitudine di voler sempre metterci il naso in qualunque cosa, hanno offerto a noi nuove idee sulle varie tecniche utilizzate dal robot per completare l'intero percorso.

CAP. 3 NOME E STRUTTURA DEL ROBOT TUX il nome scelto per il robot si inspira al famoso pinguino simbolo di Linux. E' stato scelto questo nome per la passione da parte di entrambi i componenti per Linux; un ulteriore motivo è dato dal sistema operativo utilizzato per programmare il robot, anche questo appartenente al mondo Linux. Il robot è stato costruito con l'utilizzo di pezzi Lego, in particolare con i pezzi Lego della serie Mindstorm. Il robot è dotato di una unità centrale Lego NXT, 3 servomotori Lego, 7 sensori Lego e un multiplexer HiTechnic per consentire al robot di utilizzare altri 4 ingressi per sensori. Il mattoncino dell'unità centrale predispone di 3 uscite per servomotori utilizzate: 2 per il movimento dell'intero robot (uno per il movimento del cingolo destro applicato all'ingresso B; e l'altro servomotore per il movimento del cingolo sinistro applicato all'ingresso A) e l'ultimo servomotore a disposizione (ingresso C) è stato utilizzato per far muovere la pinza; un solo motore è stato utilizzato per il movimento della chiusura della pinza e del sollevamento della lattina. L'unità centrale predispone anche, come precedentemente detto, di 4 ingressi per sensori; è stata scelta la seguente configurazione: 2 sensori di luce riflessa rivolti verso il basso nella parte anteriore del robot utilizzati per permettere al robot di individuare la linea e poterla seguire: questi negli ingressi 1 (sensore sinistro) e 2 (sensore destro). Un sensore di distanza (ingresso 3) applicato frontalmente al robot per l'individuazione di ostacoli nella parte bassa del percorso e l'individuazione della vittima nella parte superiore (zona rossa). Al 4 ingresso disponibile nel mattoncino è stato collegato un multiplexer che permette di avere a disposizione altri 4 ingressi per i sensori potendo utilizzare così fino a 7 sensori

(questa scelta è stata fatta perché in un primo momento, durante la realizzazione del robot, si è notato che l'utilizzo di solo 4 sensori non permetteva la perfetta interfaccia del robot con l'ambiente esterno, 7 sensori non garantisco lo stesso l'interfaccia perfetta con il mondo esterno ma sicuramente la migliora di molto!). Agli ingressi del multiplexer i sensori sono stati applicati nel seguente modo: un sensore di luce riflessa applicato frontalmente per l'individuazione della vittima (ingresso 1); due sensori di distanza posizionati lateralmente a sinistra e a destra (rispettivamente applicati agli ingressi 2 e 3) per facilitare il superamento dell'ostacolo nella parte bassa del percorso e l'individuazione della vittima nella zona rossa; un ultimo sensore è stato collegato al 4 ingresso del multiplexer, un sensore di tocco applicato posteriormente che verrà premuto quando il robot inizia a percorrere la rampa.

CAP. 4 MECCANICA Il robot è stato costruito con pezzi Lego, in particolare con i pezzi Lego della serie Mindstorm. Interessante è la soluzione utilizzata per la pinza, avendo a disposizione un solo servomotore per entrambi i movimenti: presa e sollevamento della vittima; essendo gli altri 2 servomotori a disposizione utilizzati per il movimento del robot. L'unico servomotore a disposizione quindi, deve compiere sia il movimento di chiudere la pinza attorno alla vittima, dopo essere stata individuata attraverso i vari sensori presenti nel robot, ma anche il movimento del sollevamento per poi poter riposizionare la vittima nella zona di salvataggio. La soluzione adottata si tratta di un sistema di ruote dentate che permette alle braccia della pinza di chiudersi attorno alla vittima, in questo caso una lattina, e nel momento in cui non riesce più a stringere le braccia per la resistenza della vittima, la pinza inizia in automatico a sollevarsi. Di seguito gli schemi di montaggio della pinza utilizzata ed i particolari degli ingranaggi

CAP. 5 UNITÀ DI CONTROLLO L'unità di controllo principale adottata per la costruzione di questo robot è un "mattone", definito dal produttore: "NXT brick"; il quale può ricevere l'input da un massimo di quattro sensori, ampliabili con l'ausilio di un Multiplexer, e controlla fino a tre servomotori elettrici, attraverso cavi RJ12, molto simili ma incompatibili con i cavi del telefono RJ11. Come caratteristiche principali di questa unità si possono rilevare: - un display LCD monocromatico di 0x64 pixel e quattro bottoni che possono essere utilizzati per navigare l'interfaccia utente a menu gerarchici. - un altoparlante che può riprodurre file sonori campionati a 8 khz. - microprocessore centrale a 32-bit AT91SAM7S256 da 48 MHz (256 KB flash memory, 64 KB RAM) - microcontroller a 8-bit Atmega48 da 4 MHz (4 KB flash memory, 512 Bytes RAM) Le modalità di connessione per interagire con questo "mattone" sono: - Una porta USB 2.0 - Connettività wireless Bluetooth (Classe II), per trasferire programmi all'nxt senza fili o per poter controllare il robot da remoto.

Grazie alla grande versatilità di questo sistema di controllo, per la programmazione, e per l'interfaccia con il PC è stato indifferente utilizzare i sistemi operativi di distribuzione Windows o Linux. Gli unici requisiti necessari per il funzionamento su PC sono stati i driver per far riconoscere l'unità di controllo a questo, ma sono facilmente reperibili dal sito del produttore. Nella costruzione del robot sono stati ultilizzati in totale 7 sensori, per poterli collegare tutti all'nxt ci siamo serviti di un multiplexer per sensori. Questo non è altro che un mattoncino avente un uscita da collegare all'unità centrale e 4 ingressi per i sensori di vario tipo. Per poter funzionare ha inoltre bisogno di un alimentazione supplementare (una batteria da 9v), altrimenti non sarebbe possibile alimentare 4 sensori con la sola corrente fornita dall'nxt essendo questa per un solo sensore.

CAP. 6 SENSORI Come detto in precedenza per l'interfaccia del robot con il mondo esterno sono stati utilizzati 7 sensori di vario tipo tutti della Lego. Di seguito un breve descrizione del funzionamento del vari sensori: -Sensore di luce riflessa: Il sensore di luce è un sensore analogico che fornisce un valore proporzionale alla luminosità rilevata nell ambiente o alla luce riflessa dell emettitore. Per questo motivo si possono settare i due modi di funzionamento: ambient e reflected; nel nostro caso il sensore è stato settato in modalità reflected. Questo sensore permette inoltre di distinguere le varie tonalità di grigio. Il sensore restituisce un valore in percentuale. Ne sono stati utilizzati 3 di questo tipo: 2 per permettere al robot di riconoscere la linea e uno per l'individuazione della vittima avendo questa una superficie altamente riflettente; quest'ultimo è collegato all' NXT attraverso il multiplexer. -Sensore di distanza: Il sensore ad ultrasuoni permette al NXT di stimare le distanze e vedere dove si trovano gli oggetti attorno a lui. Questo sensore può misurare distanze in centimetri e in pollici, nel nostro caso è stato utilizzato in centimetri per motivi di semplicità. La massima distanza misurabile è di 255 cm con una precisione di circa 3 cm. Per ottenere la stima della distanza, il sensore invia dei suoni ultrasonici e misura quanto tempo intercorre perché questi,

una volta che hanno raggiunto l oggetto davanti al robot, rimbalzino e ritornino al sensore. Per questo motivo il sensore è più sensibile e preciso con grandi oggetti e superfici piane mentre può non funzionare correttamente con oggetti sottili, piccoli e superfici non piane come cilindri, sfere di piccolo raggio. Questo sensore è di tipo digitale. Nel nostro robot ne sono stati utilizzati 3: uno frontale per l'individuazione degli ostacoli nella parte bassa della pista utilizzato anche per l'individuazione della vittima quando il robot andrà verso di essa. Gli altri 2 sono posti lateralmente al robot e vengono utilizzati per mantenere una distanza costante durante il superamento dell'ostacolo e quello di destra viene anche utilizzato nella zona rossa per una prima individuazione della vittima. Questi ultimi 2 sensori sono collegati all'unità centrale attraverso il multiplexer. -Sensore di contatto: Il sensore di contatto è un sensore booleano ovvero può fornire solamente due tipi di ingresso: se il pulsante è premuto (ON,1) o rilasciato (OFF,0). Questo sensore è posizionato nella parte posteriore del robot, viene utilizzato per indicare al robot quando questo si trova nel tratto in salita ovvero nella rampa, per poter dare ai servomotori di movimento una maggiore potenza consentendo al robot di percorrere il tratto in salita. Nel momento in cui il robot inizia a percorrere la rampa e quindi inizia a inclinarsi questo sensore viene premuto contro la parte orizzontale della pista in questo modo il robot "capisce" che sta per affrontare la rampa e quindi dà ai motori una maggiore potenza in modo da percorrere la salita in

modo più agevole. Anche questo sensore è collegato al mattoncino tramite il multiplexer.

CAP. 7 ATTUATORI Il robot, per potersi muovere e prendere la vittima, è dotato di 3 servomotori anche questi della serie Mindstorm. In particolare il movimento del robot è permesso grazie a 2 cingoli montati nella parte inferiore azionati da un motore ciascuno anche questi posizionati nella parte inferiore del robot. Un'altro servomotore è utilizzato per il sollevamento della lattina. I servomotori Mindstrom (come tutti i motori appartenenti alla categoria dei servomotori) sono dotati anche di un encoder rotativo interno per poter muovere il rotore con la massima precisione. Hanno inoltre le seguenti caratteristiche tecniche: - Tensione di alimentazione 9V; - Velocità massima 170 rpm ; - Potenza meccanica a 9V 2,03W ; - Potenza elettrica a 9V 4,95W; - Assorbimento a 9V 0.55A ;

CAP. 8 AMBIENTE DI SVILUPPO Tra i possibili linguaggi di programmazione disponibili abbiamo valutato le alternative possibili: - La prima riguarda il programma nativo di Lego Mindstorms (programmazione a blocchi), ma è stato scartato subito perché non è adatto per programmi complessi, poiché non dispone dei metodi avanzati di controllo dei motori, dei sensori, e della gestione totale del software. - la seconda alternativa, che abbiamo così deciso adottare, riguarda un'altro tipo di programmazione, più classica, utilizzando il compilatore BrixCC, ed il linguaggio simile al C; anche perché ci era già familiare, in quanto lo avevamo già studiato a scuola. BrixCC permette la scrittura dei programmi, la loro compilazione, la ricerca degli errori, ed il trasferimento del codice al robot. Può gestire programmi scritti in vari linguaggi, ma quello che abbiamo utilizzato è NXC, molto simile al C (acronimo proveniente dall'inglese: Not exactly C), quindi un linguaggio di alto livello, molto diffuso ed utilizzato. BrixCC è un programma open source, liberamente scaricabile ed utilizzabile. L'utilizzo dei metodi avanzati menzionati precedentemente, con la programmazione in NXC ci permettono ad esempio con il richiamo di una singola funzione di far funzionare i servomotori in modo sincrono, facendoli ruotare con lo stesso numero di giri, oppure di gestire l'attivazione o la disattivazione dei diversi task anch'essi con l'ausilio di una sola funzione; per fare questo, però, è stato necessario trovare un firmware adatto, che accettasse tutte queste funzioni.

Un esempio di programmazione in NXC: Si possono notare come esistono i cicli "while", "if/else" o le condizioni maggiore, minore ecc.. tipici della programmazione in C, associati a nuove funzioni come la lettura dei valori dai sensori "Sensor(SLS)" oppure la velocità da assegnare ai motori "OnFwd(OUT_AB,0)", tipici della programmazione dell'unità di controllo NXT. L'insieme di queste funzioni ha dato forma al linguaggio da noi utilizzato chiamato NXC.

CAP. 9 IL PROGRAMMA SOFTWARE Il programma principale da noi scritto può essere suddiviso in tre parti, che corrispondono ai tre task utilizzati per il completamento della prova, che saranno: - Controllo; - Zona rossa; - Segui linea e supera ostacolo; La parte fondamentale di tutto il programma sicuramente si trova nel task main (principale), dove è situato il controllo; questo task può essere considerato il "cervello" dell'intero software, infatti in base alla lettura dei vari sensori è in grado di capire in che parte della pista si trova il robot, e di conseguenza fa eseguire in maniera corretta gli altri pezzi di programma a lui dipendenti. Analizziamo ora sensore per sensore come reagisce il task main, di controllo, per capire in che posizione si trova: - se i sensori di luce leggono un valore che corrisponde al bianco, oppure un valore che corrisponde al nero, la linea, verrà fatto eseguire il task che corrisponde al segui linea e al supera ostacolo. - se i sensori di luce leggono un valore che corrisponde all'argento, questo task è in grado di bloccare il normale segui linea, per far eseguire la parte riservata alla zona rossa, senza creare dei contrasti fra task che possono arrecare problemi.

-se il sensore di contatto posteriore sente di essere premuto, sempre questo task aumenta la potenza dei motori per facilitare la salita sulla rampa.

La seconda parte che tratteremo in questo capitolo riguarda la ricerca della vittima nella zona rossa, e il riposizionamento nella zona di salvataggio. La zona rossa è contraddistinta da una fascia argentata che viene letta dai sensori di luce, i quali riconoscono una soglia diversa rispetto al bianco che leggono nel segui linea. Tra i diversi metodi per trovare la vittima abbiamo scelto quello che a noi sembrava più veloce ed efficace, che consiste nell'andare dritto per l'intera lunghezza della stanza continuando continuamente a controllare a destra con il sensore ad ultrasuoni se rileva la lattina. Per compensare l'errore dato dal'ampio raggio di lettura degli ultrasuoni, è stato scelto di far avanzare il robot di un valore da noi definito di rotazioni in funzione della distanza con cui trova la lattina, in modo di essere il più possibile allineato ad essa per afferrarla con più facilità. Di seguito è rappresentato un pezzo di programma d'esempio del controllo che viene effettuato per trovare la lattina ad una distanza a destra compresa tra 55 e 70 cm e controllando ugualmente con il sensore frontale la presenza di questa, poiché la lattina può trovarsi anche nella zona di transito del robot, e quindi con il metodo sopra descritto non riuscirebbe a riconoscerla.

Prima di afferrare la vittima, però, viene effettuato un'altro controllo incrociato con il sensore di luminosità posto frontalmente ed l'ultrasuoni centrale in modo tale che se viene per caso commesso un errore nella rilevazione della vittima si riesca lo stesso a recuperarla. Questo controllo non è altro che una triplice lettura effettuata a sinistra, al centro e a destra della lattina in modo tale da essere sempre in linea con questa; i controlli finiscono quando: il sensore ad ultrasuoni legge una distanza minore di 12 ed il sensore li luminosità riconosce l'argento della lattina. Dopo aver afferrato la vittima il robot è in grado di riposizionarsi nella direzione giusta a seconda di dove ha trovato la piattaforma di salvataggio nell'ingresso della stanza. Questo controllo che viene effettuato all'ingresso dell'ultima stanza, sfrutta il sensore ultrasuoni centrale e quello di destra. Avendo salvato le dimensioni della pista nella fase di settaggio, compara questi valori con quelli letti, e se ci sono delle variazioni abbastanza evidenti riguardo la lunghezza e la larghezza della stanza significa che gli ostacoli sono posti: - in alto a sinistra, se vede una differenza sostanziale nella lettura con il sensore centrale (ang=1) - in basso a destra, se vede una differenza sostanziale nella lettura con il sensore di destra(ang=3)

- in alto a sinistra se i due controlli precedenti non hanno rilevato alcuna anomalia.(ang=2)

L'ultima fase del posizionamento della lattina nella zona di salvataggio è molto semplice, in quanto il robot si muove verso il muro in cui è posizionata la piattaforma, a seconda del controllo fatto precedentemente, poi ruota di 90 verso questa, e quando la trova con il sensore di luce frontale rilascia la vittima.

L'ultima parte riguarda il segui linea e il supera ostacolo, inizialmente posizionati su due task separati, ma poi è stato deciso di raggrupparli per evitare contrasti che possono arrecare problemi. Per il segui linea non si sono verificati grossi problemi nella programmazione, qui sotto è riportato il pezzo di programma riguardante questa parte:

Le uniche correzioni necessarie che possono essere apportate durante il settaggio e nelle prove, possono essere oltre ai valori delle soglie del nero e del bianco, i valori della variabile "crev", la quale permette di modificare la velocità con cui il motore si muove indietro, permettendo di poter affrontare qualsiasi tipo di curva. L'algoritmo utilizzato può essere diviso in due sezioni che riguardano la lettura del sensore di destra e quella del sensore di sinistra, nelle quali se un sensore rileva la linea nera, i motori si muovono in modo da riportarlo sul bianco; se i sensori invece vedono entrambi bianco il robot continua ad andare dritto.

Dei problemi nella programmazione, riscontrati anche nella gara Robocup Jr Veneto, sono stati trovati nel supera ostacolo, poiché durante il superamento di questo, il robot poteva riconoscere la linea nera, e riprendere il segui linea in una posizione errata. Per eliminare questo problema abbiamo creato una specie di bussola, la quale incrementa una variabile ogni volta che il robot compie una rotazione attorno all'ostacolo, in modo tale da riuscire a capire in che posizione si trova rispetto a questo, e quindi recuperare la linea giusta diventa più semplice e più sicuro, riducendo al minimo gli errori. Questa parte di software funziona in modo tale da compiere un cerchio attorno all'ostacolo, mantenendolo sempre alla stessa distanza: se il robot si allontana troppo dall'ostacolo questo ruota riportandosi alla distanza indicata, invece se è alla distanza giusta prosegue dritto. Prima di cominciare a ruotare, vengono fatte una serie di letture a destra e a sinistra dell'ostacolo, in modo di trovare in quale parte c'è più spazio per compiere le manovre necessarie al movimento. Di seguito una parte del programma del supera ostacolo dalla parte sinistra:

Ultima cosa essenziale necessaria per il corretto funzionamento software è il settaggio dei sensori. Tre sensori sono collegati al "mattone" NXT e sono: i due sensori d luce per seguire la linea, e l'ultrasuoni centrale, i rimanenti quattro sensori sono collegati al multiplexer, e sono: i due sensori ad ultrasuoni destro e sinistro, il sensore di contatto posteriore, e il sensore di luce ambientale frontale.

CAP. SORGENTE DI ALIMENTAZIONE tensione di V in continua. Le possibilità per alimentare il robot sono di due tipi: - 6 batterie di tipo AA con tensione 1.5V -un battery-pack agli ioni di litio ricaricabile, che fornisce una tensione di 7,4 V e 2200 mah. Questo battey-pack viene ricaricato con una Per ovviare al problema del continuo cambio di batterie, la scelta della sorgente di alimentazione si è spostata sul battery-pack.

INDICE P.7 - CAP.1 - DATI GENERALI P.9 - CAP.2 - DATI DI CONTESTO E MOTIVAZIONE P.11 - CAP.3 - NOME E STRUTTURA DEL ROBOT P.13 - CAP.4 - MECCANICA P.15 - CAP.5 - UNITÀ DI CONTROLLO P.17 - CAP.6 - SENSORI P.19 - CAP.7 - ATTUATORI P.21 - CAP.8 - AMBIENTE DI SVILUPPO P.23 - CAP.9 - IL PROGRAMMA SOFTWARE P.35 - CAP. - SORGENTE DI ALIMENTAZIONE