fredag den 8. juni 2012

Slutprojekt, del 6

Deltagere: Bjarke, Mikkel, Troels, Jesper
Tid: 5 timer



Mål

Teste kommunikation mellem robot og computer.
Grafisk repræsentation af hulen, som robotterne bevæger sig rundt i.
P komponent af PID-kontrol til robotterne.



Plan

1. Udvid overmind, så den kan håndtere de forskellige signaler som robotten kan sende til den.
2. Test om kommunikationen virker som forventet på robotterne.
3. Få lavet en grafisk repræsentation af hulen.



Resultater

1. Vi har udvidet overminden så den nu kan håndtere alle kontrolsignaler den modtager fra robotten. En implementation af Receiver interfacet på PC'en identificerer kontrol-signalet og kalder så den korrekte metode på Overmind (f.eks. foundIntersection() eller foundCave()). Overmind klassen sørger så for at bestemme den næste besked robotten skal have. Hvis robotten er igang med at navigere af en path vil Overmind-klassen fjerne det tile vi er nået til fra path’en og køre videre. Når vi er nået til enden af path’en vil Overmind kalde ‘performTask()’ metoden på robotten. Det resulterer i at robotten finder guld i en mine eller fjerner en mur alt efter hvilken type robot det er. 
SeekerMind, der extender den abstrakte overmind-klasse, overskriver en række metoder fra Overmind-klassen. SeekerMind'en har nemlig den specielle opgave at opbygge kortet. Derfor skal vi via SeekerMind klassen sørge for at vi registrerer hvad vi opdager og gemmer informationen om dette i Hivemind'en.Der er således også indført kode i seekermind for det specialtilfælde hvor den møder enden af kortet. Pt. mangler der at blive indført kode for det tilfælde hvor en robot opdager en mur. Vi har bevidst udskudt denne implementation idet vi i første omgang fokuserer på at få en seeker robot til at opdage en verden uden mure og andre robotter i.

2. Vi har etableret kommunikation mellem robotten og computeren. Robotten kan tage imod beskeder fra computeren og rapportere tilbage hvad den ser. For at teste robottens opførsel når den modtager de enkelte beskeder, har vi implementeret en UI på computeren, der har knapper for hver funktion. 


UI der kan oprette forbindelse til en robot og sende beskeder, som markeret på knapperne.




UI'en kan oprette forbindelse til en robot og sende beskeder. Modtagne signaler, fra robotten, udskrives desuden i det store 'text area'. Den automatiske kommunikation mellem computeren og robotten kan testes ved at trykke på knappen markeret med "Start".
Selve kommunikationen fungerer fint, men vi har dog stadig nogle problemer med farvesensoren, hvilket giver nogle 'forkerte' signaler tilbage til PC'en. Farvesensoren registrerer således ikke altid rød som den skal og den ser blå steder hvor der ikke er blå. Vi skal have undersøgt om det er belysningen i rummet eller om det er farvesensoren der er problemet. Hvis det er farvesensoren der er skyld i det, skal vi konstruere en klasse der håndterer de rå værdier for os, lige som vi prøvede sidst.

Ting vi skal have testet med farvesensoren:

  1. Slukke floodlight på lyssensoren.
  2. Prøve et sted med simplere belysning, så som i køkkenet i Zuse.
  3. Prøve at afskærme sensoren, så ambient lys ikke påvirker den så meget.
  4. Prøve Rå-værdier hvis intet andet virker.







Yderligere måtte vi konkludere at Hivemind implementationen heller ikke var uden fejl. Vi forsøgte at starte den automatiske udforskning af verden, men dette virkede ikke efter hensigten, idet seekeren fik ukorrekte beskeder fra computeren. Da det til tider var svært at identificere om problemerne vi mødte lå på robot eller server siden af vores system, besluttede vi at implementere en test-stub til videre debugging, ved næste møde. Test-stub'en skal være en implementation af Hivemind'ens Receiver interface hvor vi kan styre præcis hvilke beskeder der sendes til PC'en. På den måde vil det være lettere for os at undersøge om det er på PC-siden der er problemer.


3.
For at gøre det muligt for tilskuere at se hvad der foregår og lettere for os selv at have et overblik over Hivemind'ens repræsentation af verden, besluttede vi at lave en GUI med et kort over hulen. Vi tager udgangspunkt i at vi har et 20x20 grid som vi kan tegne. Vi bruger swing til at tegne med [1]. 
Der er oprettet en java klasse (MapCanvas) der extender JComponent, som tegner kortet ud fra den information den kan læse i hiveMind. Derudover er der lavet en JFrame (MapUI) der indholder MapCanvas. Denne bliver startet som en under-Frame af UI. Så det nuværende setup er en JFrame til at styre robotten med, og en JFrame der viser et view af banen.
Indtil videre er det lykkedes at hente tile data ud, men edge dataen virker ikke endnu. Dette skyldes måske et problem med hvordan vi gemmer edges. Vi arbejder videre med GUI'en næste gang.


Konklusion

Vi har nået det vi satte os for idag, men vi stødte på nogle nye problemmer i processen. Næste gang skal vi have testet farvesensoren som beskrevet i slutningen af punkt 2 i resultater. Samtidig skal vi have set mere på kommunikationen mellem Robot og computer, samt implementationen af Hivemind på computeren. Til dette vil vi oprette en test-stub på computeren der kan efterligne signaler fra robotten. Kortet er næsten færdigt, men der mangler lige lidt arbejde med at få vejene tegnet.

Ingen kommentarer:

Send en kommentar