Kristan Andersen, Simon Lykke, Jacob Styrup Bang

onsdag den 16. januar 2008

Lab Notebook 10


Date: 16.1.08
Duration of activity: 9:15-13.30
Group members participating: Simon, Jacob og Kristian

Dagens mål:
  • Få fast monteret de infrarøde lyskilder på robotterne.
  • Programmere IRSeekerSensor klassen så der tages højde for defekt sensor.
  • Teste spillet, og rette evt. fejl eller mangler der viser sig.

Lyskilder
Vi startede dagen med at montere de infrarøde lyskilder. Da IRSeeker'en også skal bruges når robotten er "Avoider" skal placeringen af lyskilden være således at den bedst muligt kan opdages af den anden robot, samtidig med at robotten selv ikke opfanger lyset. Vi testede forskellige placeringer, og målte sensor værdierne på begge robotter, og fandt at den bedste placering var ca. 2 cm bag IRSeeker'en på robotten, i højde så den lige kunne lyse hen over sensoren. Billedet her viser placeringen af sensoren på robotten.


Defekt sensor
Trods reklamationen over vores defekte sensor har vi ikke modtaget en ny fra lego endnu. Vi valgte at implementere vores IRSeekerSensor klasse, så den tager højde for at den ene sensor er defekt. Som beskrevet Lesson 5 var den ene af de 5 interne sensorer på den ene af vores IRSeekerSensor gået istykker. Vi implementerede vores IRSeekerSensor klasse så direction() metoden, der angiver retning, tager en boolsk parameter, som angiver om det er den defekte sensor, eller den fejlfrie. I det tilfælde at vi måler på den defekte sensor giver vi bare retningen som den højeste målte værdi på de fire interne sensorer, som virker. Dette giver ikke helt samme præcision som på den anden sensor, men det gør det alligevel muligt for begge robotter at se hinanden i de fleste situationer.
Test
Da vi havde monteret både sensor og lyskilde på begge robotter gik vi igang med at teste. Vi observerede en fejl når en robot blev fanget mens den var ifærd med "StayOnTrack" behavior'en. Robotten var ved at køre tilbage mod banen, men når rollen skifter fra catcher til avoider, skifter robotten køre retning, hvilket resulterede i at robotten kørte væk fra banen. Dette blev klaret ved at behavior'en blev afsluttet i den retning, den var startet, i stedet for at retningen blev aflæst løbende igennem handlingen.
Vi valgte derefter at implementere en ny behavior, som stopper spillet. Når spillet starter gemmes systemtiden, og når der er gået et fastsat stykke tid stopper begge robotter. Vinderen af spillet er den robot som er "avoider" i afslutnings tidspunktet. Vinderen af spillet laver en dans, og spiller en melodi, mens taberen står stille. Her ses et billede af de to robotter ifærd med et spil:

Softwareakitektur
Det endelig program kom til at bestå af 9 klasser som kan hentes her, opbygningen af programmet ligger tæt på planen fra Lab Notebook 3 og kan ses herunder:

Konklusion
Det lykkedes at finde en fornuftig placering af lyskilderne på robotterne, samt at finde en løsning på problemet med den defekte sensor. Vores testkørsler har vist at robotterne kan have problemer med at finde hinanden, men til tider lykkes det. Det skyldes nok det relativt svage signal fra vores lyskilder.

Ingen kommentarer: