lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:lichtsensor

This is an old revision of the document!


Lichtsensor

Der Lichtsensor kann Helligkeit und/oder Farbe messen. Dazu wird die zu messende Fläche normalerweise schnell abwechselnd angestrahlt und wieder nicht, und das jeweils reflektierte Licht gemessen. Die Differenz entspricht dann der Helligkeit der gemessenen Fläche.

Um einen Eindruck der gelieferten Werte zu bekommen, kann direkt der Roboter benutzt werden (ohne Programmierung). Gehen Sie wie folgt vor:

  • Auf dem Roboter gehen ins Menu Device browserSensors und wählen dort den color Sensor aus.
  • Scrollen Sie nach unten und versichern Sie sich, dass der Modus COL-REFLECT eingstellt ist. Falls nicht, ändern Sie das weiter unten.
  • Wählen Sie dann Watch values aus und stellen Sie den Roboter auf verschiedene Flächen (vor allem der Teppich und die Klebestreifen sind interessant).
  • Notieren Sie sich zu jeder der verschiedenen Flächen die typische kleinsten und grössten Werte, die gemessen werden. Bewegen Sie dabei den Roboter auch.
  • Mit den gemessenen Wertebereich können später diese Bereich erkannt, bzw. sauber voneinander unterschieden werden.

Kenn man nun die Werte, kann damit z.B. bis zu einer Linie gefahren werden:

  • Legen Sie ein neues EV3-Projekt an und fügen Sie folgenden Code hinzu:
licht = ColorSensor(Port.S3)  # Bitte Anschluss überprüfen.
 
links = Motor(Port.A)
rechts = Motor(Port.B)
fahrwerk = DriveBase(links, rechts, 55, 135)  # Motor links, Motor rechts, Raddurchmesser (in mm), Radabstand (in mm)
 
fahrwerk.drive(150,0)    # Vorwärts ohne Kurve
hell = licht.reflection()
while hell<50:
    hell = licht.reflection()
    print(hell)
fahrwerk.stop()
  • Passen Sie nötigenfalls die Parameter fürs DriveBase an.
  • Passen Sie den Wert für die Bedingung der while Schlaufe an, damit sauber zwischen Teppich und Klebeband unterschieden werden kann.
  • Testen Sie das Programm.

Situation

Der Roboter startet mir dem Lichtsensor auf einer 1m Linie. Der Roboter soll mit dem Lichtsensor genau auf der gegenüberliegenden 1m Linie stoppen, und das möglichst schnell.

Das Score ist die Zeit in Sekunden plus $\frac{1}{10}$ vom Quadrat des Abstands in mm von der Mitte vom Klebestreifen.

  • Beschreiben Sie in Pseudo-Code (mit den zu Verfügung stehenden «Bausteinen») ein bis zwei Strategien, wie das möglichst genau und trotzdem schnell passieren könnte.
  • Setzen Sie diese Strategien in Python um, und testen Sie.
  • lehrkraefte/blc/informatik/glf22/robotik-mit-svcode/lichtsensor.1676020822.txt.gz
  • Last modified: 2023/02/10 10:20
  • by Ivo Blöchliger