I denne lab session skal vi bygge en lego bil og udstyre den med en lys sensor. Derefter skal vi installere leJOS java system og bruge det til at compile og upload et java kontrol program til lego Mindstorms NXT kontrol enhed. Java kontrol programmet skal få bilen til at følge en sort linie på en hvid overflade.
Som forberedelse til labsession opstillede vi et udviklingsmiljø til programmering af en lego mindstorm med leJOS java system. Vi har fulgt leJOS NXJ installation guide, og valgt følgende programmer til at opnå dette: Java JDK(1.7.0.2), USB driver til legomindstorm, Eclipse samt eclipse plugin. Vi stødte hurtigt ind i problemer pga. windows i 64-bit, vi løste dog dette problem ved at installer JDK og eclipse i 32-bit version, og USB-driveren havde en kompatibel 64-bit version.
For at programmer NXT control enheden, har vi anvendt ANT build metoden gennem eclipse.
Selve konstruktion af robotten gik smertefrit, og et billede af robotten kan ses foroven.
Første test af linefollower programmet i lab opgaven:
Robotten fulgte linien helevejen gennem testbanen og kunne vende om ved endepunktet.
Kort video klip med resultat kan ses her:
http://dl.dropbox.com/u/2779683/LegoVideoLinks/LineFollowerTest.3gp
Efter succesfuld første test målte vi sensor-værdierne for forskellige farver.
Som forberedelse til labsession opstillede vi et udviklingsmiljø til programmering af en lego mindstorm med leJOS java system. Vi har fulgt leJOS NXJ installation guide, og valgt følgende programmer til at opnå dette: Java JDK(1.7.0.2), USB driver til legomindstorm, Eclipse samt eclipse plugin. Vi stødte hurtigt ind i problemer pga. windows i 64-bit, vi løste dog dette problem ved at installer JDK og eclipse i 32-bit version, og USB-driveren havde en kompatibel 64-bit version.
For at programmer NXT control enheden, har vi anvendt ANT build metoden gennem eclipse.
Selve konstruktion af robotten gik smertefrit, og et billede af robotten kan ses foroven.
Første test af linefollower programmet i lab opgaven:
Robotten fulgte linien helevejen gennem testbanen og kunne vende om ved endepunktet.
http://dl.dropbox.com/u/2779683/LegoVideoLinks/LineFollowerTest.3gp
Efter succesfuld første test målte vi sensor-værdierne for forskellige farver.
Målinger af farver er taget på testpladen som ses foroven.
Målinger af forskellige farver:
Med floodlight:
Sort: 36
Blå: 47
Grøn: 50
Rød: 57
Hvid: 59
Uden floodlight:
Sort: 27
Blå: 37
Grøn: 35
Rød: 29
Hvid: 40
Farvereferencerne er taget fra lego testpladen, så de er ikke specielt reference agtige.
Forskellen mellem sort og hvid er ens (~13) hvad enten floodlight er aktiveret eller ej. Dog er systemet meget påvirkeligt overfor lysstyrken når floodlight ikke er aktiveret, hvilket gør at vores sort/hvid referencer flytter sig alt efter lysforhold. Dette sker ikke i så høj grad når floodlight er aktiveret.
For at få en bedre line-following egenskab, kan vi bruge medianpunktet mellem sort og hvid som et set-point. Dette set-point kan bruges i et PID system, hvor hver enkelt motors hastighed er proportionel med afstanden fra medianen. Jo længere fra medianen i en retning, jo højere hastighed i den modsatte retning.
Efter farvemålingerne afprøvede vi ændringer i samplings intervallet hhv 10, 100, 500 og 1000 ms.
Følgende video-klip viser robotten der forsøger at følge den sorte linie med et samplings interval på 500ms.
Det viser sig at ved 10ms kan lyssensoren hurtigt opfange forskelle i farver foran sig, og kan derfor holde sig til den sorte line. Jo lavere samplings interval desto større chance er der for at robotten misser den sorte linie. Dette skyldes at sensoren passer den sorte linie uden at foretage en måling pga. samplings intervallet.
Til sidst afprøvede drawString metode med og uden variabler for at se effekten på heapen ved runtime.
Følgende målinger er taget:
58320 bytes fri på heap med variabler
58384 bytes fri på heap med strings
Der er mere plads på heapen hvis der ikke anvendes variabler, dette skyldes at der skal gemmes referencer på heapen. Ved at kalde metoder direkte med text strenge gemmes disse ikke i heapen og derfor er der mere plads.


No comments:
Post a Comment