Progetto Artificial Intelligence  

 

 

Università degli studi di Messina

 

 

 

 Robybot

 

 

 

                                        realizzato da:  Alessandro Gemma

                                                                                Valentina Ientile

3 luglio 2002

a.a.2001/2002

 

 


 

PROGETTAZIONE

La prima fase del nostro progetto ci ha visti impegnati nella costruzione del robot :

1. Due motori collegati a due ruote anteriori

2. Una ruota posteriore che ruota attorno ad un asse

3. Un sensore di contatto annesso a due baffi posti nella parte anteriore del robot

4. Un motore per il braccio costruito per trascinare gli oggetti

5. Un sensore di luce    

in più una piccolissima parte estetica, infatti Robybot ha anche 2 occhietti neri e due antenne.

 

 

Scelta dell'ambiente e programmazione

 

Dopo aver sogliato e controllato che i sensori funzionassero e che il firmware fosse stato caricato correttamente

 nell'  RCX  abbiamo deciso in quale ambiente avrebbe dovuto lavorare il nostro robot prendendo spunto da

 Braccobaldo.

Robybot  si muove su un percorso contrassegnato da una linea nera di nastro isolante su un piano di colore

 bianco. Il percorso è intervallato da 6 stazioni di carta di alluminio rilevate dal sensore luminoso.

Attraverso un beacon seriale carichiamo i file delivery. nqc e delivery. pl  nell'RCX e  facciamo partire  il  run

 (premendo un pulsante verde posto sopra l'RCX).

Il robot parte dalla stazione n.2 con direzione (-1),ovvero guardando alla stazione precedente , giunge alla n.1  

 si  porta in direzione (1) e attende istruzioni. A questo punto attraverso un' interfaccia    comunichiamo con

 Robybot indicando una stazione del percorso dove troverà l'oggetto da caricare e la stazione dove dovrà

  scaricarlo secondo il comando  +(n,m).

Una volta effettuate queste operazioni Robybot tornerà alla home ovvero la stazione n.1.

 

dettagli

 

Per programmare il robot abbiamo lavorato su Linux utilizzando i sorgenti delivery.nqc e delivery.pl  (versione 

 3 ) di Braccobaldo.

Il sorgente delivery.nqc contiene funzioni scritte in linguaggio c che permettono al robot di aprire e chiudere il

 braccio di azionare i motori per andare avanti o indietro , e delle macro che assumono i  valori di sogliatura dei

 sensori  e valori di riferimento utilizzati all'interno delle funzioni.

Per il nostro robot abbiamo usato le funzioni di pickup() e putdown()  che servono rispettivamente per caricare

 l'oggetto e per scaricarlo.Poi vi è l'in_front_of_object () utile per posizionare l'agente di fronte all'oggetto,

 abbiamo eliminato la mypanic() poiché recava problemi al nostro  robot       aggiungendo una funzione

 touch() che definisce il funzionamento del baffo anteriore ovvero quando esso urta un ostacolo  sulla pista il

  Robybot và un pò indietro e cerca di rilevare la pista libera. Nel delivery.pl  abbiamo modificato alcune azioni

 esogene e le causes adattandole al nostro percorso e a  Robybot.

 

Problemi

Quando abbiamo iniziato a programmare il nostro agente avevamo inserito un altro sensore di contatto che

 avrebbe dovuto "riconoscere " l'oggetto da caricare e cosi' siamo andati a modificare il sorgente nqc

 modificando la pickup() ma entrava in un loop infinito che "inebetiva" Robybot. Essendoci rimasto poco tempo

per terminare il progetto abbiamo dovuto rinunciare al secondo sensore. 

Abbiamo avuto problemi anche con le batterie comprendendo che per una buona riuscita avrebbero dovuto

essere sempre cariche!!!!!!!!

Il beacon

 La Lego ci ha fornito un beacon USB ma con esso si puo' solo programmare in Nqc, cosi' abbiamo

 dovuto richiedere  un beacon  seriale poichè il nostro progetto si basava anche su una parte in Prolog.

Sulla questione del  beacon USB ed in generale sulla programmazione Lego vi sono dei riferimenti nel sito

 fornito da M.Pagnucco: 

http://legousb.sourceforge.net/legousbtower/index.shtml .

 


Ringraziamenti

 

Vogliamo ringraziare Franco Salvetti per la sua disponibilità e i suoi consigli , il Prof. Alessandro Provetti che ci

ha permesso di realizzare questo progetto e poi un piccolo ringraziamento alla nostra amica Roberta Maisano

 che è stata la nostra mascotte .