fredag den 2. november 2007

ESEA - Labnotes

NXT programming - Lektion 7
Varighed: 4.0 timer - kl. 9:00-13:00
Gruppemedlemmer: Aslak, Ruben og Lars

Gruppens mål for dagens lektion:
  • Bygge en robot, som kan benyttes til at undersøge opførslen på Braitenbergs køretøjer 2a og 2b. Disse køretøjer kan ses på lektionsplanen: http://www.legolab.daimi.au.dk/DigitalControl.dir/NXT/Lesson7.dir/Lesson.html
  • På baggrund af Tom Deans noter at implementere disse to køretøjer i java-kode. Til forskel for Tom Deans noter, er det meningen, at der skal implementeres 2 tråde, som hver især tager sig af kontrollen mellem samplingen af en lysføler og styringen af en motor. Hvilken databehandling som indgår i denne "kontrol" omtales i detalje, når vi når så langt. Først vil vi blot omregne imellem det tilgængelige lysintensitets-interval og det mulige interval for "power" til motorene.

Fabrikation af Braitenberg-robot

"First things first", som det hedder. Dette indebærer, at bygge en robot, som ligner de skitser på dagens lektion. Et køretøj, som har 2 lysfølere foran, og som drejer udelukkende på baggrund af hvilken af baghjulene, som kører hurtigst. Der er to Braitenberg-variationer. Den første har en kobling mellem den lysføler til højre og den motor, som driver højre baghjul og mellem den lysføler til venstre og den motor, som driver venstre baghjul. Den anden variation bytter om på koblingerne, således at venstre lysføler kobles til højre baghjul og højre lysføler kobles til venstre baghjul.

I dag startede vi med at bruge lidt tid på at modtage kritik af vores labnotes frem til nu. Dette gav os gode tilbagemeldinger, både ros og gode råd til forbedringer. Der var også lidt tid til at diskutere muligheder for emner til det afsluttende arbejde.

Robotten tog lang tid at bygge. Problemet var faktisk at udarbejde en forhjulskonstruktion, som virkede stabil nok, idet robotten skubber bagfra. Tidligere har vi arbejdet med den "default" robot, som kan ses i manualen, som følger med de lånte legoklodser. Denne "default" robot trækker på forhjulene og trækker et baghjul, som blot følger efter og kan rotere frit (dreje frit om en vertikal akse). Vores ønske er at bygge en robot som ligner Braitenbergs skitser så meget som muligt. Problemet med det første udkast til en forhjulskonstruktion var, at rotationspunktet for aksen ned til forhjulet var lavet lige over hjulet. Dette gør det vanskeligt at få hjulet til at dreje, når baghjulene skubber bagfra. Løsningen blev at bygge et simpelt forhjul, som har rotationspunkt forskudt i forhold til centrum af selve hjulet. Dette svarer til princippet for baghjulet på den førnævnte "default" robot. Følgende billeder viser lidt tydligere hvordan den færdige forhjulskonstruktion ser ud. Billederne viser yderligere hvordan vores Braitenberg-robot ser ud.

(indsæt billeder..)

Implementering af koden

Vi påbegyndte arbejdet med koden ved at danne 2 tråde i java. Disse tråde skal hver især aftaste en lysføler (vi bruger de "gamle" fra RCX-tiden) og styre en motor af NXT-typen.
Den første version af koden skrev intet ud på displayet (noget vi bøvlede en del med under arbejdet med "Robot Race" robotten) og gav bare et niveau til begge hjul. Denne kode fik en exception efter at have kørt et ganske kort stykke tid. Forsøgte vi at udskrive noget i displayet fik vi en exception med det samme, og koden kom aldrig i gang. Altså er der 2 ting, som skal rettes: Koden skal ændres, således at den ikke stopper af sig selv, og det skal være muligt at udskrive i displayet. Disse 2 opgaver skal løses inden vi kan komme i gang med den egentlige opgave, nemlig at realisere Braitenberg-robot 2a og/eller 2b. Den ene java-fil 'RobotA.java' starter de to tråde, og de to andre (som er ens i koden) tager sig af at læse hhv. den højre og venstre lyssensor og styre hhv. den højre og venstre motor. Disse to sidstnævnte filer hedder 'MotorLightRight.java' og 'MotorLightLeft.java'.

Vi aftalte at mødes igen inden næste uges forelæsning.

Koden, som den så ud ved afslutningen:

http://userportal.iha.dk/~20060651/JavaFiles_ESEA/Lektion7/RobotA.java

http://userportal.iha.dk/~20060651/JavaFiles_ESEA/Lektion7/MotorLightRight.java

Ingen kommentarer: