Grafische Programmierung des Roboters Scribbler 2 (1/2)

Dieser Artikel enthält eine Einführung in die Programmierung des Roboters Scribbler 2 mithilfe des Scribbler Program Maker, einer durchgängig grafischen, speziell für den Scribbler 2 entwickelten Programmiersprache.

Der mobile Roboter Scribbler 2

Zunächst möchten wir an dieser Stelle den Roboter Scribbler 2 vorstellen. Wie der Name bereits verrät, handelt es sich um die zweite, seit 2011 kommerzialisierte Version des beliebten Roboters, der ebenso wie eine Reihe von anderen programmierbaren mobilen Robotern aus dem Hause Parallax stammt. Die nachstehende Tabelle gibt einen Überblick über die wichtigsten Roboter der Marke Parallax.

Roboter Zielpublikum Mikrocontroller Grafische
Programmierung
Text
programmierung
Schwierig-keitsgrad
Boe-Bot Boe-Bot Roboter-Bausatz von Parallax – USB-Ausführung Oberstufe & Universität Basic Stamp 2 Nein Ja ++
Scribbler 2 Autonomer Roboter Scribbler 2 von Parallax Mittel- & Oberstufe Propeller Ja Ja +
SumoBot SumoBot von Parallax Oberstufe & Universität Basic Stamp 2 Nein Ja ++
StingRay Parallax Stingray-Roboter Oberstufe & Universität Basic Stamp 2 Nein Ja ++

Klicken Sie auf den Namen oder das Bild, um mehr über den jeweiligen Roboter, seine Funktionen und seine Technik zu erfahren.

Der Roboter Scribbler 2 ist vormontiert und unmittelbar einsatzfähig.

Der Scribbler 2 ist mobil, d. h. er kann sich fortbewegen, autonom, d. h. er kann dank eines eingebauten Mikrocontrollers und der Erfassung seines Umfeldes durch verschiedene Sensoren eigene Entscheidungen treffen, und programmierbar, d. h. man kann Programme für ihn entwickeln oder anpassen, die ihn autonom machen.

Die mobile Robotik ist eine besondere Form der Robotik, die heute viel im Unterricht eingesetzt wird. Mobile Roboter unterscheiden sich voneinander durch die Zahl und Art der integrierten Sensoren. Denn je mehr und je unterschiedlichere Sensoren ein Roboter hat, desto vollständiger ist das Bild, das er sich von seinem Umfeld machen kann. Der Roboter Scribbler 2 verfügt über drei Lichtsensoren, zwei Sensoren zur Linienfolge, drei Infrarot-Entfernungsmesser und einen Blockadesensor (Sensor, der anzeigt, wenn der Roboter von einem Hindernis blockiert wird und seine Räder durchdrehen). Der Roboter Scribbler 2 ist also mit zahlreichen Sensoren ausgestattet, weshalb er sich gut für die pädagogische Arbeit in der Robotik eignet.

Die große Besonderheit der zweiten Version des Scribbler ist sein Mikrocontroller. Es handelt sich um den Propeller, einen von Parallax entwickelten Mikrocontroller, der mehrere Aufgaben gleichzeitig ausführen kann – ein wichtiges Kriterium für einen Roboter. Mit diesem Mikrocontroller ist auch der Roboter Stingray ausgestattet.

Der Mikrocontroller Propeller
Der Mikrocontroller Propeller

Weitere Informationen zum Roboter Scribbler 2 finden Sie hier

Programmierung des Roboters Scribbler 2

Der Propeller ist mit der speziell von Parallax für diesen Mikrocontroller entwickelten Sprache SPIN programmierbar. SPIN kann daher zur Programmierung des Scribbler 2 eingesetzt werden. Da sich der Scribbler 2 jedoch vor allem an Schüler der Mittel- und Oberstufe richtet, bietet Parallax darüber hinaus eine grafisches Programmierumgebung unter dem Namen Scribbler Program Maker an. Dieses Programm kann unter folgender Adresse kostenlos von der Parallax-Website heruntergeladen werden: http://www.parallax.com/Portals/0/Downloads/docs/prod/robo/scribbler2/S2GraphicalUserInterfacev1.3.1.zip

In diesem Artikel stellen wir das Programm kurz vor und erstellen danach ein Programm zur Kollisionsvermeidung. Zur Verwendung des Programms sind keine speziellen Vorkenntnisse in der Programmierung erforderlich.

Installation der Programmierumgebung für den Roboter Scribbler 2

Zunächst die zip-Datei herunterladen und entpacken. Danach die ausführbare Datei im gewählten Verzeichnis durch Doppelklick öffnen und die Installationsanweisungen befolgen. Die Version des Programms kann leicht variieren, der Installationsvorgang bleibt jedoch derselbe.

Um das Programm zu testen, ist kein Roboter erforderlich, Sie können also sofort loslegen!

Präsentation des Scribbler Program Maker

Die Benutzeroberfläche von Scribbler Program Maker sieht so aus:

Scribbler Program Maker, grafische Programmierumgebung für den Roboter Scribbler 2
Scribbler Program Maker, grafische Programmierumgebung für den Roboter Scribbler 2

Das Prinzip ist sehr einfach: Man klickt auf die Symbole in der vertikalen Menüleiste auf der linken Seite und zieht den Block zwischen die beiden Blöcke, die den Anfang (grünes Zahnrad) und das Ende (gelb-schwarz gestreiftes Schild) des Programms markieren.

Wenn ein Bildsymbol angeklickt ist, leuchtet ein hellblauer Rahmen auf. Ziehen Sie den Mauszeiger danach zwischen die Blöcke für Anfang und Ende des Programms. Es erscheint ein grauer Doppelpfeil mit umgekehrten Pfeilspitzen, wie unten zu sehen.

Positionierung eines Programmblocks
Positionierung eines Programmblocks

Abbildung 3: Positionierung eines Programmblocks. Wenn der graue Pfeil erscheint, klicken Sie einmal, und der links ausgewählte Block erscheint auf der Arbeitsfläche zwischen Programmanfang und ende. Dabei erscheint ein kleines Parameterfenster, in dem sich der gerade eingefügte Bewegungsblock parametrieren lässt.

Parameterfenster des Bewegungsblocks
Parameterfenster des Bewegungsblocks

Die Abbildung oben zeigt das Parameterfenster.

  1. Mit dem Schiebregler kann die Motorleistung eingestellt werden, mit der die Räder angetrieben werden. Je stärker die Leistung (in die eine oder andere Richtung) eingestellt wird, desto schneller fährt der Roboter. Steht der Regler in der Mitte, ist die Leistung gleich Null; der Roboter steht. Der Schiebregler stellt einen mittleren Wert für die Antriebsleistung dar. Sie können auch nur einen der beiden Motoren einstellen, indem Sie den roten oder grünen Pfeil verschieben. Dadurch wird der Regler verschoben und der Roboter dreht sich.
  2. Die Stoppuhr zeigt an, wie lange die Bewegung andauern soll. Sie muss zur Aktivierung angeklickt werden. Sie besitzt eine Sekundenanzeige und kann auf bis zu 5 Sekunden eingestellt werden. Bleibt sie grau, wird die Bewegung so oft wiederholt, bis das Programm auf einen neuen Bewegungsblock stößt, oder bis zum Ende des Programms. Durch die Einstellung der Stoppuhr im grafischen Teil bewegt sich auch der darunter liegende Schiebregler. Beide beziehen sich auf dieselbe Einstellung.
  3. Hierbei handelt es sich um Zähler, die Zahlenwerte für die Einstellung des Schiebreglers bzw. der Stoppuhr anzeigen. Die jeweilige Farbe bezieht sich auf die eingestellte Variable.
  4. Schaltflächen für Bestätigung (grünes Häkchen) oder Abbruch (rotes Kreuz). Mit diesen beiden Schaltflächen wird das Parameterfenster jeweils geschlossen.
  5. Schaltfläche zur Voreinstellung von Werten für die Motorleistung; hiermit werden Standardbewegungen programmiert.

In unserem Beispiel stellen wir beide Motoren sowie die Stoppuhr auf den Maximalwert ein. Der Roboter bewegt sich also mit voller Geschwindigkeit 5 Sekunden lang geradeaus.

Nun gehen wir auf die gleiche Weise vor, um einen Tonblock einzufügen, der in der Menüleiste mit drei Noten dargestellt wird.

Einfügen des Tonblocks
Einfügen des Tonblocks

Mithilfe dieses Blocks kann der Roboter ein Tonsignal oder eine Melodie abspielen. Dies ist sehr praktisch, um die Schritte eines Programms anzuzeigen. Das Parameterfenster ist vertikal in zwei Abschnitte unterteilt. Links befindet sich eine Bibliothek für verfügbare Töne und Melodien. Rechts steht ein Notenblatt zur Verfügung, auf dem Töne und Melodien eingesetzt werden können. Der Roboter spielt sie gebunden nacheinander ab. Um einen Ton einzufügen, klicken Sie links auf ein farbiges Feld und es erscheint automatisch auf dem Notenblatt rechts. Sie können das Resultat anhören, indem Sie auf die Play-Schaltfläche klicken (nach rechts zeigendes Dreieck). Um ein Element vom Notenblatt zu entfernen, klicken Sie auf den Mülleimer.

Wählen Sie die Töne aus und bestätigen Sie mit dem grünen Häkchen. Die Programmstruktur sollte nun wie folgt aussehen:

Programmende
Programmende

Nun soll das Programm ausgeführt werden. Verbinden Sie dafür den Roboter mithilfe des mitgelieferten USB-Adapters über ein USB-Kabel mit dem Computer. Hinweis: Bei der ersten Verwendung müssen Sie zunächst den Driver für den USB-Adapter installieren, der auf der Parallax-Website unter der Adresse http://www.parallax.com/usbdrivers zu finden ist. Schließen Sie dabei nur den USB-Adapter mit einem Kabel an den PC an. Erst danach wird der Roboter angeschlossen.

Schalten Sie den Roboter ein und klicken Sie auf die Schaltfläche zur Übertragung des Programms auf den Scribbler (viertes Symbol von links auf der horizontalen Menüleiste oben).

Während des Übertragungsvorgangs erscheint ein kleines Fenster mit „Uploading“. Sollte der Roboter nicht eingeschaltet oder nicht korrekt angeschlossen sein, findet der PC den Roboter nicht. In diesem Fall erscheint ein Fenster mit „No connection could be made to your Scribbler “. Überprüfen Sie den Roboter und die Verbindung und versuchen Sie es noch einmal.

Ist der Roboter korrekt angeschlossen, erscheint ein Fenster mit „Upload succesful“ und das Programm beginnt sofort zu laufen.

Es ist soweit, das erste Programm ist erstellt!

In der Folge möchten wir Ihnen die wichtigsten Blöcke vorstellen.

Bearbeitung der Einstellungen eines Blocks

Bevor wir jedoch zu den weiteren Funktionsblöcken übergehen, hier noch die Vorgehensweise zur Bearbeitung eines bereits parametrierten Blocks.

Klicken Sie zunächst den Bewegungsblock an, der dadurch optisch hervorgehoben wird.

Klicken Sie mit der rechten Maustaste darauf. Es erscheint ein Fenster mit „Bearbeiten“, wie auf dem Bild unten zu sehen:

Bearbeitungsfenster eines funktionellen Blocks
Bearbeitungsfenster eines funktionellen Blocks

In dem Fenster erscheinen 6 Schaltflächen:

  1. Die erste ist spezifisch für den ausgewählten Block. Durch Anklicken verschwindet das Fenster „Bearbeiten“ und es erscheint das Parameterfenster des entsprechenden Blocks.
  2. Mit der zweiten Schaltfläche kann der angeklickte Block kopiert werden. Nach dem Anklicken dieses Blocks das Bearbeitungsfenster mithilfe der vorletzten Schaltfläche schließen und den Cursor an der Stelle in Ihrem Diagramm platzieren, wo der Block eingefügt werden soll (es erscheint wieder der graue Doppelpfeil). Klicken Sie danach auf „Einfügen“ auf der vertikalen Menüleiste links (zweiter Block von oben in der linken Spalte, mit einer grünen Zwischenablage) und der Block ist kopiert.
  3. Die dritte Schaltfläche ist „Ausschneiden“. Sie funktioniert wie die eben beschriebene Schaltfläche, schneidet jedoch aus, statt einzufügen.
  4. Die vierte Schaltfläche ist der „Mülleimer“, mit ihm kann der aktive Block gelöscht werden. Die Schaltfläche wird angeklickt, danach wird das Bearbeitungsfenster mithilfe des fünften Buttons geschlossen – der Block ist gelöscht.
  5. Mit dieser Schaltfläche wird die Wahl bestätigt und das Bearbeitungsfenster geschlossen.
  6. Mit dieser Schaltfläche wird die Auswahl rückgängig gemacht, das Bearbeitungsfenster wird geschlossen.

Nun wissen Sie, wie Sie eventuelle Fehler beheben können, was sehr nützlich sein kann.

Bedingungen

Jedes Programm beinhaltet Tests, die auch als Bedingungen bezeichnet werden. In der Robotik werden zum Beispiel oft die Werte von Sensoren abgefragt, bevor der Roboter eine Entscheidung trifft.

Nehmen wir uns also noch einmal unser vorhergehendes Programm vor. Statt dass der Roboter jedoch nach fünf Sekunden Höchstgeschwindigkeit systematisch eine Melodie abspielt, soll er nun zunächst einen Lichttest durchführen. Ist das Licht hell genug, spielt er die Melodie, ist es nicht stark genug, spielt er sie nicht.

Dazu fügen wir einen Testblock zwischen die beiden vorhandenen Blöcke ein. Der Testblock ist gelb mit einem großen Fragezeichen. Der Block sieht etwas anders aus als die zwei vorigen. Auf diesen Unterschied gehen wir später ein. Sehen wir uns zunächst das Parameterfenster an.

Parameterfenster des Testblocks
Parameterfenster des Testblocks

Auch hier erscheinen wieder sechs Schaltflächen:

  1. 1. Testet, ob eine Fahne gehisst ist. Wie wir später sehen werden, ist die Fahne eine Variable mit zwei Möglichkeiten (Programmierer sprechen in diesem Fall von Boole’schen Werten): gehisst oder nicht. Damit kann ein vorher festgelegter Zustand getestet werden.
  2. 2. Mit dieser Schaltfläche kann getestet werden, ob der Infrarotsensor ein Hindernis ortet, und wenn, wo es sich befindet (vorne, links oder rechts). Außerdem kann festgestellt werden, ob der Roboter blockiert ist, d. h. ob seine Räder durchdrehen.
  3. 3. Mit dieser Funktion kann virtuell eine Münze geworfen werden, es handelt sich um einen Zufallstest.
  4. 4. Abfrage der unter dem Roboter montierten Infrarotsensoren für die Linienfolge.
  5. 5. Abfrage der Lichtsensoren. Dabei können 12 Bedingungen getestet werden:
    • Der Wert eines der drei Sensoren beträgt mindestens X (X kann ein Wert von 0 (schwarz) bis 255 (die höchste messbare Lichtintensität) sein).
    • Der Wert eines der drei Sensoren ist der höchste von dreien mit mindestens X.
    • Der Wert eines der drei Sensoren ist der niedrigste von dreien mit mindestens X.
    • Der Mittelwert, der Höchstwert und der Mindestwert betragen mindestens X.
  6. Mit der letzten Schaltfläche können die Bedingungen richtig oder falsch des Testblocks umgekehrt werden (insbesondere zur Präsentation)

Wählen Sie nun einen Lichttest, den der Roboter durchführen soll. Dabei sollte ein Test mit eindeutigem Ergebnis gewählt werden wie etwa totale Dunkelheit (wenn Sie die Hand auf einen der Lichtsensoren legen).

Nun muss der Tonblock so eingestellt werden, dass er seine Töne nur abspielt, wenn die Bedingung erfüllt bzw. nicht erfüllt ist (wahlweise). Kopieren Sie dazu den bereits vorhandenen Tonblock und fügen Sie ihn unter dem Testblock ein. Auf der vorangehenden Abbildung stellt Nummer 7 eine erfüllte Bedingung dar, da sie sich unter dem grünen Häkchen des Testblocks befindet. Nummer 8 stellt die nicht erfüllte Bedingung dar, da sie sich auf dem schwarzen Pfeil hinter dem roten Kreuz des Testblocks befindet.

Um sicherzugehen, können Sie je nach Testergebnis zwei verschiedene Aktionen einfügen. Die folgende Abbildung zeigt das Programm, bei dem der Roboter bei ausreichendem Lichteinfall einen Ton abspielt und bei nicht ausreichendem Lichteinfall (wenn beispielsweise der linke, vordere Lichtsensor mit einem Finger verdeckt wird) simultan drei LEDs aufleuchten lässt.

Anwendung einfacher Bedingungen
Anwendung einfacher Bedingungen

Schleifen

Ein wichtiger Punkt für diese erste Präsentation sind die Wiederholungsschleifen. Neben den Bedingungen sind dies die meistverwendeten Strukturen. Mithilfe einer Schleife kann ein Aktionsablauf mehrmals (festgelegte Anzahl oder unendlich) wiederholt werden.

Nehmen wir also erneut den Programmcode aus der vorhergehenden Abbildung. Wir wollen den gesamten Programmablauf viermal wiederholen, um das Programm testen zu können. Der Wiederholungsblock muss also um die bisherigen vier Funktionsblöcke eingefügt werden.

Wählen Sie dazu den Block für die Schleife (siebter Block von oben in der linken Spalte der Funktionsblöcke). Er ist blau mit einem gebogenen Pfeil, der nach rechts zeigt. Platzieren Sie den Block am Anfang Ihres Programms, direkt unter den roten Startblock. Wie jedes Mal, wenn Sie einen neuen Funktionsblock einfügen, erscheint das Parameterfenster des entsprechenden Blocks.

Parameterfenster des Schleifenblocks
Parameterfenster des Schleifenblocks

Das Parameterfenster erscheint in Form eines Zählers. Standardmäßig ist er grau unterlegt. Geben Sie vor der Bestätigung des Blocks keine Zahl ein, wird das Programm endlos wiederholt. Wählen Sie eine Zahl auf dem Zähler und klicken auf Bestätigung, ist die Anzahl der Wiederholungen definiert, d. h. das Programm bricht nach X Wiederholungen automatisch ab. In unserem Beispiel stellen wir den Zähler auf 4 ein.

Nun müssen noch die Funktionsblöcke des Programms kopiert werden, um sie in die Schleife einzufügen. Klicken Sie dazu auf den Block, der eine Hand mit ausgestrecktem Zeigefinger zeigt (oben in der rechten Spalte der Funktionsblöcke), der den Cursor in den Auswahlmodus versetzt. Klicken Sie dann nacheinander auf den Bewegungs- und den Testblock. Wie Sie sehen, werden beim Anklicken des Testblocks die darunter liegenden Blöcke in den erfüllten oder nicht erfüllten Bedingungen mit ausgewählt, da durch das Anklicken des Blocks alle von ihm abhängigen Blöcke mit markiert werden. Benutzen Sie nun die Funktion Kopieren/Einfügen, die bereits zuvor erläutert wurde.

Fertiges Programm mit 4 Wiederholungen
Fertiges Programm mit 4 Wiederholungen

Schlussbemerkung

In diesem Artikel wurde die Benutzeroberfläche der grafischen Programmierumgebung des Scribbler 2 vorgestellt. Wir haben gesehen, wie das lineare datenflussbasierte Programmierkonzept funktioniert, wie man die Bewegung des Roboters steuern kann, wie man Sensorenwerte abfragt und wie Bedingungen und Wiederholungen eingefügt werden. Mit diesen Basiskenntnissen können insbesondere jüngere Einsteiger bereits eine große Anzahl von einfachen Verhaltensweisen programmieren. Dafür sind keine Programmierkenntnisse erforderlich, denn die grafische Oberfläche ist sehr leicht zu verstehen.

In einem weiteren Artikel werden wir komplexere Abläufe erläutern, insbesondere die Modularisierung des Programmcodes, aber auch die Abwicklung paralleler Abläufe. Denn genau dafür wurde der Mikrocontroller Propeller entwickelt.

 


 

Generation Robots (http://www.generationRobots.de)

Jegliche Verwendung oder Vervielfältigung bedarf der vorherigen ausdrücklichen Genehmigung.