ROBOCUP JR ITALIA 2012

Documenti analoghi
ROBOCUP JR ITALIA 2015

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA Riva del Garda aprile

ROBOCUP JR ITALIA 2012

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

ROBOCUP JR ITALIA RIVA DEL GARDA

ROBOCUP JR ITALIA 2011

ROBOCUP JR ITALIA 2012

CATANIA 2011 DATI GENERALI DATI DI CONTESTO E MOTIVAZIONE

ROBOCUP JR ITALIA 2012

Politecnico di Milano

CHI SIAMO.

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2012

Relazione sul lavoro di Robot Design della squadra dei Miccorobokids Pistoia 1) Missioni scelte

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

Ultrasonic Sensor Block

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 2011

Il sensore seguilinea

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

Politecnico di Milano

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

Introduzione alla robotica

ROBOCUP JR ITALIA 2015

ROBOCUP JR ITALIA 2012

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

ROBOCUP JR ITALIA 2011 Catania aprile

Robotica educativacon il kit Lego EV3

Il primo programma C++

ROBOCUP JR ITALIA 2012

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

ROBOTICA Syllabus Versione 1.0

Internetworking V a nno

Guida all'installazione del rack

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

obiettivi tempi aree didattiche

Caratteristiche di un linguaggio ad alto livello

INTRODUZIONE ALLA PROGRAMMAZIONE

Prontuario per la programmazione di mbot. Versione V01

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) aprile

ROBOCUP JR ITALIA 2012

Indice. Prefazione. 3 Oggetti e Java 53

Federazione Italiana Rugby

Rete di scuole per la

con il sostegno di Con il Patrocinio

ROBOCUP JR ITALIA 2011

Fondamenti di Informatica. Ingegneria elettronica

Assegnazione di una variabile

Soluzione Flessibile per la Misura


1. CONFIGURAZIONE DELLA TRAVERSA D AUTOMAZIONE

Linguaggi di Programmazione

Descrizione puntuale delle modalità di collocazione delle attrezzature

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

con il sostegno di Con la collaborazione

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

Corso di Fondamenti di Informatica Università degli Studi di Cassino

CORSO DI PROGRAMMAZIONE

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Sistema di Elaborazione. Sistema di Controllo. Figura 1

Per vedere tutti i tutorial:

ROBOCUP JR ITALIA 2012 Riva del Garda aprile

Programmazione ROBIPIC in linguaggio C

Workshop Teachers For Teachers settembre 2013

Le 5 Fasi del lancio del Giavellotto.

4. I moduli in Access 2000/2003

WEBINAR VIDEOCONFERNZA

ROBOCUP JR ITALIA III EDIZIONE CATANIA 2011

MATSUYAMA. Giradischi a Cinghia con Porta USB PH005 MANUALE D USO

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

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

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Qualsiasi programma in C++ segue lo schema:

ISTRUZIONI DI MONTAGGIO SCREEN WINCH SYSTEM per SCHERMI DA 300 CM. A 450 CM. DI BASE

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Istituto di Istruzione Superiore. Maria Montessori Leonardo Da Vinci Via della Repubblica, Porretta Terme ALTO RENO TERME (BO)

Tipi strutturati - struct

CENTRO DI LAVORO EC43 5 assi con alimentatore

CLASSE 3A MISSIONE SU MARTE

INSEGUITORE SOLARE CON ARDUINO. Dispositivo che insegue il movimento solare realizzato con: 1. Arduino 2. 2 foto resistenze 3.

TRANSIZIONE OFFENSIVA

con il sostegno di Con il Patrocinio

Python. Loriano Storchi.

I kit della Linea Meeting motorizzano due ante scorrevoli complanari che si aprono in direzione opposta:

Corso di Informatica

Le basi del linguaggio Java

Il linguaggio di programmazione Python

GIOCHI DELLA GIOVENTÙ 2013 / 2014 PROGETTO TECNICO

