onsdag den 5. januar 2011

Afsluttende projekt, 6. dag

Date: 5. Januar 2010
Duration of activity: 3½ hours
Group members participating: Heine Stokholm, Michael Vilhelmsen og Mads Møller Jensen

Dagens mål
  • Få optimeret de forskellige dele af programmet, som robotten skal køre
  • Forsøge at sætte de forskellige dele sammen, så robotten kan køre gennem banen, hvis vi bliver færdige med at optimere.
Plan
  • Dele programmet op i de forskellige sekvenser igen
  • Sætte farten ned i PID-systemerne
  • Forsøge at anvende tachocounteren i stedet for kompasset
Optimering
Efter en dag i går, hvor robotten ikke rigtigt lystrede, har vi valgt at forsøge at optimere vores robot. Vi har derfor delt programmet op i mindre dele:
  1. TurningRobot - kode
  2. LineFollower - kode
Den del af programmet som vælger hvor robotten skal køre hen næste gang, er blot en algoritme og er derfor ikke relevant at tjekke i praksis med robotten.
TurningRobot programmet får robotten til at dreje rundt om sig selv, og for hver 90 grader måler den med lyssensoren, om den har set en åben eller en lukket vej. Vi har haft dette program til at virke før, men robotten kommer uregelmæssigt ud af programmet hver gang. Derfor bliver vi nødt til at optimere enten ved at optimere med kompasset eller bruge tachocounteren. Vi har forsøgt mange gange tidligere at bruge kompasset, men hver gang vi troede, at det virkede, har den skiftet opførsel til næste gennemløb. Derfor har vi prøvet at bruge tachocounteren. Vi ved i forvejen, at denne er upræcis, men i forhold til kompasset, er der ved tachocounteren større sandsynlighed for, at den er cirka lige upræcis hver gang. På den måde håber vi at få lidt mere kontrol med robotten, end vi har når vi bruger kompasset. 
I LineFollower programmet har vi tweaket lidt på de forskellige parametre. F.eks. har vi sat farten væsentligt ned og skruet lidt ned for Kc og Kp konstanten, for at få robotten til at oscillere mindre omkring linjen. Linjen skal jo bare bruges til at rette op efter, når robotten har drejet 360 grader om sig selv. Derfor dur det ikke hvis den oscillerer for meget, så den holder skævt, når LineFolloweren stopper. 

Repræsentation
Vi har også arbejdet videre med robottens repræsentation af kortet. Robotten husker på et 2-dimensionalt array bestående af Tiles. Disse Tiles kan man så spørge, om det er muligt at køre nord, syd, øst eller vest. Robotten finder ud af dette, når den kører rundt og scanner banen. I RoadmapRepresentation klassen har vi så lavet en metode, som tager et 2-dimensionalt array af Tiles og laver om til et streng.array, som vi så kan bearbejde på samme måde som de streng-arrays vi brugte i eksemplet fra sidste gang. Det eneste vi mangler nu er, at robotten kan konstruere det 2-dimensionale array ud fra det den læser på banen og efter færdigt gennemløb sender arrayet til computeren via BlueTooth. 

Status
Det hjalp os rigtig meget at skifte til tachocounteren. Vi får meget tæt på 90 graders rotation efter at have justeret lidt på hjulbredden osv. og sat farten meget ned. TurningRobot-delen er som det skal være nu, og det fungerer godt med at se om der er en væg i de forskellige retninger eller ej. 

LineFolloweren driller os rigtig meget, for vi har en LineFollower som fungerer rigtig godt, men når vi sætter den sammen med de andre komponenter, er der noget vi har overset, som gør at den kører alt for hurtigt, når den følger linjen. Vi troede, at det var TachoPilot-klassens regulateSpeed, der skulle sættes til false, men dette var ikke tilfældet. Vi har endnu ikke fundet fejlen.  

Vi har også modificeret robotten lidt. Vi har forlænget armen med den ene lyssensor, fordi robotten befandt sig lidt for langt væk fra markeringerne efter den retter ind efter den grå midterlinje. 

Næste gang
Næste gang skal vi have robotten til at køre endnu bedre end den gør. Og vi skal have den til at bruge de oplysninger den indsamler, så den ved hvilket modul, den skal køre hen til "næste gang". Hvis der bliver tid, skal vi se om den kan udfylde et array af Tiles og måske sende dette til computeren, som kan lave en grafisk repræsentation af dette.  

Ingen kommentarer:

Send en kommentar