fredag den 14. september 2007

ESEA - Labnotes

NXT programmering - Lektion 2
Varighed: 4 timer - kl. 9.00 - 13.00
Gruppemedlemmer: Aslak, Ruben, Lars

Efter at have sluttet sidste session uden at have testet linefollower-koden (se bloggen fra Lektion 1) startede vi dagen i dag med at køre en tur på den til formålet udfærdigede bane. Dette gik helt fint og NXT-køretøjet opførte sig ganske pænt.

Målet for i dag er at arbejde med ultralydssensoren (Ultrasonic Sensor). Dette testes først med pre-fabrikerede java-filer, SonicSensorTest.java og Avoider.java, som benytter klassen Locomotion.java og herefter med en videreudvikling, som skal resultere i en væg-følger WallFollower.java. Efter at have uploadet filen SonicSensorTest.java, fik vi udlæsninger på NXT'ens display, som svarede godt overens med de målte afstande.

Vi oprettede klassen Locomotion.java i Eclipse og compilede den. Dernæst oprettede vi klassen Avoider.java, compilede den, og uploadede koden til NXT'en. Dette medførte den forventede opførsel, hvor NXT-køretøjet kørte hurtigt hen imod væggen og jo tættere pa den kom jo langsommere kørte den, for til sidst at stoppe helt.

Til sidst oprettede vi klassen WallFollower.java og fik lidt inspiration fra Philippe Hurbains hjemmeside og hans væg-følger. Vi oprettede en "blød" version af medlemsfunktionerne Locomotion.right og Locomotion.left, kaldet hhv. softright og softleft. Disse to funktioner giver mulighed for at dreje lidt, dvs. begge hjul roterer, det ene hurtigere end det andet. Ved et højresving er det således venstre hjul som roterer hurtigst, om omvendt. Vi brugte koden fra Avoider.java, som skabelon, og benyttede således den definerede tærskel for minimumafstand. Idet ultralydssensoren er monteret foran på bilen, og vinklet ca. 45 grader til venstre, skal bilen dreje til højre, når afstanden er mindre end tærsklen, og til venstre, når afstanden er større end tærsklen.

Vi compilerede og uploadede vores WallFollower og lavede forsøg med både de skarpe og de bløde sving. Fordelen ved bløde sving, hvor ingen af hjulene stopper helt op på noget tidspunkt, er en mere jævn bevægelse af køretøjet, og pæne håndteringer af 90 graders venstresving. Der opstår lidt problemer når bilen skal dreje til højre, hvor den jo bevæger sig fremad samtidig med at den drejer, her kommer bilen for tæt på den væg som er foran den.
Fordelen ved de "hårde" sving, hvor det kun er et hjul ad gangen, som roterer, er en pæn håndtering af 90 graders højresving. Dog har bilen nu en tendens til at dreje alt for kraftigt ved 90 graders venstresving, så kraftigt, at den næsten kører ind i selve hjørnet.

Det var meningen at kombinere disse to mulige måder at dreje på, ved at kigge på ændringen af den målte afstand fra sidste måling og til den nuværende måling (tilvæksten), og på denne baggrund beslutte, om der er brug for et kraftigt, eller blødt sving. Denne funktionalitet nåede vi desværre ikke at implementere, og derfor heller ikke at teste.

Ingen kommentarer: