230 likes | 381 Views
Nipi. Mini Robot Percezione robotica 05-06. Daniele Mazzei. Obbiettivi del progetto. Realizzazione di un minirobot utilizzando componenti elettronici di base. Apprendere i sistemi di programmazione e controllo dei microcontrollori
E N D
Nipi Mini Robot Percezione robotica 05-06 Daniele Mazzei
Obbiettivi del progetto • Realizzazione di un minirobot utilizzando componenti elettronici di base. • Apprendere i sistemi di programmazione e controllo dei microcontrollori • Scrittura di un software di gestione del comportamento reattivo che possa funzionare su un PIC. • Realizzazione di sensori per robot
Il comportamento • L’idea è di realizzare un robot con comportamento bio-ispirato • Alcuni insetti volano in modo apparentemente casuale fino a che non sentono il bisogno di nutrirsi o di riprodursi • Iniziano quindi a seguire le tracce di odoranti per trovare una fonte di nutrimento o un partner (feromoni) • Durante il loro moto devono evitare ostacoli
Il Robot • Struttura in materiale plastico. • Gruppo meccanico di riduzione preassemblato • Elettronica costruita su una board “millefori” sagomata • Ruote in gomma modello “Lego Mindstorm”
I Sensori I sensori sono collegati ai convertitori analogico digitale del PIC che leggono con una risoluzione di 10 Bit e accettano ingresso tensioni variabili tra 0 e Vdd
I Motori • I 2 motori vengono controllati mediante un ponte H • I due segnali PWM vengono inviati come “Enable” del ponte • Vengono utilizzati 4 pin digitali del pic per controllare il verso di rotazione dei motori.
La porta seriale • Grazie alla presenza della porta seriale risulta notevolmente più semplice la fase di debug del software • E’ possibile il download del software sul PIC direttamente dalla seriale senza dover togliere il micocontrollore dallo zoccolo • Il segnale della porta seriale è stato adattato alla standard RS232 mediante l’utilizzo dell’integrato MAX232
Il software • Il software è scritto in Basic mediante l’ambiente di sviluppo MicroBasic della Mikroelettronica. • Con l’ausilio della libreria fornita dal software sono state scritte le varie funzioni di controllo dei PWM e di lettura degli ADC • Il software è concepito come una macchina a stati finiti • Le interazioni con l’ambiente comportano i passaggi da uno stato all’altro
Il software • Per simulare correttamente il comportamento di un insetto è necessario inserire un altro stato (Stato “5”) • Quando la batteria scende sotto una soglia prefissata il robot passa dalla modalità random a quella inseguimento luce (Stato “4”) • Smette di cercare la luce quando la batteria scende sotto una seconda soglia e si ferma per ricaricarsi mediante la cella fotovoltaica (Stato “5”) • Quando la batteria torna sopra un valore prefissato ricomincia l’andamento random (sato “o”)
Il software • Nel Main vengono chiamate le varie funzioni di inizializzazione del controllore e di configurazione delle porte • Mediante uno “switch” viene analizzata la variabile “State” che indica lo stato di lavoro • All’avvio il robot parte nello stato “0”, muovendosi random e controllando gli ostacoli • Le funzioni di rilevamento ostacoli hanno diritto di cambiare il valore della variabile globale “State” • Al giro successivo del main se la variabile “State” è diversa da “0” si attua la strategia di evitamento prescelta
Evitamento ostacoli • Le funzioni “Collision_Detection” e “Obstacle_Avoidance” vengono chiamate dal Main nello stato “0” • Se viene rilevato un contatto lo stato viene cambiato da “0” a: Stato 1 -> Contatto a Sx Stato 2 -> Contatto a Dx Stato 3 -> Contatto frontale o mancanza suolo Al successivo giro del Main si entra nella strategia di evitamento dipendente dallo stato
Randoom • E’ stata realizzata una funzione in grado di generare numeri random: X=mod{(a*Timer),P} Dove: X = numero random generato a = costante Timer = Valore del clock P = Numero primo a scelta Mod{a,b} restituisce il resto della divisone intera fra a e b
Inseguimento luce • I sensori di luminosità restituiscono valori fra 50 e 200 (200 -> buio, 50 -> max luce) • I motori accettano in ingresso valori di velocità (Duty cicle PWM) fra 50 e 150 • Il livello di luminosità viene quindi inviato al motore corrispondente limitandolo ad un max di 150 • Essendo inverso l’andamento dei sensori di luminosità si ottiene un fenomeno di inseguimento senza dover incrociare le connessioni
I Test • Evitamento ostacoli. • Il robot è stato programmato per evitare ostacoli rilevati dai sensori di contatto a switch o dal senore IR frontale • E’ stata disattivata la funzione di andamento random per facilitare la ripresa
Avvicinamento alla luce • Il test è stato condotto in ambiente buio, ponendo una torcia in un angolo
Fuga dalla luce • Il software è stato modificato per invertire il comportamento del robot • Ogni sensore di luminosità influenza il motore opposto
Risultati • Il robot si è rivelato essere un ottimo strumento di apprendimento per le problematiche relative all’assemblaggio di componenti elettronici di base • E’ stato possibile implementare con un solo PIC numerose funzioni tipiche dei comportamenti reattivi della robotica • I test hanno dimostrato come il robot sia in grado di seguire la luce ed evitare ostacoli • La realizzazione delle varie funzioni ha permesso al robot di avere un comportamento simile ad un insetto
Pro • Il robot si è rilevato essere uno strumento funzionale a bassissimo costo per lo studio dell’elettronica, dei microcontrollori e della programmazione di minirobot • La realizzazione di robot non in Kit permette una continua evoluzione dell’architettura ed infinite possibilità di utilizzo • La presenza della porta seriale funzionante non solo per il download del software è una caratteristica che spesso non è presente sui robot in Kit • Grazie alla presenza del caricabatterie integrato il robot si ricarica con qualsiasi tensione in ingresso compresa fra 7 e 14 Volt
Contro • La programmazione dei PIC si è rilevata essere di livello non abbastanza alto per essere utilizzata come controllore principale di un robot • L’utilizzo delle fotoresistenze come rilevatori di luce in configurazione a partitore di tensione si è rilevata essere una soluzione troppo semplificata • La realizzazione della scheda elettronica su board millefori ha comportato numerosi problemi di falso-contatto durante la fase di test
Sviluppi futuri • Realizzazione di un PCB dell’architettura elettronica definitiva • Sostituzione delle fotoresistenze con fototransistor e mosfet di condizionamento segnale • Scrittura del codice in C • Implementazione di uno Heap al fine di gestire in modo parallelo i vari task previsti dal comportamento reattivo del robot • Inserimento di una connessione wireless per debug senza fili • Collegamento della cella fotovoltaica per la ricarica solare