KIT PILOTINA STANDARD/ CONTROLLER/ PROGRAMMER (cambio automatico ora solare e legale)

ECTHA PRO. Sclerometro digitale. Lo sclerometro digitale Ectha PRO è realizzato in accordo con tutti i principali standard mondiali

Transcript:

Rete di scuole per la ROBOCUP JR ITALIA ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Della squadra Precious Angel Istituto I.T.I.S. "G.Chilesotti" Thiene (VI) 1 1

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 su 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 2

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE partecipazione agli eventi organizzati dalla Rete. Questo volumetto appartiene alla collana di documentazione. 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. 3

autori Precious Angel PARTECIPA ALLA GARA DI RESCUE A Istituto ITIS "G.CHILESOTTI" Classe 5 A BI 4

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 1 - DATI GENERALI Componenti della squadra: Dalla Costa Jurgen Cocco Lasta Michele Parebon Luca Istituto di provenienza: I.T.I.S. "G.Chilesotti" di Thiene (Vicenza) Docenti Responsabili: Rasile Amerigo Gecchelin Carlo Cuoghi Marco I docenti sopraindicati sono i responsabili del corso di robotica, nonchè i nostri accompagnatori. 5

CAP. 2 - DATI DI CONTESTO E MOTIVAZIONE L'idea di partecipare alla manifestazione RobocupJR 2012 è stata lanciata dai nostri docenti all inizio dell anno scolastico. Le regole di adesione erano molto semplici: essere uno studente del triennio del nostro istituto; ogni squadra doveva essere formata da tre elementi; i partecipanti potevano appartenere anche a classi differenti; avere voglia di mettersi in gioco e di imparare cose nuove. Nella nostra scuola hanno aderito molte squadre per quanto riguarda la categoria Rescue A. Attraverso una selezione interna ne sono state scelte 4 e successivamente sono state scelte le 2 migliori. I dubbi avuti sono stati pochi, poiché i docenti hanno spiegato molto chiaramente il regolamento. Inoltre, hanno dato vari consigli su come superare certe difficoltà e aiutandoci dove ci fosse necessità. Oltretutto, il supporto ricevuto dai compagni di classe, comitato genitore e dai professori non referenti è stato lodevole poiché hanno sostenuto la squadra con aiuti morali di vario tipo. 6

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 3 NOME E STRUTTURA DEL ROBOT Nome Il nome della nostra squadra è Precious Angels. Nome che crediamo rispetti il carattere del nostro gruppo ed è stato scelto dopo un attenta ricerca. Anche il robottino ha un nome: Wild Rain. Abbiamo voluto battezzarlo con questo nome per la sua somiglianza con un ragnetto e perché programmarlo è stato per noi una vera avventura. La traduzione in italiano dei due nomi è rispettivamente: Angeli Preziosi e poi Ragno Selvaggio. Struttura L unità centrale è costituita dal brick, il quale appoggia sul motore che alza e abbassa il braccio che prende la lattina FIG 3.1-UNITÀ CENTRALE 7

CAP. 4 MECCANICA Il braccio con la pinza è strutturato secondo un moto rotatorio trasmesso attraverso degli ingrannaggi e in base a questo movimento il braccio si abbassa e la pinza si apre, oppure la pinza si stringe e poi il braccio si alza. Ci sono due ingranaggi più grandi che trasmettono il moto rotatorio (ingr. 1) e in successione altri due utilizzati per propagare il moto lungo tutto il braccio. Inoltre, sono stati messi dei supporti frontalmente per tenere il braccio fermo in modo che non scenda più del dovuto e la pinza quindi non interferisca con il sensore ad ultrasuoni frontale. Mentre gli ingranaggi (ingr. 2) indicati in figura vengono utilizzati per covertire il moto da verticale ad orrizzontale per aprire le pinze. Come natura esterna al kit abbiamo usato degli elastici (fig 4.1) per fare più grip sulle pinze che useremo per prendere la lattina e portarla nel podio. Il braccio è stato costruito più basso possibile per non rendere la sagoma del robottino troppo alta in modo tale da faciliare il passaggio tra le porte dell arena. FIG 4.1 SISTEMA ESTERNO PER CREARE GRIP 8

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Abbiamo scelto di posizionare il braccio secondo il senso di marcia del robottino (in posizione frontale) per avere una maggiore precisione nella raccolta della lattina nel piano sopra. Nel caso l avessimo montato dietro è possibile incorrere in errori circa la rotazione a 180 del robottino per afferrare la lattina. Inoltre come meccanica è stato scelto di utilizzare i cingoli per dare più attrito in salita e inoltre per avere più precisione nei cambi i direzione laterali. Essi poggiano su 3 ruotine: due parallele al motore e una posizionata più in alto che ha lo scopo ti tirare ulteriormente i cingoli. Sono state installate, inoltre, due ruotine frontali al robottino in modo tale da facilitare l impatto che c è quando il robottino arriva nella salita e quindi non sfalsare quello che è il valore letto dai sensori di luce. Posteriormente sono state messe delle sporgenze per fare in modo che il robot arretrando riesca a raddrizzarsi contro le pareti e in caso di sbilanciamento in salita riesca a salire lo stesso impennando. Abbiamo cercato di bilanciare il peso del robbottino il meglio possibile per facilitare l avanzamento nella salita. Infine per quanto riguarda la struttura del robottino sono presenti due sensori, uno frontale e uno laterale. E quest ultimo ha la possibilità di scorrere a destra e a sinistra in modo manuale grazie all ausilio di un semplice meccanismo di scorrimento. 9

CAP. 5 UNITÀ DI CONTROLLO Il robottino è dotato di una sola unità centrale (Bric command center) data da un kit della Lego MINDSTORMS (fig 5.1). Il Firmware installato è la versione 1.29, quindi, non l ultima versione uscita nel mercato, ossia la 1.31. FIG 5.1 : UNITA DI CONTROLLO L alimentazione del Bric è data da blocco di batterie stilo date in dotazione dal kit. A livello fisico l interfacciamento con il PC da un cavo USB con parte piatta e una parte grossa. Mentre per quanto riguarda il collegamento con quansiasi device in input è dato da un doppino telefonico UTP con connettore RJ11. Abbiamo interfacciato il robottino con un PC dotato dal sistema operativo Windows7x64. E stato, quindi, necessario scaricare gli opportuni driver per una comunicazione corretta. Come Software abbiamo utilizzato l editor testuale che fornisce il sito della Lego, il Bricx Command Center. 10

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 6 SENSORI E MOTORI I sensori utilizzati sono quelli dati in dotazione dal kit della lego, cioè nello specifico i sensori di luce e ad ultrasuoni. Abbiamo usato 2 sensori di luce per svolgere il segui-linea e 2 sensori ad ultrasuoni. Uno di questi due è frontale e l'altro è nel lato destro del robottino. Quello frontale serve soprattutto per rilevare l'ostacolo, mentre quello laterale serve per trovare la lattina nella stanza in alto. Questi due sensori sono stati combinati nel programma per fare il superamento dell'ostacolo e per prendere la lattina e portarla nel podio. Per quanto riguarda i collegamenti essi seguono la seguente tabella. La simmetria tra destra e sinstra è data rispetto all asse parallelo alle ruote guardando il robottino da dietro. Sensore Sens. di luce sx Sens. di luce dx Sens. ad ultrasuoni frontrale Sens. ad ultrasuoni laterale Porta logica PORT_1 PORT_2 PORT_2 PORT_3 Il sensore di luce (fig 6.1) permette al robot di leggere l intensità di luce presente nell ambiente. Quindi con esso è possibile determinare se è presente luce o buoi oppure l intensità della luce letta. FIG 6.2:SENS. DI LUCE 11

