Aus Raspberry Pi Geek 12/2018

Roboterauto GoPiGo3 mit einem RasPi als Herz

© Guido Vrola, 123RF

Go Pi Go!

Martin Mohr

Der Bausatz GoPiGo3 liefert Bauteile und Software für ein kleines Roboterauto. Zusammen mit einem RasPi als Gehirn programmieren Sie den Roboter per Mausklick.

Der Aufbau des GoPiGo3 [1] macht einen soliden und robusten Eindruck (Abbildung 1). Das grundlegende Gerüst besteht aus zwei mit Gewindebolzen verschraubten Platten aus Plexiglas. Die Motoren, die die Räder direkt antreiben, sitzen in stabilen Winkeln aus Metall. Mit ein wenig Geschick dauert die Montage des Bausatzes weniger als eine Stunde. Auf der Homepage des Herstellers finden sich detaillierte Anleitungen [2], mit denen der Zusammenbau der Roboter leicht gelingt.

Danach gilt es, sich um die Energieversorgung des Roboters zu kümmern: Der Umwelt zuliebe sollten Sie zu wiederaufladbaren Akkus greifen. Am besten besorgen Sie sich zwei Sätze, so müssen Sie nicht kurz vor dem Vollenden eines Programms eine mehrstündige Pause zum Laden einlegen. Sie schonen die Akkus, wenn Sie während des Programmierens des GoPiGo3 ein USB-Netzteil anschließen, das den RasPi mit Strom versorgt.

Abbildung 1: Der komplett aufgebaute GoPiGo3 bietet alles, was ein Roboterauto braucht. Mit optional erhältlichem Zubehör ergänzen Sie den Aufbau bei Bedarf um weitere Sensoren und Aktoren.

Abbildung 1: Der komplett aufgebaute GoPiGo3 bietet alles, was ein Roboterauto braucht. Mit optional erhältlichem Zubehör ergänzen Sie den Aufbau bei Bedarf um weitere Sensoren und Aktoren.

Bei der Inbetriebnahme des Roboters hilft eine weitere ausführliche Anleitung [3]. Nach dem Booten spannt das Modell ein unverschlüsseltes WLAN-Netzwerk mit der SSID “GoPiGo” auf, in das Sie sich per PC einloggen. Beachten Sie dabei, dass Sie dadurch eventuell den Zugang zum Internet verlieren. Nun geben Sie in einem Browser die Adresse http://bloxter.com ein. Unter dieser URL meldet sich der Webserver, der auf dem Bausatz läuft (Abbildung 2).

Abbildung 2: Sie programmieren den Roboter über ein Webfrontend. Die Startseite des GoPiGo3 führt zu den unterschiedlichen Programmierumgebungen und zur Dokumentation.

Abbildung 2: Sie programmieren den Roboter über ein Webfrontend. Die Startseite des GoPiGo3 führt zu den unterschiedlichen Programmierumgebungen und zur Dokumentation.

Unter dem Punkt Drive findet sich ein einfaches Menü, über das Sie das Auto für erste Funktionstests fernsteuern. Das Menü Learn liefert eine Vielzahl von Übungen, um sich mit der grafischen Programmierung des Roboters in Bloxter vertraut zu machen. Es handelt sich dabei um eine einfache grafische Umgebung, die sich im Aufbau an Scratch orientiert [4].

Eigene Programme entwickeln Sie unter Code in Bloxter. Mit ein wenig Erfahrung erkennen Sie schnell, welche Funktionen sich unter den farblich hervorgehobenen Menüpunkten auf der rechten Seite verbergen. Die einzelnen Kommandos sind wie Teile eines Puzzles aufgebaut, die Sie auf der Oberfläche per Mausklick zu einem Programm arrangieren. Dabei klickt nur zusammen, was zusammenpasst. So ist es unmöglich, einen Fehler zu produzieren. Die Beispiele in diesem Artikel sind in Bloxter erstellt.

Alternativ finden Sie unter Code in Python einen Editor, um den Roboter mit einer echten Programmiersprache anzusteuern. Wie bei Bloxter führen Sie die Programme mit einem Klick auf den Start-Button auf der Hardware aus. Im Order GoPiGo_Python_Examples finden Sie viele Beispiele, die sich als Basis für eigene Experimente eignen. Zwei davon dienen hier dazu, um die Programmierung im Detail zu verdeutlichen.

Distanzsensor

Im Beispiel soll der GoPiGo3 seinen Distanzsensor verwenden, um abhängig vom gemessenen Abstand die Augenfarbe zu steuern. Als Augen (englisch: eyes) fungieren die zwei LEDs auf der Oberseite der Platine. Ermittelt der Sensor viel Platz vor dem Roboter, leuchten die Augen grün. Erkennt der Sensor in der Nähe ein Hindernis, schaltet das Programm die Augen auf Gelb. Wird es richtig knapp, signalisieren rot aufleuchtende Augen die Gefahr.

Abbildung 3 zeigt das dafür nötige Bloxter-Programm. Als Erstes fällt auf, dass Sie keine zusätzlichen Bibliotheken importieren müssen. Alle nötigen Funktionen sind von Haus aus vorhanden. Die einzelnen Funktionsgruppen in der linken Seitenleiste unterscheiden sich in ihrer Farbgebung: Hellgrün steht etwa für Schleifen, Orange für das Auslesen von Sensoren oder Rot für Aktoren. Die äußere Schleife sorgt dafür, dass der Roboter das Programm endlos ausführt. Bei Bedarf unterbrechen Sie die Endlosschleife mit einem Klick auf Stop!.

Abbildung 3: Das erste Beispielprogramm in Bloxter: Anhand der vom Distanzsensor ausgegebenen Messwerte ändert der GoPiGo3 seine Augenfarbe.

Abbildung 3: Das erste Beispielprogramm in Bloxter: Anhand der vom Distanzsensor ausgegebenen Messwerte ändert der GoPiGo3 seine Augenfarbe.

Der erste if-Block in der Schleife prüft, ob die Distanz zum nächsten Hindernis mehr als 5 Zoll (englisch: inch) beträgt und schaltet bei einem positiven Ergebnis die Augen auf Grün. Der vom Sensor ausgegebene Wert lässt sich bei Bedarf auf Zentimeter als Einheit umstellen. Die konstante Zahl für den Vergleich finden Sie bei den mathematischen Funktionen (Math) ganz oben in der Liste. Spuckt der Sensor eine geringere Distanz aus, wird mit dem nächsten if-Block entschieden, ob die Augen rot oder gelb leuchten sollen. Das war auch schon alles, um die Entfernungsmesswerte des Distanzsensors in Farben umzusetzen.

Hindernis ausweichen

Um den GoPiGo wirklich zum Leben zu erwecken, gilt es, den Roboter mithilfe seiner Motoren zu bewegen. Das Spektrum an möglichen Algorithmen für diese Programmieraufgabe ist gewaltig, viele Wege führen ans Ziel. Das nächste Beispiel soll die grundlegenden Funktionen erklären, den GoPiGo3 in Bewegung zu versetzen, und verzichtet daher auf kompliziertere Routinen.

Das Programm (Abbildung 4) beginnt mit einer While-Schleife, die den Distanzsensor abfragt. Der Roboter fährt so lange vorwärts, bis er auf ein Hindernis trifft (bis der Distanzsensor einen Wert kleiner 5 cm liefert). Bei den ersten Fahrversuchen mit dem GoPiGo3 sollten Sie die Geschwindigkeit immer auf slow stellen. Der Roboter ist zwar ziemlich robust, Sie sollten aber trotzdem darauf achten, dass er nicht zu schnell um eine Ecke verschwindet oder die Treppe herunterfällt.

Abbildung 4: Mit diesem Bloxter-Programm fährt der GoPiGo3 so lange geradeaus, bis er auf ein Hindernis trifft. Anschließend versucht er, diesem auszuweichen und seine Fahrt fortzusetzen.

Abbildung 4: Mit diesem Bloxter-Programm fährt der GoPiGo3 so lange geradeaus, bis er auf ein Hindernis trifft. Anschließend versucht er, diesem auszuweichen und seine Fahrt fortzusetzen.

Sobald der GoPiGo ein Hindernis erkennt, verlässt das Programm die While-Schleife und die Routine zum Ausweichen startet: Wie bei einem Elchtest dreht der Roboter sich um 90 Grad nach links, fährt dann 15 cm nach vorne, dreht sich wieder 90 Grad nach rechts und so weiter; die restlichen Kommandos erklären sich von alleine. Sobald der Roboter komplett um das Hindernis herumgefahren ist, bewegt er sich noch ein Stückchen weiter und bleibt dann stehen.

Am besten fährt der Roboter auf einer glatten, aber nicht zu glatten Oberfläche. Andernfalls verlieren die Reifen die Traktion. Teppichboden ist als Untergrund nicht zu empfehlen. Je nach Struktur des Teppichs sinkt das Stützrad so weit ein, dass es den Roboter in seiner Beweglichkeit einschränkt. Das merken Sie daran, dass der Roboter sich nicht mehr präzise dreht (etwa nur 60 Grad, obwohl 90 Grad im Programm stehen) oder sich nur mit ungleichmäßiger Geschwindigkeit vorwärtsbewegt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben