torsdag den 27. september 2007

NXT Programmering, Lesson 4

Varighed: 4-timer, Deltagere: Mads, Janus og Rolf

Målet med dagens arbejde er at bygge en foreløbig bot til RobotRace næste uge. Vi skal blandt andet have testet lys sensorens ævne til at skelne mellem hvid/sort/grøn, da dette er de 3 farver som banen vil bruge.

Black White Detection

Vi skrev et lille program som kladte calibrate() på BlackWhiteSensor og derefter skrev ud om black() og white() var true/false, og hvilken værdi light() returnerede.

Dette program blev så testet, ved at kalibrere med en hvid overflade og noget sort tape. Herefter blev outputtet af programmet observeret mens sensoren var rettet imod forskellige farver

Hvis sensoren så den hvide flade den var kalibreret til viste den som forventet at det var hvid, og ligeså hvis sensoren så den sorte farve blev denne identificeret som sort.

Der blev også testet op imod nogle forskellige grønne flader, og her var resultatet lidt mere rodet. Nogle lyse grønne flader blev set som hvide, nogle som sorte.

Forklaringen til dette skal findes i måden BlackWhiteSensor calibrate() fungerer på, den måler en sort værdi, og en hvid værdi og udregner herefter gennemsnittet af de to værdier, altså den værdi der ligger midt imellem. Klassen arbejder så på om en readValue er større eller mindre end det udregnede threshold, og dette tolkes så som hvid eller sort. Dette betyder at alt under threshold vil ses som sort, og alt over ses som hvidt. (Hvis man rammer præcist threshold værdien, ser klassen farven som hverken sort eller hvid)

Line Follower with Calibration

Programmet som skal følge den sorte linje via BlackWhiteSensor virker efter hensigten, men bot'en kører langsomt. Nogle gange skete det at sensoren så "mønsteret", i det papir der er på gulvet i øvelseslokalet, som sort, og derfor blev fanget og kom væk fra linjen.

ColorSensor with Calibration

Da vi havde lavet vores første udgave af ColorSensor kom vi ud for et mærkeligt problem, under uploading af programmet crashede NXT'en med en Exception Class 11, som ifølge exception oversigten på lejos er en ArrayIndexOutOfBounds, det vidste sig at være fordi vi havde for mange programmer liggende på NXT'en og ved at slette nogle programmer var fejlen væk.

Første test af ColorSensor var ummidelbart en succes. Efter kalibrering kunne klassen se forskel på sort, hvid og en målfarve. Dog gav lyset lidt problemer og nogle gange hvis solen ramte lige ind mod sensoren troede den den så målfarven istedet for sort, hvilket ikke er så godt.

Anden omgang prøvede vi at bruge en RCX LightSensor istedet for den nye NXT sensor, for at se om den er bedre/dårligere til at se forskel på farverne. Ummidelbart var vi bedre tilfreds med RCX sensorens evne til at se forskel på de farver vi gav den, og den virkede mindre følsom overfor sollys, derfor har vi valgt at bruge RCX Light sensors til vores bot.

Line Follower that stops in a Goal Zone

Så startede arbejdet på selve bot'ens design. Vi valgte at bruge den "grund-bot" som vi har brugt i de andre uger, og modificere den med diverse ændringer. Fx. har vi skiftet hjulene ud med nogle større hjul, og ændret lidt på "baghjulet" så det nu er mere stabilt, og passer i højden til de nye front-hjul.

Så har vi også bygget en SensorRack, hvor man kan montere de gamle RCX Lys sensors med varibel afstand.

Vores første control program prøver at holde en lys sensor på hver side af den sorte stribe og så korrigere ud fra om en af sensorerne kommer ind over den sorte streg.

I de første forsøg blev det hurtigt indlysende at det var en god ide med 1 sensor på hver side af stregen, men vi blev enige om at det ikke var nok. Så anden design som skal laves næste gang, vil have en sensor mere lidt længere ude til hver side. Disse udersensorer skal så bruges til at se om man er "langt" fra den optimale retning, og de 2 inderste skal bruges til mindre korrrektioner.

Konklusion

Alt i alt kom vi langt med designet til vores line follow racer. Og vi er temmelig sikre på at vores næste design med 4 sensorer kommer til at fungere rigtigt godt. Det var også rart at få tjecket hvor gode lys sensorerne var til at skelne hvid/sort/tredje farve. Vi havde også nogle diskutioner omkring andre sensor opsætninger, eller andre strategier, men det endte med vi valgte den løsning som er beskrevet ovenfor, da vi var enige om at den var mest robust da vi endnu ikke kender banens udseende.

/+MJR

Ingen kommentarer: