torsdag den 8. oktober 2009

Øvelse 5: Light Sensor Calibration

Dato

2. Oktober 2009

Tidsforbrug

3 timer

Deltagende gruppemedlemmer

Martin Aksel Jensen, Kim Munk Petersen

Mål

  1. Kalibrere lyssensoren så den kan detektere 3 forskellige farver: sort, grøn og hvid.
  2. Bruge lyssensoren til at bygge en line-follower som standser i et grønt felt.

Resultater

Black-White sensor

Vi startede med at genskabe vores line-follower-robot fra øvelse 1. Herefter testede vi BlackWhiteSensor.java som er givet i opgavebeskrivelsen. Vores testprogram skrev på NXT-brick'ens LCD hvilken farve lyssensoren registrerede. Herunder ses den vigtige del af vores test-program:

         while (! Button.ESCAPE.isPressed()) {

             LCD.drawInt(bwSensor.light(),4,10,2);
             LCD.refresh();
             
             if ( bwSensor.black() )
                 LCD.drawString("Black",4,3);  
             else
                 LCD.drawString("White",4,3);
             
             Thread.sleep(10);
         }

Efter at have konkluderet at BlackWhiteSensor.java fungerede efter hensigten, testede vi en version af line-followeren, også givet i opgaven, der brugte denne sort-hvid sensor. Resultatet var at robotten fint var i stand til at følge den sorte streg på det hvide underlag.

Sort-hvid sensoren virker ved at man kaliberer sensoren, eller nærmere programmet, til en værdi for sort og en værdi for hvid. Programmet laver herefter en threshold værdi som er medianen af de to målinger. Lysværdier under denne grænse tolkes som sorte og værdier over denne grænse tolkes som hvide.

Black-White-Green sensor

Svarende til Black-White sensoren, lavede vi en klasse som skal kaliberes med 3 målinger, en for sort, en for grøn og en for hvid. Herefter opdeler vi lyssensorens måleområde i 3 intervaller, et for hver farve. Denne gøres ved at opstille to tresholds, ét mellem sort og grønt og ét mellem grønt og hvidt. Grunden til denne fordeling er at lysmålinger for grøn klart nok ligger mellem lysmålinger for sort og hvid. De to tresholds blev beregnet på følgende måde:

// The threshold is calculated as a weighted average
blackGreenThreshold = (int)((blackLightValue+greenLightValue*weight)/3f);
greenWhiteThreshold = (int)((greenLightValue+whiteLightValue*weight)/3f);

Vi testede denne black-white-green lyssensor ved at lave et testprogram der på NXT-brick'ens LCD udskrev den aktuelt registrerede farve. Herefter udvidede vi Line-follower-programmet således at robotten stoppede når lyssensoren registrerede farven grøn.

LEGO model


Ingen kommentarer:

Send en kommentar