Rete di scuole per la
ROBOCUP JR ITALIA
ROBOCUP JR
ITALIA 2012
Riva del Garda (TN)
19-21 aprile
REPORT DI DOCUMENTAZIONE
Della squadra Domese RC
Istituto IIS Marconi Galletti
Domodossola
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
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 ed alla
collaborazione tra istituti scolastici, elementi che motivano
docenti e studenti all’impegno nell’innovazione, sia didattica
sia 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 ed informativo ai partecipanti;
3
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.
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, ed 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 – si occupa dell’edizione annuale della
manifestazione, ed è formato a cura dell’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.
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Autori
Di Mare Gabriele, Olzeri
Ivan, Sartori Andrea,
Simona Marco
DOMESE RC
PARTECIPA ALLA GARA DI
SOCCER OPEN
Istituto IIS Marconi Galletti
Classe 5° Elettronica e
Telecomunicazioni
5
CAP. 1 - DATI GENERALI
La squadra Domese RC è composta dai seguenti membri :
-
Sartori Andrea (Capitano)
Olzeri Ivan
Gabriele Di Mare
Simona Marco
Studenti dell' I.I.S Marconi – Galletti , provenienti dalla classe
quinta della sezione di Elettronica e Telecomunicazioni.
Un grande aiuto morale, tecnico e pratico agli alunni è stato
fornito dai docenti Proff. Raimondo Sgrò (responsabile del
progetto) e Flavio Poletti, che hanno spinto i ragazzi ad
appassionarsi a queste competizioni e sono riusciti insieme
agli studenti di quest'anno e degli anni scorsi a migliorare la
qualità dei Robot partecipanti.
Si è deciso di presentarsi alla competizione con il nome di
Domese RC, volendo mantenere lo spirito di continuità con le
scorse edizioni del 2009 2010 e 2011.
CAP. 2 - DATI DI CONTESTO E MOTIVAZIONE
La Robocup è stata presentata dal nostro Prof. di T.D.P
(Tecnologia Disegno e Progettazione) Raimondo Sgrò.
Il cambio generazionale ha fatto sì che quest'anno toccasse a
noi, studenti frequentanti il 5° anno di elettronica, portare
avanti questa esperienza dei robot auto costruiti.
La partecipazione a questa categoria richiede molto tempo,
oltre che una certa spesa economica. Nel nostro caso
abbiamo ereditato un progetto ben consolidato e rafforzato
dal successo della scorsa edizione e dai buoni piazzamenti di
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
quelle precedenti. Tuttavia abbiamo dato tutto il nostro
apporto per le modifiche ed i miglioramenti introdotti.
Due allievi avevano già preso parte lo scorso anno alla
competizione nella categoria “soccer light” , e quindi hanno
rinnovato l'interesse e la curiosità del cambio di categoria,
sostenendo a pieno l'idea lanciata dal Prof. Sgrò. La nota di
spicco è che si sono aggiunti due nuovi studenti, attirati dai
racconti positivi degli altri. E' bello coinvolgere più ragazzi e
formare un gruppo di lavoro più ampio, poiché si riesce
meglio a suddividere le mansioni.
Ad inizio anno abbiamo riscontrato qualche difficoltà sul
nuovo linguaggio di programmazione (“assembly”), ma
procedendo in parallelo fra gli studi affrontati in classe e
quelli svolti durante l'attività extrascolastica, siamo riusciti ad
integrare il tutto, migliorando sia il programma del robot sia
le nostre conoscenze.
I primi ostacoli sono stati superati anche grazie all'aiuto e alla
disponibilità del Prof. e dell'Assistente Tecnico Poletti.
CAP. 3 – NOME E STRUTTURA DEL ROBOT
I due robot si chiamano Mark1 e Mark2, si è deciso i
mantenere i loro nomi anche per questa edizione, in onore
del nostro Istituto. Rispetto alle passate edizioni sono state
apportate numerose modifiche, alcune delle quali dettate
dalla necessità di adeguarsi al Regolamento Internazionale del
2012.
Il robot si compone di diverse parti.
Il “cervello” del robot è la scheda madre basata sul
microcontrollore della Microchip PIC 18F4321 sostituita
rispetto alla precedente che montava 16F876A. Attraverso la
scheda madre è possibile interagire manualmente con il
funzionamento del robot, infatti è possibile resettare il
programma, commutare attraverso uno switch il suo ruolo
7
(attacco/difesa), azionare il programma di taratura della
bussola ed ovviamente, spegnerlo ed accenderlo. Il
caricamento del programma avviene tramite il collegamento
ICSP, che consente la programmazione on board del
dispositivo, mediante un apposito programmatore.
La scheda madre durante il normale funzionamento andrà
sempre ad interagire con le periferiche di I/O leggendo quelle
in ingresso, al fine di rilevare informazioni utili per il
successivo movimento della macchina (lettura sensori),
oppure azionando quelle di uscita per compiere determinate
azioni (lettura sensori ostacoli , azionamento motori).
La scheda madre per questa edizione è stata ridisegnata,
siamo attualmente alla versione 2.1. Rispetto alle precedenti
versioni, oltre alla sostituzione del microcontrollore, sono
state integrate alcune circuiterie che si trovavano, esterne, su
una scheda ausiliaria, come pulsanti, led, potenziometri di
regolazione ecc.
Le periferiche in ingresso sono le seguenti:
- Schede di rilevamento Infrarosso
- Sensori di contatto
- Sensori ultrasuoni
- Sensore di campo magnetico (bussola).
La scheda degli infrarossi è nuova, costruita in tecnologia
SMD, gestisce dodici sensori, (mentre quella precedente ne
gestiva solo otto) , quindi è stato incrementato il numero di
canali con conseguente miglioramento dei movimenti del
robot durante la ricerca della palla. Questa interagisce con il
microcontrollore tramite una rete di condizionamento (Tone
Decoder) e pone le informazioni su un bus dedicato di dodici
bit digitali. Questa scheda è stata costruita da un allievo della
classe che ha partecipato allo stage formativo in itinere
presso un'azienda del luogo che produce circuiti stampati.
E’ stata mantenuta una scheda IR con un singolo sensore per
rilevare la prossimità della palla nella parte frontale del robot,
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
per poter azionare diversamente i motori ed il rullo di cattura.
Queste schede sono di progettazione e realizzazione
dell’Istituto. Il robot è munito di un sensore di contatto
necessario al fine di rilevare l’avvenuta cattura della palla e
comunicare con il microcontrollore attraverso un pin
dedicato.
Vi sono poi i sensori ad ultrasuono, acquistati separatamente,
così come la bussola. Questi comunicano con il
microcontrollore tramite un protocollo I2C, impiegando il
relativo BUS.
Le periferiche in uscita sono:
- motori di trazione
- rullo di cattura
- stantuffo di lancio
E’ stata inoltre realizzata una scheda per la gestione della
carica delle batterie.
I due motori di trazione sono pilotati dal microcontrollore
tramite un'interfaccia di potenza munita di regolazione della
velocità mediante PWM. I PCB dei ponti che controllavano
l'azionamento dei motori sono di recente costruzione e
anch'essi migliorati. Infatti, i motori sono stati sostituiti da
motori con una minore riduzione, caratterizzati da una
maggiore velocità. Ciò ha portato ad un incremento della
frequenza del PWM generato dal PIC. Questo ha consentito
l’aumento della frequenza dell’oscillatore a bordo. Ora la
scheda madre monta un oscillatore a 4MHz , mentre prima
era limitato dalla frequenza del PWM dei motori e montava
solo un quarzo a 1Mhz.
Per controllare questi motori sono necessarie quattro uscite
digitali, più il comando PWM. Nella nuova scheda di controllo
è stato poi introdotto un controllo addizionale di arresto, per
frenare i motori, evitando il rotolamento dovuto all’inerzia.
9
Il Regolamento 2012 ha portato la modifica del nostro
potente sistema di lancio. Infatti prima si impiegava un
booster che erogava una tensione di oltre 70V, che azionava
una bobina usata per effettuare il lancio. Ma essendo
quest'anno vietate le pompe di carica e limitate le tensioni a
bordo, abbiamo dovuto adattarci ad una semplice scarica di
tensione sulla bobina di lancio.
L’azionamento avviene attraverso un transistor controllato da
un’uscita digitale del microcontrollore. Il rullo per la cattura
della palla si compone di un motore in continua controllato
da un transistor. Anche questo blocco viene controllato da
un’uscita digitale del microcontrollore.
La scheda della carica delle batterie non interagisce con
l'unità centrale ma è un accessorio da noi progettato e
realizzato quest’anno che ci permette tramite dei led di
controllare la tensione d'alimentazione e di non trovarsi
quindi con le batterie scariche.
Schema a Blocchi della parte elettronica del robot: sono evidenziate le
periferiche di ingresso ed uscita, la struttura generale rimane invariata
rispetto la passata edizione, ma molti blocchi sono stati riprogettati.
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
CAP. 4 – MECCANICA
La struttura portante del robot auto costruito è basata su due
dischi di bachelite fresata, uniti fra di loro da tre colonnine di
alluminio. Questo telaio permette la divisione del robot in tre
piani.
Nel piano superiore è collocata la scheda madre con la
relativa batteria di alimentazione e la bussola.
Al piano centrale sono situate le alimentazioni dei motori, le
schede relative all'interfaccia di potenza dei motori e al
condizionamento dei sensori IR ed il sistema di cattura della
palla con la sua scheda di interfaccia.
Il piano inferiore invece è composto da due nuovi motori più
veloci e i sensori ad infrarosso che rispetto all'anno scorso
sono passati da otto a dodici.
Inoltre vi è anche la bobina che aziona lo stantuffo per il
lancio della palla e un ball caster che funge da galoppino e
segue le manovre impostate dalle ruote anteriori.
Uno dei problemi meccanici che abbiamo dovuto affrontare è
stato il contenimento del peso, infatti da quest’anno il limite
per la categoria open è di 2400g. Questa operazione è stata
facilitata dal fatto che il blocco del booster è stato
completamente rimosso. Inoltre alcuni distanziali in ottone
sono stati sostituiti con quelli in teflon.
Diverse parti del robot sono stati recuperati da vecchi
apparati, ad esempio i rulli di cattura da vecchie stampanti, i
motori dei rulli da videoregistratori, anche le ruote del Mrk1
sono rulli di stampanti.
I telai sono stati realizzati in bachelite, le colonnine in
alluminio, impiegando le disponibilità presenti in istituto.
Tutte le lavorazioni sono state svolte in istituto.
11
Primo piano del rullo di cattura (in alto), piano inferiore del robot in fase di
montaggio
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Disegni CAD in proiezione ortogonale della parte meccanica del robot
calciatore
13
CAP. 5 – UNITÀ DI CONTROLLO
L'unità di controllo dell'anno passato era la scheda madre
basata sul PIC 16F876A della Microchip.
Quest'anno invece si è optato per la sostituzione del vecchio
microcontrollore con il PIC 18F4321. Il modello utilizzato
dispone di quaranta pin, nei quali possiamo individuare
cinque port: A, B, C, D, E.
Oltre a questi ed alle alimentazioni Vss e Vdd, troviamo il pin
MCLR che può essere utilizzato come terminale di reset.
Inoltre troviamo i due pin OSC1 e OSC2 dedicati all’oscillatore
il quale è un quarzo da 4MHz.
L'uso del PIC 18F4321 ha permesso l'aumento del numero di
sensori permettendo così di individuare meglio la posizione
della palla, ma anche di aggiungere altri controlli come
pulsanti selettori e LED di segnalazione.
Sulla scheda madre è presente un regolatore di tensione tipo
7805 che fornisce l’alimentazione di 5V alle periferiche. A
bordo è inoltre presente il bus per la comunicazione I2C con
le relative resistenze di pull up, ed anche i terminali ICSP per
la programmazione a bordo del microcontrollore.
Anche questa scheda madre, come le precedenti, è stata
realizzata in istituto.
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Pin out della scheda madre, sono presenti ben 11 pin aggiuntivi rispetto la
versione precedente.
15
Schema elettrico della scheda madre
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Master della scheda madre con vista componenti
17
CAP. 6 – SENSORI
Abbiamo già elencato i sensori di cui il robot è munito,
vediamone una descrizione:
Il sensore bussola, scheda CMPS03 della Devantech, si basa
sul sensore di campo magnetico Philips KMZ51. E’ in grado di
fornire il dato relativo alla posizione attraverso un’uscita
PWM o attraverso il protocollo I2C. Come lo scorso anno,
abbiamo mantenuto la seconda soluzione poiché garantisce
una maggiore fedeltà grazie alla trasmissione digitale, inoltre
il BUS I2C può essere impiegato per più sensori, con
conseguente risparmio di pin di in-out. Quest'ultimo è un
protocollo seriale che impiega due linee: SDA, linea riservata
al trasferimento dei dati e SCL, linea del clock. Gli eventi che
avvengono sulla linea sono: START (avvia la trasmissione),
STOP (chiude la trasmissione), RESTART (Riavvia la
trasmissione).
Questo protocollo prevede che un dispositivo sia asservito
all'altro (Master-Slave): nel nostro caso il microcontrollore
sarà il master, mentre la bussola lo slave.
Il sensore ad ultrasuoni permette di evitare gli ostacoli nel
campo come per esempio, le pareti o altri robot presenti. Il
principio base è l’emissione di un impulso a 44KHz e la
relativa misurazione del tempo di riflessione, proporzionale
alla distanza da rilevare. Sul robot sono stati installati dei
sensori tipo SRF02 della Devantech, anche per questi sensori
è stato utilizzato il protocollo I2C per la comunicazione, in
questo caso, l’alternativa era la comunicazione seriale 232.
Fondamentali per la ricerca della palla sono i sensori ad
infrarossi, sul robot soccer sono disposti a cerchio dodici
sensori sulla base del primo disco in bachelite, i quali
recepiscono in ogni angolo del campo il segnale emesso dalla
palla e lo inviano alla scheda di decodifica. Come si è detto
questa scheda è stata realizzata quest’anno, migliorando la
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
precedente ad otto canali. Ad ogni sensore corrisponde un
angolo di rilevamento della palla.
Essendo il segnale emesso dalla palla modulato a 1,2KHZ su
una portante da 40KHz, c’è stata la necessità di utilizzare un
sistema di decodifica del segnale basato dell’integrato NE567.
Questo opera da rilevatore di frequenza, accordato sulla
frequenza della modulante.
Prima di essere decodificato, il segnale proveniente dagli IR
viene amplificato, e successivamente squadrato attraverso
dei comparatori a soglia singola.
Il circuito base del canale, rimane il medesimo ed è riportato
in figura.
La scheda dei sensori IR assemblata e pronta per il montaggio sul robot
19
Immagine CAD della scheda in fase di ingegnerizzazione
La scheda dei sensori IR montata sul robot
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Disposizione dei dodici sensori IR sul piano inferiore del robot
Serigrafia lato componendi della scheda sensori IR
21
Vcc
Vcc
Vcc
2
1
6
5
10nF
TL081
C2
100K
R2
C3
22nF 4.7nF
LFIL
OUT FIL
TC
TR
LM567
OUTPUT
8
R9
10K
R7
22k
2 +
C6
33nF
R3
Vcc
470K
R4
15K
R8
C5 R5
33nF 10K
10K
U3
7
3 4
1
6
PHOTODIODE
4
5
D1
INPUT
8
5
3
2 -
4
C1
6
+VCC
U2
GND
3 +
R6
22K
U1
7
7
1
R1
100K
J2
1
2
LM311
HEADER 2
Schema elettrico di un canale dei sensori IR
Vcc
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Per rilevare la cattura della palla, si utilizza una combinazione
di due sensori, un rivelatore infrarosso IR0, posto sul piano
superiore del robot, in maniera che possa individuare quando
la palla si trova nei pressi del robot, ed un sensore di
contatto, posto sotto il rullo, realizzato con un pulsante
normalmente chiuso con resistore di pull-up, il quale fornisce
un livello logico alto, se premuto.
Dettaglio sul sensore ad ultrasuoni frontale
CAP. 7 – ATTUATORI
I motori di trazione hanno una velocità massima di 295RPM,
contro i 175RPM dei precedenti, la tensione nominale è la
medesima, pari a 7,2V.
Sono controllati attraverso un’interfaccia di potenza a ponte
ad H. Esso è formato da quattro transistor MOS che
garantiscono la possibilità di inversione di marcia. Tale
interfaccia è stata riprogettata e migliorata, in quanto la
23
precedente limitava la frequenza del PWM (Pulse Width
Modulation) costringendo ad usare un clock di sistema
piuttosto lento.
Ad esempio, il PWM non è implementato mediante un quinto
MOSFET, ma viene applicato direttamente a due MOS del
ponte, mediante una porta logica AND, che combina il
segnale di direzione ed appunto il PWM. In questo modo,
l’interruzione del circuito risulta più veloce. Il principio del
PWM è illustrato nelle seguenti figure. In pratica, date le
levate frequenze di lavoro, l’attuatore risente esclusivamente
del valore medio del segnale.
Rappresentazione di un segnale con modulazione PWM con 3 differenti duty
cicle
Il vantaggio ottenuto da questa modulazione è il controllo del
carico con una diminuzione della potenza dissipata dai
transistor. Il ponte ad H ,o ponte intero, è una particolare
configurazione che permette di invertire la polarità della
tensione su un carico. I transistor lavorano a coppie ed
operano nella configurazione ad emettitore comune in
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
maniera da ottenere una tensione di saturazione Vds molto
bassa.
Per il lancio della palla si utilizza un elettromagnete composto
da 700 giri di rame smaltato di sezione 1mm2 che aziona uno
stantuffo mediante campo magnetico.
Lo stantuffo è realizzato in ferro per la parte terminale, ed in
alluminio per la parte iniziale. Quest’anno non è stato
possibile impiegare il sistema booster a pompa di carica,
poiché il regolamento 2012 limita a 15V le tensioni a bordo.
Abbiamo dovuto pertanto pilotare direttamente la bobina di
lancio con la batteria Lipo da 11.1V a disposizione.
Da un’analisi teorica condotta, è risultato che il campo
all’interno della bobina è proporzionale alla corrente e non
potendo salire con il livello di tensione, abbiamo ridotto il
valore ohmico della bobina, aumentando la sezione del rame,
e riducendo il numero di spire. La resistenza misurata risulta
pari a circa 1Ohm, per una corrente teorica di circa 11A. La
batteria Lipo dovrebbe essere in grado di erogare tale
corrente almeno per brevi istanti, risulta infatti dichiarata una
corrente di cortocircuito pari a venti volte la corrente
nominale. Per quanto riguarda il dispositivo di comando è
stato impiegato un MOS a canale N tipo IRF530,
caratterizzato da correnti di drain di oltre 15A. Date le elevate
correnti e la presenza dio un carico induttivo, si è impiegato
un diodo di ricircolo di tipo fast recovery, modello MR850.
25
1N4148
1N4148
4.7 K
R6
NPN
MOSFET N
R4
10 K
R7
0
R5
10 K
4
COMANDI
U1B
D3
D2
4081
MOSFET P
5
2
1
2
3
4
5
6
1
VDD
100 nF
MOTORE
4081
VDD
4.7 K
1N4148
1N4148
R1
R2
10 K
NPN
3
R3
10 K
MOSFET N
U1A
D4
D1
1
2
MOSFET P
14
Power motore
7
1
2
Power logica
1
2
Schema elettrico dell’interfaccia di controllo dei motori, ponte ad H
Per azionare il rullo di cattura si impiega un transistor che
opera in ON-OFF comandato dal relativo pin del
microcontrollore. Tale scheda non presenta particolari
problemi, pertanto si è scelto di usare un transistor
Darlington di potenza, modello BDX53.
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Master e serigrafia lato componenti dei nuovi ponti
27
2
VCC
MG1
D1
C1
MOTORE DC
100nF
1
1N4007
JP1
R1 5,6K
Q1
BDX53
2
1
Comando
Scheda di interfaccia per il rullo di cattura
VCC
D1
L1
Bobina
MR850
J1
Q1
IRF530
1
2
R1
10Kohm
Comando
Scheda di interfaccia per la bobina di lancio
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
CAP. 8 – AMBIENTE DI SVILUPPO
L'ambiente di sviluppo utilizzato è MP LAB IDE v.8.80 fornito
da Microchip, (produttore del microcontrollore PIC 18F4321
impiegato nel robot). Questo software permette sia la stesura
del programma in assembly, sia la simulazione, così da
agevolare la fase di debug. La scelta del linguaggio di
programmazione è ricaduta, da anni, sull' ASSEMBLEY. Ciò
perché si rende più facile il controllo a livello macchina, con
istruzioni ben mirate ed eseguite precisamente dal robot.
Una volta prodotto il codice macchina (file .HEX), questo
viene scritto nel micro attraverso un altro software gratuito,
WINPICPGM. L’interfaccia di programmazione sfrutta la porta
seriale, ed è stata anche questa realizzata in istituto.
Immagine della schermata di MPLAB v8.80
29
CAP. 9 – IL PROGRAMMA SOFTWARE
Il software creato è uguale per entrambi i robot, ed è stato
scritto in Assembley. Un altro vantaggio di aver impiegato un
dispositivo della famiglia 18F è quello di disporre di un set di
istruzione esteso, con conseguente facilitazione nella stesura
di alcune parti di programma.
Il diagramma di flusso descrive ad alto livello il funzionamento
generale del programma. Per prima cosa vengono definite
tutte le variabili e costanti utilizzate, vengono definiti i nomi
simbolici dei pin di I/O ed inoltre vengono le configurate le
periferiche come convertitore A/D, modulo PWM ed I2C.
Successivamente, seguendo il flusso del programma, se al
momento dell'accensione si preme il tasto di taratura, si entra
in una subroutine che: cerca il Nord magnetico, attiva i motori
e si mette in quella determinata posizione, questo a scopo di
debug e di test per la bussola.
Se non viene premuto nessun tasto invece si entra nella parte
principale. Viene memorizzata la prima lettura della bussola,
in modo da avere un riferimento per il tiro. In seguito, viene
letto lo stato del selettore di ruolo: se risulta posizionato su
DIFESA il robot rimane fermo finché non avverte la presenza
della palla, altrimenti se è posizionato su ATTACCO attiva i
motori e si dirige verso il centrocampo.
Ora vi è un ciclo di circa quaranta combinazioni, dove si
confronta lo stato dei dodici sensori IR con quelle che
abbiamo individuato come configurazioni ammesse. Nel
diagramma sono riportati solo una parte delle combinazioni,
ma nel programma sono presenti molti test che vanno ad
eliminare, tramite la funzione confronto diretto (tramite
l’istruzione CPFSEQ) quelle "non accettabili" che venivano a
crearsi in prossimità delle sponde del campo che riflettevano i
segnali inviati della palla in altre direzioni. Il risultato di ogni
confronto porta a un determinato movimento del robot,
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
viene quindi chiamata una subroutine dei motori in cui sono
definite velocità e direzione. Terminata l’analisi di tutte le
combinazioni si esegue un test sul FLAG PALLA, ovvero un bit
che indica se la palla è stata rilevata, allora non si esegue il
test sugli ultrasuoni, dando priorità alla cattura della palla e
viene attivato il rullo di cattura. In questo caso la velocità di
avanzamento viene ridotta per non allontanare la palla. Se
questa viene catturata, si esegue ancora il test sul sensore di
contatto, si attivo il FLAG PALLA , e si attivo il rullo di cattura,
le due condizioni di attivazione sono volutamente ridondanti.
Successivamente entro in un'altra subroutine chiamata
CERCANORD. Qui interrogo la bussola, e vado a ricercare il
valore memorizzato all'inizio del programma.
Si esegue anche un test mediante gli ultrasuoni laterali per
correggere la direzione di tiro, nel caso in cui il robot risulti
non centrato rispetto alla porta. Se tutte le condizioni sono
soddisfatte viene spento il rullo di cattura, così la palla non
ruota e si attiva subito la bobina di lancio. Viene quindi
spento il FLAG PALLA ed il tiro è stato compiuto.
Da qui il programma riprende ciclicamente il ciclo. La perdita
della palla causa l’uscita da questa subroutine ed il rientro nel
ciclo principale. All’interno di questo viene anche eseguito un
test sull’ultrasuono anteriore confrontando il valore con una
soglia. Se il dato è minore della soglia vengono chiamate le
subroutine di manovra, le stesse utilizzate nella ricerca palla,
al fine di evitare lo scontro con altri robot o con le pareti.
31
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Diagramma di flusso principale del programma del robot
33
Diagramma 2: Subroutine di manovra AVANTI, si noti la diversa
impostazione della velocità se ci si trova nei pressi della palla.
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Diagramma 3: Subroutine RILEVAPALLA, come si vede questa sub gestisce
un flag che tiene memoria del fatto che la palla è stata rilevata. Serve
principalmente per l’accensione del rullo di cattura.
35
Diagramma4: Subroutine CERCANORD in questa sub avviene la chiamata
alla bussola per orientarsi verso la porta ed effettuare il lancio.
Riportiamo di seguito un brano di programma commentato
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
CICLO
MOVF
MOVWF
MOVF
ANDLW
MOVWF
MOVLW
PORTB,W
IR
;Carico il PORTB nel registro di appoggio IR
PORTD,W
0XF0
;Maschero il nibble basso
IR2
;Carico il PORTD nel registro di appoggio IR2
b'11111110'
;Test su sensore IR 1
CPFSEQ
GOTO
MOVLW
CPFSEQ
GOTO
CALL
IR
TIR1
b'11110000' ;
IR2
TIR1
DX_PLUS_FAST
;Salta se sono uguali
;esce se diversi
MOVLW
CPFSEQ
GOTO
MOVLW
CPFSEQ
GOTO
CALL
b'11111100'
IR
TIR12
b'11110000'
IR2
TIR12
DX_PLUS_FAST
;Test su sensore IR 1&2
;Salta se sono uguali
;esce se diversi
MOVLW
CPFSEQ
GOTO
MOVLW
CPFSEQ
GOTO
CALL
b'11111100'
IR
TIR010212
b'01110000'
IR2
TIR010212
DX_PLUS_FAST
;Test su sensore IR 1 2 12
;Salta se sono uguali
;esce se diversi
TIR1
TIR12
TIR010212
………
Alte condizioni
……..
GOTO CICLO
Questa parte del programma rappresenta il ciclo principale, si
tratta di una serie di confronti tra lo stato attuale dei dodici
sensori e le configurazioni ammesse che portano alle varie
manovre. Per realizzare tale operazione è stata molto utile
l’istruzione CPFSEQ, esegue un confronto tra accumulatore e
registro e causa un salto in caso di uguaglianza. I sensori sono
attivi bassi, pertanto la presenza di uno zero indica che la
palla è stata rilevata da quel particolare sensore.
37
CAP. 10 – SORGENTE DI ALIMENTAZIONE
Il robot è equipaggiato con tre sorgenti differenti di
alimentazione:
- Pila ricaricabile da 8,4V 270mA/H tipo”transistor”:
fornisce l’alimentazione alla scheda madre, lo
stabilizzatore interno alla scheda provvede a fornire
l’alimentazione a 5V alle schede periferiche.
- Pacco da 7,2V formato da 6 pile ricaricabili tipo AA da
3000mA/h. Fornisce l’alimentazione ai ponti che
controllano i motori di trazione
- Pila LiPo da 11,1V 1800mA/h, fornisce l’alimentazione
al sistema di lancio ed al rullo di cattura.
La scelta di impiegare differenti fonti di alimentazione è
legata alle differenti esigenze degli attuatori, ed al fatto di
voler sparare l’alimentazione della logica di controllo da
quella della potenza al fine di ridurre i disturbi.
Per controllare lo stato di carica delle tre batterie è stata
realizzata una scheda, essenzialmente formata da tre
comparatori, che leggono la tensione attuale della batteria
confrontandola con una soglia. Se la tensione è al di sotto di
questa, il led relativo si spegne, indicando batteria scarica. E'
inoltre possibile misurare manualmente la tensione ai capi di
un connettore a vite senza dover aprire il robot, come da
richiesta del regolamento internazionale.
Alla base del funzionamento di questa scheda vi è l’integrato
MAX931. Si tratta di un comparatore munito di un riferimento
fisso in tensione, questo è importante se si vuole determinare
con precisione lo stato della tensione delle batterie. La scheda
può controllare tre differenti sorgenti si alimentazione, il
livello di soglia di intervento dei LED è regolabile mediante un
apposito trimmer multigiro.
8V
1N4148
7
6
J2
J1
D1
3
4
U4
+
R7
1K
8
-
MAX931
D2
OUT aux 8 V
LED 8 V
2
1
5
1
2
12 V
R8
2.2K
R2 100K
J3
D3
8
5
12 V
OUT 12V
SW2
2
1
3
LED 12 V
U2
+
7
LM311
4
1
6
1
2
2
RV2 50K
IN 12 V
J5
J4
+ BATT
OUT aux 12 V
D4
8
5
1
2
R9
1.5K
R3 100K
12 V
+ BATT
IN BATT
1
2
3
LED BATTERIE
U3
+
7
LM311
R10
100K
4
1
6
J6
J7
2
RV3 50K
39
Schema elettrico della scheda di controllo di carica delle batterie
2
1
1
2
RV1 50K
OUT 8 V
SW1
IN 8 V
8V
R1 100K
8V
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
8V
APPENDICE: FOTOGALLERY
Alcuni dettagli dei robot, dal’alto a sinistra: vista sulle schede ci cattura e di
lancio, schede dei ponti, in basso la scheda madre.
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Il robot cablato con il piano superiore aperto
41
Vista inferiore del robot, si notano la bobina di lancio, i motori, il ballcaster
ed i blocchetti che ospitano i fotodiodi IR
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
Il prototipo Mark1 ultimato
43
Il prototipo Mark2 ultimato
ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile
REPORT DI DOCUMENTAZIONE
La squadra Domese RC, da sinistra: Gabriele Di Mare, Andrea Sartori, Marco
Simona ed Ivan Olzeri.
45
INDICE
P.6 - CAP. 1 - DATI GENERALI
P.6 - CAP. 2 - DATI DI CONTESTO E
MOTIVAZIONE
P.7 - CAP. 3 - NOME E STRUTTURA DEL
ROBOT
P.11 - CAP. 4 - MECCANICA
P.14 - CAP. 5 - UNITÀ DI CONTROLLO
P.18 - CAP. 6 - SENSORI
P.23 - CAP. 7 - ATTUATORI
P.29 - CAP. 8 - AMBIENTE DI SVILUPPO
P.30 - CAP. 9 - IL PROGRAMMA
SOFTWARE
P.38 - CAP. 10 - SORGENTE DI
ALIMENTAZIONE
P.40 - APPENDICE - FOTOGALLERY