Kristan Andersen, Simon Lykke, Jacob Styrup Bang

fredag den 7. september 2007

Lesson 1

Dagens mål er at installere leJOS NXJ systemet. Samle lego bilen iflg. lego manualen og køre LineFollower programmet.


Vi startede med at pakke Lego Mindstorm kassen op, tage delene ud af plastikken, og spredte delene ud over skrivebordet. Vi fandt NXT enheden og tilkoblede den til computeren. Vi delte os op, så en samlede lego bilen og de to andre installerede softwaren jævnfør "leJOS NXJ installation guide".

Vi testede systemet ved at overføre og køre "Tune.java".

Da lego bilen var færdig samlet, overførte vi og kørte "LineFollower.java".

Ved at køre programmet "LineFollower.java" på bilen med lyssensor, kunne vi få bilen til at følge en sort linie. Ved eksperimenter fandt vi ud af at bilen kunne følge alle linier, hvor der var tilstrækkelig stor forskel mellem farverne. Vi foretog målinger på sort og hvid:

Sort: 35
Hvid: 57
Lysblå: 40
Mørkblå: 40
Rød: 51
Gul 52

blackWhiteThreshold er sat til 45, hvilket er en passende værdi til at skelne mellem hvid og sort. Ud fra overstående værdier, kan det ses at det er svært at få programmet til at skelne mellem rød og gul. Hvis bilen skulle køre langs fx en rød linie ved gul baggrund, skulle der nok bruges en anden sensor.

Vi prøvede med forskellige værdier af sample intervallet. Ved 10 msek syntes vi den reagerede hurtigere og justerede kursen hurtigere ind. Hvorimod den ved 500 msek og 1000 msek reagerede meget langsomt. Faktisk så langsomt at den ikke kunne følge stregen og kørte tilsyneladende mere eller mindre tilfældigt rundt alt efter hvor den var i samplings øjeblikket.
Det virker som om Ole har tænkt over parametrenes værdi da han lavede programmet. 100 msek virker til at være en god værdi. Hvis samplings værdien var for lille ville den ikke køre særligt hurtigt, da den hele tiden ville korrigere. Hvorimod den vil have sværere ved at følge linien ved en højere værdi.

Ved at initialisere nye streng objekter, istedet for at bruge "left" og "right", i LCD.drawString kunne vi observere at hukommelsen blev brugt ret hurtigt op og NXT'en kastede en exception. Hver gang man initialiserer et objekt bruger man hukommelse og siden der ikke er nogen garbage collection kan man ende op med at allokere alt tilgængelig hukommelse. Derfor skal man altid huske at lave objekter uden for kontrol loops.

Ingen kommentarer: