Med Asbjørn, Christer og Jesper

fredag den 7. september 2007

NXT programmering, lesson 1


Tidsforbrug: 3 timer
Deltagere: Asbjørn, Christer og Jesper

Målet for dagens session er, at:
  • Pakke vores LEGO ud.
  • Bygge en LEGO bil efter medfølgende instruktioner.
  • Installere leJOS.
  • Compile et Java-program og køre det på NXT'en.
Vi startede med at pakke vores LEGO™ ud og fordele det i de medfølgende plastikbakker. Herefter byggede vi bilen efter de medfølgende instruktioner på ca 45 minutter. Efter dette forsøgte vi at køre bilen med den forudinstallerede software. Det lykkedes ikke at få den til at følge en sort streg på denne måde, men det generede os ikke umiddelbart, da det trods alt ikke er det vi skal bruge.

Herefter påbegyndte vi installationen af leJOS. Dette kompliceredes af, at ingen af os besidder laptops med optiske drev. Installationen drillede. For det første tog det lang tid at hente alle de nødvendige programmer og bagefter tog det et par forsøg at få sat diverse miljøvariable korrekt op. Det viste sig også at libusb skal ligge i et bibliotek med et DOS 8.3 filnavn. I alt brugte vi ca. 80 min på at få sat softwaren op.

Da først vi fik flashed NXT'en til lejOS gik alt dog let. Vi gik nu i gang med at teste LineFollower.java programmet. Det første vi gjorde var at teste de rapporterede lysværdier for henholdsvis lyst og mørkt papir. vi fik ca. 45 og ca. 60 og satte derfor variablen blackWhiteThreshold til 54. Nu kunne vi teste bilen og konstanterede at den fint fulgte enbred sort streg.

Næste forsøg var at lege med sample intervallet. Det startede på 100ms, hvor den virkede ude mærket. Næste forsøg var på 500ms. Det resulterede i at den ikke kunne reagere hurtigt nok på at den fandt den sorte streg og at bilen derfor var generelt ude af stand til at følge stregen. Sidste forsøg var med 10ms, og her var bilen fint i stand til at følge stregen. Om muligt kørte den her endnu bedre, da bilen meget hurtigt kunne reagere på ændringen i lyset og derfor ikke nåede langt væk fra stregen før den drejede tilbage ind på den.

Til sidst lavede vi forsøg med hukommelsesforbruget. Vi brugte inline streng literals i stedet for variablerne left og right og fik den til at udskrive Runtime.getRuntime().freeMemory(). Det der skete var at vi kunne se den ledige hukommelse forsvinde hurtigt. Da der ikke var mere hukommelse tilbage smed bilen en exception og vi kunne kun stoppe den ved at resette den ved at trykke enter og escape på samme tid. Grunden til at hukommelsen forsvandt var naturligvis at den ikke har nogen garbage collector og når vi bruger string literals bliver VM'en ved med at oprette nye string objekter der ikke forsvinder igen.

I alt tog de to eksperimenter ca. 30 min.

Ingen kommentarer: