Edison Robotik: Lektion 8

Arbeitsblatt 8.1 - Zeilensensor
In dieser Lektion erfährst du mehr über den Zeilensensor des Edison-Roboters und wie Edison mit diesem Sensor feststellen kann, ob er sich auf einer reflektierenden oder nicht reflektierenden Oberfläche befindet.
Wie funktioniert der Zeilensensor von Edison?
Ihr Edison-Roboter ist mit einem Zeilensensor ausgestattet, der sich in der Nähe des Netzschalters an der Unterseite des Roboters befindet. Dieser Sensor besteht aus zwei elektronischen Hauptkomponenten:
1. eine rote Leuchtdiode (LED) und
2. ein Fototransistor (Lichtsensor).
Dieses Bild zeigt einen Querschnitt des Edison-Zeilensensors:

ngdbhhnjdshbb

Die LED des Zeilensensors beleuchtet die Oberfläche, auf der der Edison-Roboter fährt.
Die Fototransistorkomponente ist ein Lichtsensor. Der Fototransistor misst die Lichtmenge, die von der Oberfläche unter Edison reflektiert wird.
Du bist dran:
Aufgabe 1: Schwarz gegen Weiß
Wenn mehr Licht zurück zum Fototransistor von Edison reflektiert wird, ergibt sich ein höherer Lichtwert.
Experimentiere, um festzustellen, ob eine weiße oder eine schwarze Oberfläche mehr Licht reflektiert.
Verwende Übungsblatt 8.1 oder ein Stück weißes und ein Stück schwarzes Papier. Schalte Edison ein und drücke die runde Taste zweimal, damit die LED für die Linienverfolgung aufleuchtet. Hebe Edison leicht vom Papier ab und betrachte den runden Lichtpunkt, den die LED auf der Oberfläche ausstrahlt. Vergleiche, wie hell der Lichtfleck auf einer schwarzen und dann auf einer weißen Fläche erscheint.
1. Erscheint der LED-Lichtfleck auf einer schwarzen oder weißen Oberfläche heller?
Aufgabe 2: Rot, Grün und Blau
Wie du in Aufgabe 1 gesehen hast, wird von einer weißen Oberfläche mehr Licht reflektiert als von einer schwarzen Oberfläche. Deshalb erscheint das Licht auf einer weißen Oberfläche heller.
Befindet sich der Fototransistor auf einer weißen Oberfläche, ergibt sich ein höherer Lichtwert als auf einer schwarzen Oberfläche. Eine schwarze Fläche wird daher als „nicht reflektierend“ und eine weiße Fläche als „reflektierend“ eingestuft.
Die Fähigkeit des Fototransistors zu bestimmen, ob sich Edison auf einer reflektierenden oder nicht reflektierenden Oberfläche befindet, ermöglicht es, den Roboter so zu programmieren, dass er auf die Oberfläche reagiert, auf der er fährt.
2. Überlege, wie der Line Tracker auf die folgenden Oberflächenfarben reagieren würde. Würde der Line Tracker jede Farbe als reflektierend oder nicht reflektierend sehen?
Denke daran, dass Edisons Line-Tracker-LED rotes Licht aussendet. (Hinweis: Du kannst deine Antworten mit dem Übungsblatt 8.1 testen.)
Rote Fläche ________________________
Grüne Fläche ________________________
Blaue Oberfläche ________________________

Arbeitsblatt 8.2 - Fahren Sie bis zu einer schwarzen Linie
In dieser Lektion schreibst du ein Programm, mit dem dein Edison-Roboter auf einer weißen (reflektierenden) Oberfläche vorwärts fährt, bis eine schwarze (nicht reflektierende) Linie überschritten wird.
Schau dir folgendes Programm an:

wrrqwr
Schaue dir Zeile 13 an. Diese Zeile ruft die Funktion Ed.LineTrackerLed () auf und setzt den Status auf "Ein".
Genau wie beim Hinderniserkennungsstrahl von Edison musst du den Sensor zuerst einschalten, um den Zeilensensor in einem Programm zu verwenden. Durch Einschalten des Zeilensensors wird auch die rote LED des Zeilensensors aktiviert.
Schaue dir nun Zeile 19 an. Diese Zeile ruft die Funktion Ed.PlayBeep () auf. Diese Zeile hat keinen Einfluss auf die Funktionsweise des Zeilenverfolgungsprogramms. Stattdessen dient diese Zeile zum Debuggen.
Debuggen
Beim Debuggen werden Fehler in deinem Programm gefunden. Häufig fügen Programmierer Zeilen wie Zeile 19 in ihren Code ein, um den Programmfluss zu verfolgen.
Nehmen wir an, du führst dein Programm aus, aber der Roboter hält nicht an der schwarzen Linie an. Es gibt zwei mögliche Gründe: (1) Möglicherweise erkennt der Roboter die schwarze Linie nicht, oder (2) es liegt ein Fehler im letzten Ed.Drive () - Befehl vor.
Wenn wir den Piepton hören, wissen wir, dass die schwarze Linie erkannt wurde. Daher wissen wir, dass der Fehler im nächsten Befehl war. Mit diesem zusätzlichen Debugging-Code können wir den Fehler leichter ermitteln.
Zum Debuggen können auch andere Funktionen verwendet werden, z. B. der Befehl Ed.LeftLed (). Mit diesem Befehl können Sie beispielsweise die linke LED einschalten, um anzuzeigen, dass ein bestimmter Punkt im Programm erreicht wurde.
Du bist dran:
Schreibe das Programm mit der EdPy-App und lade es auf deinen Edison-Roboter herunter. Verwende die schwarze Linie auf dem Übungsblatt 8.1, um das Programm zu testen. Du kannt auch eine schwarze Linie auf ein weißes Blatt Papier zeichnen oder schwarzes Isolierband auf einem weißen Schreibtisch verwenden.
Hinweis: Wenn du in einem Programm den Edison-Zeilensensor verwendest, starte den Roboter immer auf der weißen (reflektierenden) Oberfläche - niemals auf der schwarzen (nicht reflektierenden) Oberfläche.
Stelle Edison auf die weiße Fläche und fahre den Roboter in Richtung der schwarzen Linie.
Versuche dann, das Programm erneut mit jeweils einer der drei farbigen Linien auf dem Übungsblatt 8.1 auszuführen. Fahre Edison auf jede farbige Linie zu, um zu testen, ob der Roboter die Linie erkennt und anhält.

1. Gibt es Farben, die Edison nicht sehr gut erkennen kann? Wenn ja, welche Farbe (n)?


2. Warum hast du wohl die Antwort auf Frage 1 erhalten? Warum kann Edison diese Farbe (n) nicht erkennen?

3. Stelle dir vor, du programmierst deinen Edison-Roboter so, dass er einen Slalomkurs mit drei Slalom-Flaggen fährt. Beschreibe, wie du die Funktionen Ed.PlayBeep (), Ed.LeftLed () oder Ed.RightLed () in einem Programm für Debugging-Zwecke verwenden können und was sie tun würden.

Arbeitsblatt 8.3 - Fahre innerhalb einer Grenze
In dieser Lektion müssen Sie ein Programm schreiben, mit dem Edison mithilfe des Zeilensensors des Roboters innerhalb eines schwarzen Randes bleibt.
Zuerst müssen wir das Programm mit Pseudocode planen.
Pseudocode
Das Planen deines Programms, bevor du mit dem Codieren beginnst, ist eine wichtige und nützliche Fähigkeit beim Programmieren.
Eine Möglichkeit, dies zu tun, besteht darin, mithilfe eines Ablaufdiagramms den Programmablauf zusammenzufassen, den du in Lektion 6 kennengelernt hast. Pseudocode ist eine andere Möglichkeit, dein Programm darzustellen, bevor du mit dem Codieren beginnst.
Mit Pseudocode kann ein Programm auf vereinfachte, leicht lesbare Weise geschrieben werden. Pseudocode ähnelt einer vereinfachten Programmiersprache, basiert jedoch nicht auf einer bestimmten Programmiersprache und ist daher syntaxfrei. Stattdessen wird im Pseudocode die englische Sprache verwendet, um die Funktionsweise des Programms zu beschreiben. Deshalb wird der Pseudocode auch als "strukturiertes Englisch" bezeichnet.
Wenn du dein Programm mit Pseudocode planen, solltest du wie in der Programmiersprache einrücken, damit der Pseudocode leicht zu lesen und zu verstehen ist.
Hier ist ein Beispiel für einen Pseudocode, der ein Programm beschreibt, mit dem der Edison-Roboter mithilfe des Zeilensensors innerhalb einer nicht reflektierenden Grenze bleibt:

gfhwrtk
Hier ist der entsprechende Code in EdPy:

rtzui


Vergleiche den Pseudocode mit dem Programm. Sieh, wie der Pseudocode in das Python-Programm übersetzt wurde?
Du bist dran:
Schreibe folgendes Programm:

ertcvb
Lade das Programm auf deinen Edison-Roboter herunter und führe es aus, um zu sehen, wie es funktioniert.
Verwende Übungsblatt 8.2 als Rahmen, um das Programm zu testen. Du kannst auch einen eigenen Rand mit einem großen Stück Papier und einem dicken schwarzen Stift erstellen oder ein schwarzes Klebeband auf einem weißen Schreibtisch oder dem Boden verwenden, um einen großen Rand zu erstellen.
Ändere das Programm:
Versuchen Sie, den Stop zu entfernen, indem Sie die Zeile 18 des Programms entfernen. Experimentieren Sie dann mit dem Ändern des Programms, um verschiedene Geschwindigkeiten zu verwenden. Testen Sie Ihre geänderten Programme, um zu sehen, was passiert.

1. Wie schnell kann der Roboter fahren, bevor es Probleme gibt?

 
2. Was passiert, wenn der Roboter zu schnell fährt?

Arbeitsblatt 8.4 - Folge einer Linie
In dieser Lektion verwendest du den Zeilentracker des Edison-Roboters, um ein Programm in EdPy zu schreiben, mit dem Edison jeder schwarzen Linie folgt.
Dazu müssen wir zunächst einen Algorithmus zum Folgen einer schwarzen Linie erstellen.
Was ist ein Algorithmus?
Nehmen wir an, du möchtest deinen Freunden beibringen, wie man Obstkuchen macht. Wenn du weisst, dass alle Ihre Freunde Äpfel haben, kannst du einfach ein Rezept für Apfelkuchen aufschreiben.
Möglicherweise haben jedoch nicht alle deine Freunde Äpfel. Was ist, wenn einer deiner Freunde Heidelbeeren, ein anderer Kirschen und ein dritter Äpfel hat? Sie können nicht alle das Apfelkuchenrezept befolgen. Sie müssten für jede Frucht ein eigenes Rezept schreiben.
Was ist, wenn du nicht weisst, welche Früchte deine Freunde haben? Wie könntest du ihnen beibringen, Obstkuchen zu machen?
Unabhängig davon, welche Früchte sie haben, müssen alle deine Freunde die gleichen grundlegenden Anweisungen befolgen: Mache den Teig, fülle den Kuchen mit den Früchten und backe den Kuchen.
Dieser neue Befehlssatz ist ein Beispiel für einen Algorithmus.
Ein Algorithmus besteht aus einer Reihe von Anweisungen zur Lösung einer Reihe von Problemen. Ein Algorithmus legt einen Prozess oder einen Satz von Regeln fest, die befolgt werden müssen, um ein Problem im Satz zu lösen.

Algorithmen in der Programmierung
In der Programmierung haben wir oft eine Reihe von Problemen, die wir lösen möchten.
In dieser Lektion möchten wir zum Beispiel, dass Edison jeder schwarzen Linie folgt. Wir haben daher folgende Probleme: Folgen Sie jeder schwarzen Linie. Jede bestimmte Zeile, der Edison folgt, ist ein neues Problem in diesem Set.
Nehmen wir an, du zeichnest eine schwarze Linie, der Edison folgen soll. Damit Edison deiner Linie folgt, kannst du ein Programm schreiben, mit dem Edison den genauen Pfad der Linie ermittelt. Wenn du jedoch eine neue Zeile erstellen, musst du ein ganz neues Programm für diese neue Zeile schreiben.
Stattdessen kannst du einen Algorithmus erstellen.
Der Algorithmus erzeugt ein Programm, das für alle Probleme in der Menge funktioniert. Auf diese Weise wird nicht für jedes neue Problem ein ganz neues Programm benötigt.
Um unsere Probleme zu lösen, benötigen wir den Algorithmus, um einen Befehlssatz zu erstellen, der für jede schwarze Linie funktioniert.
Du kannst einen Algorithmus mit Pseudocode oder einem Flussdiagramm planen, genau wie du es tust, wenn du ein Programm planst.
Hier ist ein Algorithmus im Pseudocode, mit dem Edison jeder schwarzen Linie folgen kann:

qayxc
Dieser Algorithmus besagt, dass der Edison-Roboter nach rechts fahren und den Sensor in Richtung der weißen Oberfläche bewegen sollte, wenn sich der Zeilensensor auf einer nicht reflektierenden Oberfläche (schwarz) befindet. Befindet sich der Linienverfolgungssensor nicht auf einer schwarzen Fläche, sollte der Roboter nach links vorwärts fahren und den Sensor in Richtung der schwarzen Fläche bewegen. Auf diese Weise bewegt sich der Roboter kontinuierlich vorwärts und verfolgt den Rand der Linie.
Beachte, dass im Pseudocode keine Geschwindigkeiten oder Entfernungen angegeben sind. Diese Art von Details wird normalerweise der Codierungsphase überlassen.
Du bist dran:
Übersetze den Pseudocode-Algorithmus in ein Python-Programm, damit dein Edison-Roboter einer schwarzen Linie folgt. Experimentiere mit unterschiedlichen Geschwindigkeiten und Entfernungen, um eine möglichst gleichmäßige Linienverfolgung zu erzielen. Lade deinen Code in Edison herunter und teste ihn anhand des Tracks im Übungsblatt 8.2.
1. Was war die beste Kombination aus Geschwindigkeit und Entfernung, um eine reibungslose Linienverfolgung zu erreichen?

2. Wie sah dein Python-Programm aus? Schreibe deinen Code hier.


Versuch es!
Mache deineeigene Linie mit einem schwarzen Stift auf weißem Papier oder schwarzem Klebeband. Kann Edison deiner Linie folgen?