Session: Onsdag 23/01-08 kl. 12-16
Deltagere: Elvar, Ebbe, Henrik
1: Konklusion.
1: Konklusion.
I vores arbejde med lejos har vi igennem vores forsøg fundet frem til visse fordele og ulemper med tacho counteren. I projektet var det oprindeligt planen at forsøge at løse nogle af opgaver fra first lego league i Mars eksperimentet, men da det viste sig at være meget besværligt blot at navigerer på pladen, blev vi da enige om at koncentrere projektet omkring navigering på mars plade, for at se om vi kunne komme frem til en fornuftig løsning, eller i det mindste prøve forskellige metoder, og se hvad resultatet blev.
Vi besluttede at bruge tacho counteren til at navigere på Mars pladen. Vi ville se om det var muligt at komme frem til en fornuftig løsning, som kunne navigere rundt på Mars pladen uden alt for stor afvigelse. Dette viste sig igennem nogle indledende forsøg at være ret besværligt. For det første fandt vi frem til at robotten skulle være perfekt afbalanceret for at opnå de bedste resultater, og dette betød blandt andet at vi var nødt til at afmontere den robot arm vi havde bygget, som vi egentlig skulle have brugt til, at løse opgaverne med. Og det var så der vi besluttede os for helt at udelade løsning af opgaverne på selve pladen.
Vores løsning til navigering bestod af at bruge den naturlige inddeling af grids på spillepladen (Se tidligere billede). Vi registrerede vi de tykke sorte streger til at finde ud af positionen i henhold til X-aksen. Dette virkede rimelig præcist og vi kunne successfuldt holde styr på vores position i den retning.
Der opstod dog problemer når vi prøvede at registrere de tyndere streger der går på tværs af spillepladen. Dette kunne simpelthen ikke lade sig gøre, da spillepladen også består af sorte kratere, der gør det umuligt at skelne. Derfor blev vi tvunget til at bruge tachocounteren til at holde styr på vores position i Y-aksen.
Da vi hurtigt kunne konkludere at den var ekstremt upræcis i den forstand at hvis man fortæller den at den skal dreje 90grader, kan det betyde alt fra 80-100 i praksis. En ting som bl.a. bla blba bla også fortæller om i sin bog: Maximum Lego NXT: Building robots with Java brains. En af de ting vi indførte for at modvirke dette, var vores referencepunkter på pladen. Disse virkede ved at robotten kunne korrigere sin vinkel ved at køre ind imod en mur, og derefter resette tachocounter værdier.
Dette virkede rent faktisk nogenlunde, men da robotten allerede drejede skævt på vej væk fra referencepunktet igen, blev det ekstremt svært at koordinere over længere kørsler.
Det skal også nævnes at vi fandt en fejl i både TachoNavigator klassen og i forbindelse med brug af ArrayList som nævnt tidligere. Det er vigtigt at have i mente at Lejos stadig ikke er færdigudviklet, og vi spildte meget udviklingstid på at debugge selve frameworket.
Alt i alt kan vi konkludere at navigation med tachocounteren må frarådes, hvis der skal bare en smule præcision ind over. Dog er det ikke helt ubrugeligt. Tachocounteren er nemlig ekstremt anvendelig til at drive ting som vores arm på robotten. Når faktorer som vægtfordeling, friktion osv tages væk og den tilkobles direkte til fx en arm der skal køre op og ned, viser vores eksperimentere at den er meget præcis.
Hvis vi fra start af, havde besluttet os for ikke at følge de officielle regler mht. antal og typer af sensorer, er vi overbeviste om at vi kunne have nået et bedre resultat. Havde vi fx. haft en kompas sensor, ville det være muligt at korrigere tachocounterens fejl meget hyppigt, og derved opnå en større præcision. Det ville muligvis også kunne lade sig gøre at navigere kun via denne.
En anden der kunne være interessant at teste, kunne være brugen af ultralyds sensorer eller andre afstandsmåldende sensorer, ligesom fx i Maja beskriver i Integration of representation into goal-driven behaviour-based robots. Hvis man placerede en på hver side af robotten ville det måske være muligt at måle afstanden til væggen på pladen i hver retning og derved altid have et meget præcist x,y koordinat for ens position. Dette kunne evt kobles med en kompassensor til at holde styr på den vinkel man har. Kunne dette lade sige gøre ville det gøre det meget nemmere at navigere på pladen.
En sidste ting der skal nævnes er vores success med at lave dynamisk pathfinding på robotten. Givet den begrænsede hukommelse er det muligt at lave dette gentagne gange uden at lække hukommelse. Dog kræver det at vores fieldmap repræsentation ikke bliver meget stor.
Vores endelige kode kan findes her:
http://daimi.au.dk/~elvar/lego/code.zip







