Ljussensorer

Ett återkommande problem är ljussensorerna. Jag har deltagit på många tävlingar och jag hör alltid kommentarer om att ljusvärdena inte stämmer. Det är alltid fel på dem!

Det ligger en hel del i det, ljussensorerna är känsliga och det måste vara rätt värden för att roboten ska reagera korrekt. Dock går det att göra mycket för att göra sensorerna mindre känsliga.

Ljussensorer
En ljussensor fungerar genom att mäta det infallande ljuset. Den sänder oftast ut en egen ljusstråle, och mäter hur mycket som återreflekteras in i sensorn. Eftersom olika färger reflekterar olika bra, kommer sensorn kunna avgöra vad den ser. Men egentligen mäter sensorn bara ljusintensitet. Om t.ex. en viss grön reflekterar lika mycket som en viss röd färg, så kommer sensorn inte kunna avgöra vilken färg det är.
Dessutom påverkas sensorn kraftigt om det är olika mycket ljus runtomkring sensorn.

Om sensorn kollar på en svart linje, men samtidigt en ficklampa eller fotoblixt lyser på sensorn kommer den troligtvis tro att det är vitt underlag. Detta gör att många robotar missar linjen och åker fel.

Kalibrering
Kalibrera alltid sensorerna när du kommer till en ny bana. Troligtvis så är förhållandena i rummet ni tränat inte alls lika som på tävlingen. Så när ni kommer till tävlingen bör ni läsa av ljusvärdena på tävlingsbanan. 

När ni läser av värdena ska ni hämta de ljusa värdena på det mörkaste stället på arenan, och de mörkaste värdena på det ljusaste området av arenan. Detta för att roboten ska veta att det är ljust underlag även fast omgivande ljus är dåligt.

Vi brukar läsa av värdet av de svarta områdena i Rescue B på övervåningen eftersom det oftast är ljusast där. Och vi läser oftast av det vita golvet i skuggan under övervåningen, eftersom det är mörkast där.

Avskärma
Eftersom sensorna är känsliga för yttre ljuskällor bör de sitta skyddade. Försök att placera sensorna så att de alltid befinner sig i skugga. Ni kan testa genom att lysa på roboten med en ficklampa och mäta ljusvärdet från sensorn med dess egen ljuskälla avstängd.

Sätt dem gärna mitt i roboten, eller bygg nån form av låda som ni kan placera sensorerna i. Det behöver inte bara vara av lego, använd kartong eller nått annat bra material!

Nära marken
Om man placerar sensorerna nära marken så kan mer av sensorns eget ljus reflekteras från underlaget. Eftersom sensorns eget ljus är konstant kommer det ge bättre ljusvärden från underlaget.

Om sensorn sitter nära finns det dessutom mindre risk att yttre ljus kommer in under sensorn och kan störa den. Den skuggar sig själv.

Observera att sensornerna hela tiden bör ha konstant avstånd till marken. Om avståndet ändras så kommer mängden reflekterat ljus också att ändras, vilket får till följd att den läser av fel värden. Tänk speciellt på detta vid början och slutet av Rampen!!

Använd bakgrundsbelysning
Sensorn påverkas mindre av omgivande ljus om den själv lyser upp underlaget. Då är det konstant ljus som reflekteras tillbaka. Det går ibland att få ännu bättre värden genom att fästa en ficklampa bredvid ljussensorn som lyser på underlaget. Det bör helst vara en ljuskälla med alla våglängder, eftersom olika färger reflekterar olika våglängder. Men vill man bara t.ex. upptäcka röd färg är det smartare att ha rött ljus, eftersom det då kommer reflektera mycket rött-ljus och absorbera resten. 

Autokalibrera
Det går att programmera så att roboten känner av små förändringar i ljus och kalibrerar om sig samtidigt som den kör.

Ett primitivt sätt för roboten att autokalibrera, är att inte ha ett fast tröskelvärde mellan vitt och svart, utan istället reagera på en förändring.

Oftast så tror roboten att det är svart om ljusvärdet är mindre än t.ex. 40%.
Men om man kör roboten i ett mörkt rum kanske vitt helt plötsligt ligger på 35% och då kommer roboten tro att allting är svart.
En bättre lösning är att roboten tror att det är svart om värdet minskar med t.ex. 10 procentenheter. Det innebär att den kan fungera i vilket rum som helst, eftersom det existerar en skillnad mellan svart och vitt oavsett om taklampan är tänd eller inte.

Ändra skala för lego ljussensorn

Eftersom LEGOs ljussensor endast returnerar heltal kan det ibland vara svårt att få tillräcklig upplösning för att kunna se skillnad mellan färger (ljusintensiteter). 
Det går att sätta ett högsta och ett lägsta ljusvärde via menyn "Verktyg">"Kalibrera Sensorer" i NXT-G på datorn. Detta gör att skalan "zoomas in" på just detta spann. 

Kalibreringen sker inte per sensor, eller per port. Samma max/min värde kommer användas för alla ljussensorer, även om du bara kalibrerar t.ex. port 2. 

Jag har själv inte använt mig utav det här, jag är lite skeptiskt till att det fungerar bra då sensorn i sig har samma känslighet, och det är samma analog-till-digital-omvandlare som används i NXTn. Det är endast i mjukvaran som omskalningen sker... 

Jag tror mer på de andra tipsen, för att få bättre ljusvärden. 

glqxz9283 sfy39587stf02 mnesdcuix8
sfy39587stf03
sfy39587stf04