Mentre il sensore ad ultrasuoni (fig 6.2), esso ha la funzione di determinare la distanza dal sensore stesso ad un oggetto presente davanti. Da una boccola il sensore spara degli ultrasuoni e dall altra li riceve in modo tale da determinare il tempo tra quando il suono viene rilasciato e quando viene ricevuto, in modo tale da calcolare la distanza tra il sensore e l oggetto con la semplice legge fisica delle velocità in un moto teoricamente uniforme. Anche i motori sono quelli dati in dotazione dal kit (fig 6.3). Essi hanno la capacità di avanzare o retrocedere secondo diverse velocità stabilite dal programmatore. Abbiamo notato che i motori forniti dal produttore non sono tutti i uguale ma alcuni di loro hanno una maggiore potenza rispetto ad altri. Di conseguenza è necessario regolare questa pecca a livello di programmazione, facendo avanzare i due motori in modo simmetrico. (La simmetrica di sx e dx è fatta rispetto a quella vista nei sensori). La configurazione dei motori invece è la seguente: FIG 6.3: MOTORE DELLA LEGO Motore Motore sx Motore dx Porta logica OUT_A OUT_B FIG 6.2:SENS. AD ULTRASUONI Per quanto riguarda le specifiche tecniche di ogni singolo sensore rimandiamo al sito della Lego nel quale sono presenti sicuramente molti più dettagli : http://mindstorms.lego.com/en-us/default.aspx 12

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 7 ATTUATORI I motori utilizzati sono 3. Due sono usati per l avanzamento e l arretramento dei cingoli a trazione posteriore. Il terzo motore è impiegato per il movimento del braccio. I due motori per il movimento del robot: FIG 7.1 MOTORE DI DESTRA FIG 7.2 MOTORE DI SINISTRA 13

Il motore che azione il braccio: FIG 7.3 MOTORE DEL BRACCIO Lo schema logico dei sensori e degli attuatori collegati al brick è il seguente: 14

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 8 AMBIENTE DI SVILUPPO Per la programmazione del robottino utilizziamo l editor testuale scaribabile dal sito della Lego, ossia Bricx Command Center. La versione utilizzata è la 3.3. Non utilizziamo la programmazione grafica perchè in quest ultimo caso ci sono diverse limitazioni circa l implementazione di particolari funzioni rigurdanti in primo luogo la lettura dei motori e la gestione delle variabile d ambiente. Dai nostri test abbiamo concluso che l editor testuale contiene diverse pecche. Partento dalla tabulazione del testo che spesso provoca una difficile lettura dell algoritmo in quanto risulta difficoltoso un corretto allineamento delle diverse annidazioni presenti nel programma. Inoltre abbiamo riscontrato degli errori per quanto riguarda la gestione della memoria del computer nel caricamento di un programma ncx. Inoltre il compilatore gestisce male gli errori presenti nel codice, segnalando errori di sintassi quando l errore presente è di tipo logico. Di conseguenza per la formattazione del codice consigliamo l utilizzo di un editor esterno da quello fornito dalla Lego e utilizzare quest ultimo per la compilazione e il download del programma. Il linguaggio utilizzato per la programmazione del robottino e l NXC (not exatly C). Esso è un vero e proprio linguaggio di programmazione simile al C e al C++ e permette, digitando semplici istruzioni, di eseguire operazioni o funzioni molto complesse. Siamo rimasti soddisfatti di questo linguaggio perchè è sicuramente completo per quanto riguarda i movimenti base del robottino (avanzamento dei motori o lettura dei sensori) e inoltre contiene le giuste funzioni per quanto rigurda la gestione delle varibili. Nonostante tutto non può essere considerato come una linguaggio di programmazione completo visto che non è possibile creare delle strutture di dati che normalmente sono disponibile di altri linguaggi di programmazione (ad esempio creazione di classi, ereditarietà e polimorfismo). 15

Ad ogni modo la Lego ha dato a disposizione delle ottime librerie per l implementazione di funzione aggiuntive. Con l NXC la programmazione risulta veramente facile e veloce perchè non si va a lavorare con il robottino a basso livello (come in molti casi di robotica bisogna fare) ma si va a lavorare ad alto livello dando solo le istruzioni di movimento senza toccare le celle di memoria. 16

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 9 IL PROGRAMMA SOFTWARE Per semplificare e rendere più comprensibile il codice sono stati creati i file: define.nxc functions.nxc Il file define.nxc contiene la dichiarazione di tutte le costanti necessarie al programma. Il file functions.nxc contiene invece varie funzioni (metodi) come ad esempio: Avanti(int vel,int time); Indietro(int vel, int time); GiraDestra (int vela,int velb,int time); che verranno poi richiamate nel programma. Questi file vengono inclusi nel programma finale tramite l'istruzione: #include nomefile.nxc. Il programma finale è principalmente composto dalle funzioni: Seguilinea() SchivaOstacolo() WaitInt(int time,char direz,int vel1,int vel2,int precisione) CercaOggetto() ControlloPosizione(int distanza, char posizione) PrendiOggetto() e dal task main(). 17

Function seguilinea e WaitInt Il seguilinea è stato progettato in modo tale che se un sensore di luce vede la linea nera più volte consecutivamente la rotazione dei motori aumenta. Questo è reso possibile dall'utilizzo di 3 contatori (dx, sx e av), dove dx conta quante volte il sensore di luce destro vede nero consecutivamente, sx conta quante volte il sensore di luce sinistro vede nero consecutivamente e av che conta quante volte il robot è andato avanti senza vedere la linea. Quando il robottino fa un tratto di percorso rettilineo i contatori dx e sx vengono azzerati. Quando uno dei due sensori rileva la linea nera viene effettuata una rotazione direttamente proporzionale al rispettivo contatore. Waitint è una funzione che viene utilizzata nelle curve quando i contatori dx e sx sono elevati ed effettua un'ampia rotazione controllando però di non superare la linea nera. Ad esempio, se il robot deve girare a sinistra ed il contatore sx è elevato, il robot ruota molto controllando però che il sensore di luce di destra non veda la linea nera. Di seguto riportiamo un piccolo pezzo di codice nel quel il robottino assume una certa velocità nella rotazione in base ai contatori. if (dx<1) { } if (contcurvabrutta >= 2) { GiraDestraNoTime(50,70);//gira a destra Wait(400); PlayTone(800, 800); } else { GiraDestraNoTime(45,70);//gira a destra Wait(200); } dx++; 18

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE else if(dx < 2) { if (contcurvabrutta >= 2) { GiraDestraNoTime(50,70);//gira a destra Wait(450); PlayTone(800, 800); } else { GiraDestraNoTime(45,75);//gira a destra } dx++; } FIG 9.1: SEGUI-LINEA esatta. Nelle curve a 90 (fig 9.1) è stata introdotta una rotazione sul posto del robot in modo tale che non esca dalla linea. E' stato possibile riconoscere le curve a 90 grazie al fatto che uno dei sensori di luce si posiziona al centro della linea rilevando così un valore molto basso, e in corrispondenza di quest'ultimo viene effettuata la rotazione Function schivaostacolo Possiamo dividere la funzione schivaostacolo in due blocchi diversi. 1. Il primo blocco di algoritmo viene avviato nel momento in cui il robot ha la destra libera, quindi non c è il muro. Questo è possibile determinarlo grazie al sensore ad ultrasuoni presente al lato destro. Il funzionamento di questo blocco è il seguente: il robottino gira a sinistra fino a che il sensore laterale individua l ostacolo. Una volta trovato procede a tratti di circa 500ms verso sinistra controllando ogni volta la presenza o meno dell oggetto e memorizzando i valori letti. 19

Una volta uscito dalla sagoma con il sensore laterale, individua la distanza minore tra le misure lette e la ricerca ruotando verso destra. Una volta trovata il robottino è pressochè parallelo all oggetto e in questo modo risulta facile il superamento, facendo uscire il robottino dalla sagoma in retromarcia e seguendo l ostacolo per tutta la sua lunghezza con il sensore laterale. Una volta che è stato superato torna al segui linea. Per una maggiore chiarezza riportiamo un pezzo di codice: do { GiraSinistra(50,50,100); Off(OUT_AB); Wait(500); dist[c]=sensorus(in_3); c++; If(SensorUS(IN_3)>30) trov=false; } while(trov) int m=500; for(int i=0;i<arraylen(dist);i++) { if(dist[i]<m && dist[i]!= 0) m=dist[i]; } Come è possibile notare nel codice riportato vengono eseguiti dei piccolo controlli per la presenza dell ostacolo e successivamente viene determinate il più piccolo tra questi valori. 2. Il secondo blocco invece viene eseguiti quando alla destra del robottino è presente il muro. Il procedimento è il seguente: il robottino si gira a sinistra di 90. Procede diritto fino a che non esce dallo spessore dell oggetto, letto grazie al sensore laterale. Si mette parallelo all ostacolo e procede in avanti fino a che non esce dalla lunghezza stessa dell oggetto, infine procede con il segui-linea. 20

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Function prendi lattina La funzione prendi lattina è strutturata fondamentalmente in 3 parti: la prima parte è dedicata alla ricerca avanzando diritto quando il robottino è entrato dalla porta attraverso il sensore laterale. In questa fase esso avanza fino a che non rileva un oggetto alla sua destra con una distanza che viene fissata dal programmatore prima dell inizio della gara. Contemporaneamente viene effettuata la ricerca frontale. Nel momeno in cui il robbotino rileva l oggetto attraverso il sensore laterale si ferma e gira in modo grossolano verso destra in modo proporzionale alla distanza del rilevamento stesso. Quindi più è vicino l oggetto meno il robottino girerà e avanzerà, al contrario quando l oggetto è molto distante. La seconda fase consiste semplicemente nel girare verso destra fino a che il robottino non rileva l oggetto con il sensore frontale. Infine c è la ricerca in modo preciso dell oggetto. Quindi, una volta posizionatosi in modo grossolano verso la lattina, viene effettuato un posizionamento frontale molto più preciso. Esso è costruito nel seguente modo: fino a che il robottino non è ad una distanza da l oggetto di meno di 10cm gira a destra di 30ms e avanza. E presente un contatore per determinare il numero di controlli a destra, se quest ultimo risulta troppo elevato viene azzerato e si iniziano ad effettuare controlli a sinistra. Quando la distanza tra il robottino e la lattina raggiunge la misura fissata esso gira di poco verso destra per essere sicuro di essere perfettamente frontale e indietreggia per poi avanzare fino a che non raggiunge una certa distanza con la lattina e infine indietreggia, abbassa il braccio e la afferra. Questo ultimo passaggio viene effettuato per avere una certa sicurezza circa la distanza tra la lattina e il robottino in modo tale da andare ad evitare errori che sono causati dalla distanza tra i due. 21

Di seguito viene riportato un piccolo pezzo di codice nel quale vengono effettuati i controlli in modo preciso per la posizione della lattina. while(sensorus(in_2) > distanzaoggetto+15) { if (cont < n_prove) GiraSinistra(velOggetto, veloggetto, 30); else if (cont > n_prove) GiraDestra(velOggetto, veloggetto, 30); else if (cont > n_prove*2+10) cont = 0; cont++; } if (SensorUS(IN_2) < 12) { Fermo(1500); PlayTone(1000, 300); trovato = true; } 22

ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 10 SORGENTE DI ALIMENTAZIONE FIG 10.1-BATTERIA RICARICABILE La batteria è al litio e ricaricabile. E una batteria da 2100 mah e possiede una presa per alimentazione esterna. Richiede il trasformatore 8887 da 10V DC per la ricarica. 23

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