torsdag den 2. februar 2012

NXT Programmering, Lesson 1

Torsdag 2. februar 2012

NXT Programmering, Lesson 1

Varighed: 3 timer
Deltagere: Mikkel, Troels, Jesper

Formålet med øvelsen er at få LineFollower til at virke. Vi har samlet robotten efter anvisningerne i lego-folderen, det tog knap 30min.
Robotten (Teddy):

Vi har nu forsøgt at installere LeJOS og få hele mindstorm-frameworket til at virke på vores laptops. Det viser sig at den ene 32bit maskine vi har ikke vil lade os installere det, pga. manglende rettigheder og vi har gjort den fejl at installere 64 java og eclipse på de to andre maskiner. Vi arbejder derfor stadig på at få det til at virke, efter knap to timer. Løsningen lige nu er at fjerne alt hvad der har med 64bit java at gøre og installere 32bits version i stedet.

Efter at have fjernet alt 64bit og installeret 32bit software, har det endelig lykkedes os at få kontakt til robotten. Et andet problem vi oplevede var at den bluetooth dongle der medfulgte ikke har drivere til et 64bit system. Det var derudover også et problem at finde passwordet i robotten til bluetooth-pairing.

Vi fik uploaded programmet "Linefollower.java" og det virkede præcis som det skulle, den fulgte den sorte linie. Video af kørsel:



For at få programmet til komme over på NXT:
1. Compile java-fil:
> nxjc <filename.java>
2. Connect via bluetooth:
- connect fra computer
- find pin på device (vi har sat den til 1234)
3. Upload til device
> nxj -r <filename>

En tabel over farveværdier:
Hvid - 57
Mat hvid - 56
Bord brun (blank overflade) - 52
Bordeaux rød - 40
Tavle blå - 38
Sort - 32

Når threshold er over 45 kører robotten på venstre hjul i stedet for højre. Det stemmer overens med koden. For at finde threshold fra en sort og en hvid læsning kan vi tage gennemsnittet af de to værdier (57 + 32 = 89 / 2 ~= 45 ).

Så slog vi den røde led fra og aflæste følgende værdier:
Hvid - 27
Mat hvid - 28
Bord brun - 26
Bordeaux rød - 18
Tavle blå - 25
Sort - 16

Her kan vi se at værdierne ligger meget mere tæt, hvilket gør det svære at skelne mellem sort og hvid.

Vi har så ændret sampling intervallet til 1, 10, 100, 1000 millisekunder. Jo højere intervallet var jo længere er der imellem samplings. Dette resulterer i større bevægelser fra robotten. Med 1000 millisekunder kører robotten i cirkler, hvilket giver mening da den kun får lavet målinger på det hvide område og derfor ikke får tændt for den anden motor.

Når vi bruger nye strings i hvert loop gennemløb går freememory imellem 45000 og 55000. Med de string variablerne går den imellem 40000 og 56000 og memory bliver fyldt langsommere. Det tyder på at man kan spare noget hukommelse på at gemme string i variable, i stedet for at allokere nye string for hvert gennemløb af loopet.
Det betyder at strings bliver allokeret i memory hver gang vi introducerer en ny string. Derudover er der en garbage collector der rydder op.

Ingen kommentarer:

Send en kommentar