FirstBot Project

> First Bot Project
> Studio teorico/pratico

> | <--Indietro | Inizio | Avanti--> |

> Sabato 27-7-2002
> Ricapitolando...

> Dopo questa lunga pausa ho ripreso in mano l'explorer... non senza perplessita', visto che naturalmente non avevo lasciato nessun appunto oltre queste pagine, e anche i programmi di prova erano interrotti a meta'... il punto della situazione e' questo: abbiamo una base mobile circondata da 7 sensori a raggi infrarossi. Per misurare la distanza si emettono treni di impulsi a 38kHz modulati in ampiezza (PAM) e si memorizza a quale livello di emissione viene rilevato un ostacolo (sembra banale ma la rilevazione e' tutt'altro che precisa e stabile). Dovro' prevedere a un certo punto anche una routine di calibrazione dei sensori per adattarli alla riflettivita' delle pareti del campo di gara, non dimentichiamo infatti che questo bot e' pensato per funzionare esclusivamente in quel campo (di cui a lato c'e' una foto scattata il gennaio scorso, gli ostacoli vengono naturalmente spostati ogni anno).

> Il ranging e' un'attivita' che porta via moltissimo tempo, con il sistema che ho adottato (due treni di impulsi per ogni livello seguiti da due pause) una misura completa richiederebbe circa 77mS, questo vuol dire un massimo di 12 misure al secondo... questo se il PIC non dovesse fare altro. Per comodita' ho pensato di tenere in memoria una tabella di 7 bytes con il risultato dell'ultima misurazione (il bot sentira' il mondo esterno leggendo questa tabella) e rendere la misura un processo da portare avanti un poco per volta, in pratica il task di ranging va chiamato un certo numero di volte prima di avere la misura completa, ogni chiamata dura circa 2,5mS ed emette solo i due treni di impulsi PAM del livello di misura attuale.

> Foto di alcuni avversari... il primo e' un triprocessore che naviga con 8 fasci di ultrasuoni... di solito vince lui (o il fratello dotato anche di telecamera...). Il secondo e' stato costruito da una studentessa dell'istituto e segnala i bersagli con un sintetizzatore vocale, il terzo appartiene alla categoria junior (rileva solo le luci), gli altri sono costruiti da membri della mailing list Roboteck, l'ultimo non so di chi sia, nella prova che ho visto faceva fatica a riconoscere i bersagli, pero' si muoveva velocissimo in mezzo agli ostacoli sfiorandoli senza toccarli, mi ha impressionato...

> Martedi' 6-8-2002
> La bussola.

> Un ausilio indispensabile per la navigazione e' la bussola, con questo componente il bot e' sempre in grado di capire verso quale direzione e' rivolto e, per esempio, riprendere la direzione di marcia dopo aver evitato e aggirato un ostacolo, o dopo averlo esplorato. Questo per me e' importante perche' essendo il mio bot una lumachina devo puntare piu' sulla strategia che sulla velocita', ci sono solo 3 minuti di tempo e sarebbe bene evitare di ripassare negli stessi posti... Per evitare il piu' possibile l'influenza delle parti magnetiche del bot, la bussola l'ho montata su una torretta al limite dell'altezza prevista dal regolamento (ho un margine di ben 4mm:))) I montanti di questa torretta serviranno anche a sostenere fotoresistenze, microfoni e led indicatori.

> La bussola elettronica e' un modulo premontato siglato CMPS01 (www.robot-electronics.co.uk/htm/cmpsdoc.shtml), e' interamente allo stato solido e permette di leggere l'angolo attraverso un bus I2C, sia in formato grezzo (un byte da 0 a 255), sia in un formato piu'preciso a 16 bit, nel mio caso il primo formato e' piu' che sufficiente (una cosa curiosa e' che il valore 255 non riesco mai ad ottenerlo, da 254 passa subito a 0 e viceversa). Il PIC 16F877 dispone internamente dell'hardware necessario per gestire un bus I2C, ma ho preferito lavorare completamente a software (usando tre pin di I/O qualsiasi invece dei due previsti). I pin usati sono quelli della porta E. RE0 e RE1 sono uscite, RE2 e' un ingresso. I diodi servono per trasformare le uscite push-pull del pic in simil open collector, in pratica possono solo assorbire corrente dal bus ma non fornirla. Sull'ingresso ho messo per sicurezza una resistenza da 330ohm in modo da non rischiare conflitti sulla linea SDA se inavvertitamente RE2 dovesse trasformarsi in un'uscita. Il pulsante serve per la calibrazione della bussola come descritto nella sua documentazione. Piu'sotto c'e' il diagramma del dialogo tra PIC e CMPS01 (linea dati SDA in alto, linea clock SCK in basso), dopo ogni byte inviato e' necessario inserire una pausa di circa 50..60microsecondi. Il primo byte letto e' quello che ci interessa.

> | Il programma in fase di sviluppo: explor1.asm (15K)

> ....a pezzi... | La nuova torretta portasensori. | Il software di debug con implementata la bussola, ruotando il bot ruota l'indicatore centrale.

> | <--Indietro | Inizio | Avanti--> |

> Pagina, disegni e foto realizzati da Claudio Fin - Ultimo aggiornamento 13-8-2002