torsdag den 30. september 2010

Lab 5

Dato: 30/8 - 2010
Varighed: 14 - 17
Medvirkende: Morten Rasmussen, Kenneth Sejdenfaden Bøgh, Morten Nikolaj Pløger.

Mål: http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson5.dir/Lesson.html

Forløb:

Black White Detection:

Efter at have bygget LEGO9797 kørte vi BlackWhiteSensor og så at sort er ~52 og hvid ~34.

Line Follower with Calibration:

Kørte programmet og vores robot kørte i første omgang af den sorte streg pga for store hjul. Vi satte
derefter de små hjul på også fulgte robotten den sorte streg fint efter kalibrering.

ColorSensor with Calibration:

I første omgang har vi modificeret BlackWhiteSensor ved at tilføje en greenLightValue.

Her er måden der skelnes imellem sort og hvid samme som før:
White:34 --------> blackWhiteThreshold <------- Black:52

For at afgøre om farven er grøn gør vi følgende:
White:34 --> GWThreshold--|GREEN:43|--GBThreshold <-- Black:52

Med denne måde at afgøre farven grøn, er det muligt at der bliver læst værdier der kan tolkes for at være grønne ved overgangen mellem sort og hvid.
Derfor regner vi med at forsøge os med at lade programmet læse værdien grøn X antal gange, før
vi endeligt konstaterer at farven reelt er grøn.

Line Follower that stops in a Goal Zone:

Robotten er nu udvidet til at have tre RCX lyssensorer i front og én NXJ lyssensor i bag.



Ideen er at det må være muligt at lade RCX sensorene skelne mellem hvid og sort, og give et relativt præcist billede af placering i forhold til stregen. NXJ sensoren's eneste opgave er at holde øje med om vi er i mål.

Programmet til at styre robotten bliver i første omgang ret simpel.

Lad S[i] i = 1,2,3 være RCX sensorer og NS være NXJ sensoren.
(S1=white, S2=black, S3=white) Kør fremad
(S1=black, S2=black, S3=white) Sænk farten og drej til venstre ved at forøge power
(S1=white, S2=black, S3=black) Sænk farten og drej til højre ved at forøge power
(NS=Green)                Stop vi er i mål.


Vi nåede ikke at implenetere stop ved grøn, men den simple algoritme viste sig faktisk at være ganske
effektiv. Næste skridt må være stop ved grøn for det første, og kørsel via PID for en hurtigere tid.

onsdag den 29. september 2010

Lab 4

Dato: 23/8 - 2010
Varighed: 14 - 17
Medvirkende: Morten Rasmussen, Kenneth Sejdenfaden Bøgh, Morten Nikolaj Pløger.


Forløb:

Vi startede med at forsøge at samle balancerobotten fra Brian Bagnall
udskrifterne, men skiftede hurtigt til Philippe Hurbain
http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson4.dir/Lesson.html
på opfordring af Ole.

Det er nødvendigt for os at tilpasse skabelonen til vores NXT en smule, da
vores batteri fylder mere en den i Philippe's skabelon.

Downloader Brian Bagnalls's kode fra http://www.variantpress.com/file_download/2
, compiler og overfører den til vores NXT uden ændringer.

Det er tydeligt at robotten forsøger at holde balance, men den laver for store
korregeringer og mister dermed balancen .
Ved en god kørsel holder den balancen max ~3sek selv. Vi erfarede at en
kalibrering på 390 gav det bedste resultat.

I første omgang forsøgte vi at gøre korregeringen 'mildere' hvilket hjalp
en smule men ikke gav de store resultater.

Tilføjede en listeners på højre og venstre knap på NXT'en således at vi kan
regulere offset uden at stoppe robotten.
Med den nye mulighed og en lidt mindre værdi der bliver adderet i power formlen
1 fik vi forbedret balancetiden til ~10sek med offset omkring 555.

Eksperimenterer med at lave en proportionel for adderingen i powerfunktionen:

power = (power/4 + 20) + (power * 45) / 100;

hvor (power/4 + 20) før var fastdefineret til 55.

Med denne opsætning lykkedes det os at få den til at holde balancen i ~30sek.

Måden vi fandt frem til denne løsning, var at vi alle tre havde bemærket at
robotten lavede for store korregeringer når den står lige, og for små når den
mistede balancen.
Derfor faldt vores interesse for den konstante værdi i power '55', der
tilsyneladende har det ene formål at booste gain. Hvis vi kunne ændre
dette boost fra at være statisk til at være propositionelt i forhold til
hvor godt den balancerer, ville det forbedre robotten meget.

power = (power/2 + 15) + (power * 45) / (101-power)

Nu lykkedes det at få robotten til at balancere i <60sek med offset 537.






Experimenterede efterfølgende med hvorvidt det var muligt at forbedre robottens evne til at håndtere størrer afvigelser ved at give et 'kick' i gain på motorene, men det gav intet resultat.

torsdag den 16. september 2010

Lab 3

Dato: 16/8 - 2010
Varighed: 14 - 17
Medvirkende: Morten Rasmussen, Kenneth Sejdenfaden Bøgh, Morten Nikolaj Pløger.

Mål:

http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson3.dir/Lesson.html

Forløb:

Kørsel af SonicSensorTest.java:

Viser omkring 20 ved klap på 3 meters afstand.
Opfanger lettere lyse tone, end dybe.
Målingerne går fra 0 til 100.

Data logger:

NXT'en fryser når vi prøver at køre nxjbrowse.

Fik nxjbrowse til at køre på en ubuntu 32bit. Kan tilsyneladende ikke køre på 64bit java.

Et link til et plot af vores Sample:





Sound Controlled Car:

Kørte programmet uden problemer.

Brugte noget tid på at rode med at få ESCAPE knappen til at virke. Så fandt vi et eksempel på LeJOS hjemmesiden og fik compilet filen, men nu melder vores NXT fejl.
Man må ikke bruge Thread.currentThread(), så ændrede koden til at arbejde med en boolean også virkede det.
Til sidst lavede vi endnu en forbedring ved at lave en Listener i waitForLoudSound().


Clap Controlled Car:

Vi nåede ikke at blive færdig, men fik startet på programmet.

Her er et link til vores kode : http://cyrixmorten.net/lego/lab3/dLego.zip

Lab 2

Dato: 9/8 - 2010
Varighed: 14 - 17
Medvirkende: Morten Rasmussen, Kenneth Sejdenfaden Bøgh, Morten Nikolaj Pløger.

Mål:
Modificere robot til WallFollower.

Implementere og køre WallFollower.

Forløb:

Efter at have påsat sonic sensoren uploadede vi SonicSenserTester og
kunne konkludere at den maximale afstand der praktisk kan måles er
~150cm.
Det er ikke lydens hastighed der begrænser sensoren, men nærmere
forstyrelser i form af afbøjning af lyden når den kastes tilbage.

Satte måleinterval ned fra 300ms til 30ms og det virkede fint.

Uploadede Tracker og lavede en succesfuld kørsel.

Ombygget påsætning af sensoren så den kan drejes og vi er påbegyndt at skrive
Wallfollow.
Indser at vi har vendt sensoren omvendt så programmet skal ændres til at
få robotten til at køre baglæns.
Vi eksperimenterer med at lade det ene hjul køre med en konstant
hastighed, og korrigere ved at hæve og sænke hastigheden på
det andet hjul.

Det lykkedes os at få Wallfollower til at virke ved at lade vores robot
lave en stor korregering hver gang den er for tæt på en væg, og en meget lille
korregering når den er for langt væk fra en væg. På den måde kom
vi omkring problemet med at sensoren nødvendigvis får store afstande
tilbage så snart robotten(og sensor) drejer væk fra væggen.

Derudover endte vi med at justere på begge hjuls hastigheder, frem for
kun den ene, for at få en skarp nok reaktion.

I starten havde vi den samme korregering både imod- og væk fra væggen,
hvilket selvfølgelig gik galt, idet der blev drejet for meget mod
væggen.

Lab 1

Dato: 2/8 - 2010
Varighed: 14 - 17
Medvirkende: Morten Rasmussen, Kenneth Sejdenfaden Bøgh, Morten Nikolaj Pløger.

Mål:
Få installeret LeJOS.
Samle robot til LineFollower.

Forløb:

Idag har 2 ud af 3 mand i vores gruppe fået installeret leJOS. Tilsyneladende virker det uden problemer på Fedora,
samt Ubuntu <= version 9.

Efter installationen kørte vi en flash og sample/Tones uden problemer.

Det lykkedes at gøre robotten færdig selvom vi manglede en del nr. 13, hvor vi brugte en 15'er istedet. Derfor har
vi modificeret opsætningen en smule for at kompensere for ændringen.

Fik robotten til at følge den sorte streg.

Vi eksperimenterede med at placerer lyset i forskellig højde samt hvor ofte der bliver foretaget målinger, og måtte
konstatere at lyset ikke skal være for tæt ved jorden. Da vi prøvede at sænke antal ms mellem målingerne lod det ikke
til at have nogen effekt så 10ms er muligvis en øvre grænse for hvor hurtigt motorerne kan reagere.