I vores første indlæg i gruppens lab-notesbog har vi forsøgt at følge anvisningerne fra kursets hjemmeside om, hvordan strukturen skal være.
Mål
Målet for første lab-session er at samle en robot i LEGO og eksperimentere med programmer til den og i den forbindelse lave øvelserne til denne uge.
Plan
Vores plan for denne uge har været som følgende:- Installation af leJOS etc.
- Samle robot af LEGO
- Udarbejdelse af øvelser
- Udforske LEGO Mindstorms muligheder og begrænsninger
- Opsætning af blog.
Resultat
I vores gruppe er der både Linux, OS X og Windows 7/8 brugere og installationsprocessen har derfor varieret en del. Nedenstående afsnit beskriver nogle af de udfordringer, vi stødte på.
Installationsprocessen
Det lykkedes os ikke at få installeret leJOS på Linux Ubuntu, selvom der blev brugt mange timer både på at følge installationsvejledningen, læse på forum, samt endda at emulere Windows. Det var ganske enkelt for besværligt at få leJOS til at fungere med de gamle versioner af forskellige programmer, da de nyeste specifikt ikke understøttes. Brugeren af Linux besluttede derfor at skifte til Windows imens kurset står på.
Der var også en del problemer med at få leJOS til at virke på OS X. Selve installationen af de forskellige programmer, som det fremgik i tutorialen, at man skulle installere, gik fint, men da det blev afprøvet om et simpelt Java program kunne kompileres via terminalen, opstod der en fejl, som umiddelbart lignede et problem med, at miljøvariablerne ikke var blevet sat rigtigt. Efter at have søgt på internettet og prøvet diverse løsninger af, lykkedes det desværre ikke at finde en løsning på problemet. Et medlem fra en anden gruppe fortalte dog, at han havde fået leJOS oppe og køre på OS X ved at følge guiden til, hvordan man installerer leJOS pluginet i Eclipse, hvilket skulle virke ret ligetil. Dette er blevet installeret og vil blive afprøvet i forbindelse med næste lab-session.
Der var også en del problemer med at få leJOS til at virke på OS X. Selve installationen af de forskellige programmer, som det fremgik i tutorialen, at man skulle installere, gik fint, men da det blev afprøvet om et simpelt Java program kunne kompileres via terminalen, opstod der en fejl, som umiddelbart lignede et problem med, at miljøvariablerne ikke var blevet sat rigtigt. Efter at have søgt på internettet og prøvet diverse løsninger af, lykkedes det desværre ikke at finde en løsning på problemet. Et medlem fra en anden gruppe fortalte dog, at han havde fået leJOS oppe og køre på OS X ved at følge guiden til, hvordan man installerer leJOS pluginet i Eclipse, hvilket skulle virke ret ligetil. Dette er blevet installeret og vil blive afprøvet i forbindelse med næste lab-session.
Installation på Windows fungerede i løbet af ca. en halv time inklusiv installering af Bluetooth, så det er muligt at uploade programmerne til robotten trådløst.
Øvelser
Det første vi gjorde i forbindelse med øvelserne til denne gang var at kompilere og uploade Java-programmet LineFollower til den robot, vi har bygget. Dette program gør, at robotten kan følge en sort linje på en hvid baggrund, som vist på nedenstående billede.Opgave 1
Denne opgave gik ud på at placere lyssensoren over forskellige farver og måle lysværdierne. Nedenstående billede viser, hvilke farver, der blev brugt til i forbindelse med at bestemme lysværdierne.
Sort
|
35
|
Mørk grå
|
42
|
Blå
|
33
|
Rød
|
54
|
Grøn
|
37
|
Turkis
|
33
|
Gul
|
60
|
Lilla
|
47
|
Lys grå
|
48
|
Hvid
|
60
|
Lyssensoren opfatter lys på en skala fra 0 til 100, hvor 100 er meget lyst og 0 er mørkt. Da vi finder frem til hvilke lysværdier sort og hvid har, kan vi vælge en grænseværdi, der er imellem disse to lysværdier (35-60) for at afgøre, hvornår vi går fra sort til hvid. Programmet antager så, at lyssensoren er over et sort område, når lysværdien er under den gældende grænseværdi og over et hvidt område, når lysværdien er over grænseværdien.
Opgave 2
I denne opgave skal vi igen måle lysværdierne ud fra de samme farver, men denne gang med lyssensorens røde LED lys slået fra, så sensoren ikke længere måler reflektionen af det røde LED lys'. Derimod bliver det omgivende lysniveau målt. Nedenstående tabel viser de målte lysværdier med det røde LED lys slået fra.
Sort
|
18
|
Mørk grå
|
23
|
Blå
|
25
|
Rød
|
30
|
Grøn
|
23
|
Turkis
|
22
|
Gul
|
29
|
Lilla
|
29
|
Lys grå
|
25
|
Hvid
|
31
|
Opgave 3
I programmet er der sat en forsinkelse på 10 millisekunder mellem lyssensorens læsninger. I denne opgave har vi prøvet at ændre måleintervallet til 100, 500 og 1000 millisekunder. Når hastigheden på sensorlæsningen bliver sat ned, tager det
længere tid for robotten at finde ud af, at den skal dreje, og derfor kommer den
for langt væk fra den sorte streg til at kunne finde tilbage på en
hensigtsmæssig måde.
Opgave 4
Vi har i denne opgave brugt dataloggeren til at indsamle data fra robottens sensor, i dette tilfælde lysværdierne i forskellige udvalgte intervaller. De indsamlet data har vi brugt til at lave nedenstående grafer, hvor man kan se, hvordan de forskellige tidsintervaller påvirker udsvingene i grafen.
Opgave 5
I denne opgave skulle vi prøve at bruge tekststrenge direkte i kaldet til LCD.drawString i stedet for variablerne left og right, samt bruge Runtime.getRuntime().freeMemory() til at vise mængden af fri hukommelse på heapen gennem kørslen. Vi prøvede at logge heapens størrelse både med en streng direkte i drawString kaldet, med en streng som variabel, med en final streng og helt uden noget logik i while-loopet. Størrelsen af heapen var meget ens og steg og faldt næsten synkront for alle fire situationer.
Konklusion
Denne uge har vi fået styr på de helt praktiske ting med at få leJOS til
at køre - i hvert fald på Windows - samt bygget en funktionel robot og sat en
blog op, hvor vi kan føre vores lab-notesbog. Ugens opgaver omhandlede i stor grad at opdage, hvordan den fysiske virkelighed bliver opfattet; kort sagt, at robotten kun kan reagere på den virkelighed den har læst, at den kan have begrænsninger ift. reaktionstid, samt hvilke programmæssige "knapper" vi har at trykke på, når vi senere skal til at programmere et eller flere adfærdsmønstre. Særligt logging kommer til at være rart at kende til senere brug. Vi har også fået en kendskab til, hvordan lyssensoren fungerer, og hvordan vi kan ændre indstillingerne for denne programmæssigt.
Bortset fra vores overraskende resultat med de deklarerede objekter og garbage collection (svingende hukommelsesbrug), har ugens opgaver dog været til at forstå og opført sig stortset som forventet.





No comments:
Post a Comment