TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
colorsensor

7. COLORSENSOR

 

 

DU LERNST HIER...

 

der Roboter mit seinem Colorsensor die Farben der Unterlage erkennen kann

 

 

WIE FUNKTIONIERT EIN COLORSENSOR

 
Der Colorsensor dient als Lichtsensor, der die Helligkeit der Unterlage misst, wenn du die Befehle für den Lichtsensor verwendest. Der Sensor kann aber auch Farben erkennen. Er ist mit einer Leuchtdiode zur Beleuchtung der darunterliegenden Fläche und drei Fotodioden, welche die rote, grüne und blaue Komponente des reflektierenden Lichts messen, ausgestattet.  
 

Die RGB-Werte , die der Sensor misst, sind abhängig von der Umgebungsbeleuchtung und von der Entfernung zum Objekt. Die besten Ergebnisse erreicht man in einer Entfernung von 2-5 Millimeter.

 

 

MUSTERBEISPIELE

 

Beispiel 1: Farben erkennen

Der Roboter mit einem Farbsensor bewegt sich auf einen Farbstreifen und erkennt die darunterliegende Farbe. Ist der Colorsensor z.B. am Port 3 angeschlossen, gibt die Funktion cs3.getColor() die erkannte Farbe als String zurück. Die Funktion getColor() erkennt die Standardfarben BLACK, BLUE, GREEN, YELLOW, RED und WHITE. Wenn keine dieser Farben erkannt wird, wird UNDEFINED ausgeschrieben.

 

Für die Simulation verwendest du das Hintergrundbild "colors.png". Im Realmodus kannst du die Datei colorstrip.pdf herunterladen und den Farbstreifen ausdrucken.

 

from grobot import *

RobotContext.useBackground("sprites/colors.png") 
RobotContext.setStartPosition(250, 480)

setSpeed(10)
forward()
repeat:
    c = cs3.getColor()
    print c
    delay(100)
► In Zwischenablage kopieren

 

Beispiel 2: Farben und Sound

Der Roboter kann mit dem Befehl playTone(f, t) einen Ton mit der Frequenz f während der Zeit t abspielen.

 
c
d
e
f
g
 

In deinem Beispiel bewegt sich der Roboter hin und her auf einem Farbstreifen und spielt für jede Farbe einen anderen Ton ab. Da der Sensor alle 100 ms eine Messung vornimmt, muss du in deinem Programm dafür sorgen, dass der Ton nur dann abgespielt wird, wenn er eine neue Farbe sieht. Dazu verwendest du die Variable oldColor, in der du jeweils den aktuellen Farbwert speicherst. Ein Ton wird nur dann abgespielt, wenn eine neue Farbe erkannt wird (color != oldColor). Im realen Modus musst du die Geschwindigkeit reduzieren.

 

from grobot import *

RobotContext.useBackground("sprites/colors.png") 
RobotContext.setStartPosition(250, 480)

#setSpeed(5)
oldColor = "UNDEFINED"
while not button_escape.was_pressed():
    color = cs3.getColor()
    if (color != oldColor):
        oldColor = color
        if color == "BLACK":
            playTone(264, 500)
            forward()
        elif color == "BLUE":
            playTone(297, 500)
        elif color == "GREEN":
            playTone(330, 500)
        elif color == "YELLOW":
            playTone(352, 500)
        elif color == "RED":
            playTone(396, 500)
            backward() 
        print color
    delay(100)
exit()    
► In Zwischenablage kopieren

 


Beispiel 3: RGB-Farbwerte abfragen

In vielen Situationen möchtest du mit dem Colorsensor nicht nur die Grundfarben, sondern auch beliebige "Mischfarben" erkennen. In diesem Fall verwendest du mit Vorteil den Befehl getColorRGB(), der die drei Farbkomponenten (rot, blau, grün) als Liste zurückgibt. Der Sensor gibt für jede Komponenten eine Zahl zwischen 0 und 255 zurück. Beim realen Roboter liegen diese Zahlen in der Regel viel tiefer und sind insbesondere von der Distanz zur Farbfläche abhängig.

 

Als erstes schreibst du ein Testprogramm, der die drei Werte ausschreibt. Beim realen Roboter kannst du den Befehl forward() deaktivieren und den Roboter jeweils an eine der Farbflächen stellen.

from grobot import *

RobotContext.setStartPosition(350, 490)
RobotContext.useBackground("sprites/roboroad.gif")

setSpeed(20)
forward()
repeat:
    c = cs3.getColorRGB()
    print c
    delay(300)
► In Zwischenablage kopieren

Bei einer ähnlichen Vorlage wie auf dem oberen Bild, erhältst du im Realmodus etwa folgende Werte:

  Realmodus Simulation
Auf dem schwarzen Streifen: [4, 4, 3] [0, 1, 0]
Auf der gelben Fläche: [76, 48, 7] [0, 160, 175]
Auf der blauen Fläche: [7, 19, 16] [255, 255, 1]

Mit Hilfe dieser Werte kannst du jetzt den Roboter steuern, so dass er sich auf dem schwarzen Weg bewegt. Auf der blauen Fläche korrigiert er die Richtung auf dem Linksbogen, auf der gelben Fläche auf dem Rechtsbogen, auf der schwarzen Fläche fährt er geradeaus. Da sich bei den Sensorwerten um Messwerte handelt, die einer Streuung unterliegen, darfst du die Werte nie mit "==" testen, sondern mit ">" bzw. "<" . Häufig genügt es nur eine oder zwei Komponenten zu überprüfen.

 

from grobot import *

RobotContext.setStartPosition(50, 490)
RobotContext.useBackground("sprites/roboroad.gif")

setSpeed(10)
while not button_escape.was_pressed():
    c = cs3.getColorRGB()  
    if c[0] < 10 and c[1] < 10 and c[2] < 10:
        forward()
    if c[0] < 10 and c[1] > 15:
        leftArc(0.06)
    if c[0] > 50 and c[1] > 35:
        rightArc(0.06)
    delay(10)
exit()    
► In Zwischenablage kopieren

Für die Simulation muss du die Werte entsprechend anpassen und die Geschwindigkeit etwa auf 30 vergrössern.

 

 

 

MERKE DIR...

 

Mit cs3.getColor() erkennt der am Port 3 angeschlossene Colorsensor die Grundfarben RED, BLUE, YELLOW, GREEN, BLACK und WHITE.

Mit cs3.getColorRBG() gibt der Colorsensor die drei Farbkomponenten als Liste zurück.

Der Colorsensor muss sich im Abstand 2 - 5 mm von der Farbfläche befinden.

 

 

ZUM SELBST LÖSEN

 

 


1.


Speed Control
Ein Roboter mit einem Colorsensor soll aufgrund der Farbe, die er "sieht" seine Geschwindigkeit anpassen. Auf einem grünen Streifen muss er schnell, auf dem gelben Streifen langsam fahren und bei Rot muss er 2 Sekunden anhalten, bevor er wieder losfahren darf.

Für die Simulation verwendest du das Bild
"sprites/colortrack.png".

 
 
2.

Der Roboter soll mit Hilfe vom Colorsensor und den Farbigen Flächen möglichst effizient den Parcours abfahren.

Für die Simulation verwendest du das Hintergrundbild "sprites/colorparcours.png".

 

3.

Löse die Aufgabe aus dem Beispiel 3 mit einem Lichtsensor. Die Helligkeitswerte der drei Farben unterscheiden sich deutlich voneinander, so dass man den Roboter mit Hilfe dieser Werte längst des schwarzen Pfades steuern kann.

Für die Simulation verwendest du das Hintergrundbild "sprites/roboroad.gif".

 

 

 

 
 

 

7-1
Fachliche Hinweise:

Das Internet ist ein Netzwerk, das sich über die ganze Welt erstreckt. Um ein Chaos zu vermeiden, gibt es feste Regeln für die Kommunikation. Alle Geräte im Internet kommunizieren mittels des Übertragungsprotokolls TCP/IP. Es ist die grundlegende Kommunikationssprache des Internets. Unabhängig von der Hardware, definiert sie, wie die Datenströme in Datenpakete verteilt und mit Hilfe von verschiedenen Online-Diensten über das Netzt transportiert werden. Der Datenverkehr basiert darauf, dass jeder Rechner im Netz eine IP-Adresse besitzt und damit eindeutig identifizierbar ist.

Eine IP-Adresse besteht aus vier Zahlen zwischen 0 und 255, die durch Punkte getrennt sind und binär in 4 Bytes gespeichert werden. Zum Beispiel: 130.094.122.195 (Binär: 10000010 01011110 01111010 11000011). Wegen rasch steigendem Bedarf an IP-Adressen werden auch Adressen, die 6 solche Zahlen haben (IPv6), verwendet.

Geräten, welche über einen Accesspoint am Internet angeschlossen sind, wird bei der Anmeldung mit SSID und Passwort dynamisch eine (lokale) IP-Adresse in der Regel im Bereich 192.168.0.2 - 192.168.0.255 zugeteilt.