Kristan Andersen, Simon Lykke, Jacob Styrup Bang

torsdag den 13. december 2007

Lab Notebook 3


Date: 13.12.07
Duration of activity: 9:15- 13:00
Group members participating: Simon, Jacob og Kristian

Dagens mål:
Fortsætte med at udvikle robot prototypen fra sidst.
  • Design af bane
  • Montere sensorer
  • Designe og implementere simple test programmer til test af sensorer

Design af bane
Vi har haft en del overvejelser til hvordan banen, hvorpå spillet skal foregå, skal designes. Først og fremmest skal banen være ensfarvet, så vi kan aflæse med lyssensorer, når vi kommer udenfor banen. Om banen skal være rund, firkantet, med eller uden forhindringer vil vi overveje nærmere i løbet af projektet, men umiddelbart vil vi starte med en firkantet enefarvet bane uden forhindringer.


Når spillet virker, kan vi overveje om vi vil tilføje forhindringer, samt om vi vil lave andre baner...

Opbygning af prototype

Sidste gang monterede vi 2 tryk sensorer, men der er kun 4 input porte. Robotten skal kunne navigere rundt indenfor en bane og vores erfaringer fra Robot løbet siger os, at vi skal bruge 2 lyssensorer for at kunne bestemme hvordan vi skal komme ind på banen igen, når vi først er kørt ud over. Dvs. at vi kun har en enkelt port tilbage til en tryksensor, da vi også skal have monteret en infrarød sensor.
Vi vil stadig gerne have en stor kontaktfalde til den ene sensor vi har. Det gjorde vi ved montere et stativ som vist på tegningen nedenunder:


Meningen er at 'stativet' skal rette kraften ved kontakt ind mod tryksensoren og gør at den nemmere aktiveres. Lys sensorerne blev monteret på hver side af tryksensoren og vi byggede en anden robot, der kunne være den anden del af spillet indtil prototypen er færdig.

Testprogrammer
Tryksensor

I første omgang lavede vi et simpelt program, der ved aktivering af tryksensoren bipper. Det kørte vi for at teste konstruktionen omkring vores tryksensor. Umiddelbart ser det ud som om at vi har den følsomhed vi ønsker.
Vi lavede endnu et program, hvor vi tester 'sammenstød' med den anden robot. Når tryksensoren aktiveres kører prototypen tilbage, hvilket kan ses i nedenstående video:

Lyssensorer
For at teste vores lyssensorer implementerede vi et program, der aflæser værdier fra sensorerne og skriver dem ud på skærmen. Testen viste at der på samme overflade var en forskel på de aflæste værdier fra de to sensorer. Normalt varierede værdierne 5-10. Forskellen mellem hvid overfalde og gulv, målte den ene sensor 35-54 og den anden fra 44-60. Dvs. at en fornuftig Threshold er 49, - altså middelværdien mellem den højeste lave måling (44) og den laveste høje måling (54). Eventuelt kan man kalibrere værdierne før spillet startes.

Vi satte en threshold på 49 og lavede et program, der ud fra denne threshold kunne blive indenfor banen. Implementationen blev afprøvet på banen fra Robot racet og det ser ud som om det virker efter hensigten.

Softwarearkitektur
Vi har valgt en Behavior baseret arkitektur. I Lesson 10 og Lesson 8 eksperimenterede vi med forskellige implementationer af Behaviors. Den vi fandt der virkede bedst er leJOS NXJ Arbitrator, men der stilles nogle krav til hvordan den skal bruges for at sikre at Behaviors bliver udført korrekt.

Foreløbigt har vi tænkt os at vi vil lave følgende Behaviors: StayOnTrack, RandomDrive og Action. StayOnTrack skal sørge for robotten bliver indenfor banen og skal derfor have den højeste prioritet. RandomDrive skal have den laveste prioritet, da den kun skal køre tilfældigt rundt, hvis den er inden for banen og ikke ved hvor modstanderne er. Action skal enten sørge for robotten 'undviger' eller 'fanger' - afhængigt af tilstand.

Konklusion
Vi har nået alle målene for i dag, derudover har vi også har fået bestilt de infrarøde sensorer. På prototypen er monteret trykføler og lyssensorer. Vores små testprogrammer viser at vi kan registrere når robotten rammer en genstand og at robotten kan holde sig indenfor en bane. Software arkitekturen bliver Behavior baseret, med indtilvidere 3 forskellige behaviors: StayOnTrack, RandomDrive og Action.

Ingen kommentarer: