Buchempfehlung:
Roboter-Autos mit dem Raspberry Pi

Roboter Autos mit dem Raspberry Pi - 2019

Ich gehe jetzt davon aus, dass das Roboter Auto schon im NoPhone Modus fährt und alles soweit funktioniert. Dann ist es jetzt Zeit das ihr die App auf eurem Android Telefon installiert. Ich habe das kleine Programm bei mir auf einem Samsung Galaxy S8 installiert und damit auch das Roboter Auto autonom fahren lassen. Das hat recht gut geklappt auch wenn das S8 recht warm geworden ist und ich zuschauen konnte wie der Akku sich geleert hat. Dennoch bin ich begeistert wie gut es geklappt hat und das Projekt macht mir wirklich viel Freude.

OpenBot ready to run

OpenBot ready to run

Android App installieren

Die Installation der App auf meinem Android Telefon war recht einfach. Ich habe mir die aktuelle Version aus dem OpenBot GitHub Repository herunter geladen und die Datei auf mein Smartphone via USB Kabel übertragen. Anschließend konnte ich die App direkt installieren. Ich wurde lediglich gefragt ob ich der Quelle vertraue.

Die App gibt es hier direkt zum Herunter laden von der Openbot Projektseite: OpenBot

App Funktionen

Data Logger

Die Funktion Data Logger wird benötigt wenn man das Roboter Auto selber mit z. B. dem PS4 Controller steuert und Trainingsdaten aufzeichnen möchte. Diese aufgezeichneten Trainingsdaten werden dann benötigt um ein eigenes Neuronales Netz zu trainieren. Es gibt vier Funktionen die für das Data Logging ausgewählt werden können. Diese werden nachfolgend aufgeführt und kurz erläutert.

  • only_sensors: Es werden alle verfügbaren Sensordaten Deines Handys aufgezeichnet aber kein Bild dazu. Diese Sensordaten eignen sich weniger zum Trainings des neuronalen Netzes und wenn nur für spezielle Anforderungen beim Training..
  • crop_img: Es werden alle von Deinem Smartphone verfügbaren Sensordaten aufgezeichnet sowie das dazugehörige Bild. Das Bild hat nicht die volle Auflösung sondern eine deutlich geringere die für das Training des Neuronalen Netzes benötigt wird. Meiner Erfahrung nach reichen schon Auflösungen von 120 x 160 Pixel für das Training eines Neuronalen Netzes völlig aus. Wichtiger ist es gute Trainingsdaten ohne Fehler und menschlichen Eigenschaften aufzunehmen. Diese Einstellung ist somit die default Einstellung die für die Trainingsdatenaufzeichnung zu verwenden ist.
  • preview_img: Es werden alle Sensordaten aufgezeichnet und jedes Bild in seiner vollen Auflösung. Das führt schnell zu einem vollen internen Speicher. Diese Daten sind interessant wenn man ein Video erstellen möchte aus den Bildern bzw. aus der Sicht des Roboter Autos. Für das Training eines Neuronalen Netzes bilden diese großen Bildbereiche keinen Vorteil.
  • all_imgs: Dann gibt es noch die Funktion die wiederum alle verfügbaren Sensordaten aufzeichnet und das kleine Bild für das Training des Neuronalen Netzes und das dazugehörige Bild in seiner vollen Auflösung. Auch hier wird die Leistung Deines Smartphones gefordert und der Speicherplatz.

Mit dem Schalter rechts von der Option kann die Datenaufzeichnung gestartet und gestoppt werden. Wenn ein PS4 Controller angeschlossen ist kann diese Option mit dem X Button betätigt werden.

OpenBot App Screenshot collect trainings data

OpenBot App Screenshot collect trainings data

USB Connection

Über die Drop-Down Box können verschiedene Übertragungsgeschwindigkeiten der USB Schnittstelle ausgewählt werden. Wichtig ist das die in der Arduino Firmware konfigurierte Geschwindigkeit mit der in der App gewählten übereinstimmt. Daher muss hier nichts verändert werden und die 115200 ist die richtige Default Option. Wenn das Smartphone mit dem Arduino verbunden wird sollte die App die Verbindung automatisch erkennen und aktivieren.

Im nachfolgenden Bild ist die Nachrichtenbox zu sehen die mein Smartphone anzeigt wenn ich das Smartphone mit dem Arduino verbinde.

OpenBot App Screenshot USB message

OpenBot App Screenshot USB message

Dennoch kann man rechts mit dem Schalter für die USB Conneciton die Verbindung beenden und auch wieder starten falls es notwendig wäre durch einfaches links bzw. rechts schieben.

OpenBot App Screenshot USB slider

OpenBot App Screenshot USB slider

Drive Mode

Es stehen drei unterschiedliche Modi zur Verfügung wie das Roboter Auto mit dem PS4 Controller gesteuert werden kann. Hier muss man für sich die beste Option finden.

  • Game Mode: Bei diesem Modus sind die Taster R2 und L2 des PS4 Controllers zusammen mit dem Joystick für die Lenkung zu verwenden. Dieser Modus sollte aus Autorennspielen bekannt sein. Da ich selber keine Spiele spiele kam ich mit diesem Modi überhaupt nicht zu recht.
  • Joystick: Ist diese Option aktiv kann das Roboter Auto mit einem der Joysticks gesteuert werden. Damit bin ich ganz gut zurechtgekommen auch wenn das Roboter Auto spontan sich etwas komisch verhält wenn man von einem maximal Ausschlag zu einem anderen Wechsel.
  • Dual: Dieser Modus ist in etwas so wie ein Kettenfahrzeug funktioniert. Mit den linken Joystick steuert man die linken Motoren und mit dem rechten die rechten Motoren.

Wichtig: Mit dem Schalter rechts von dieser Option wird zwischen manueller Steuerung also mit dem Joystick und der Steuerung durch das Neuronale Netz hin und her geschalten. Also möchte man, dass das Neuronale Netz das Roboter Auto steuert dann legt man den Schalter um. Am PS4 Controller nutzt man dazu den R1 Button.

OpenBot App Screenshot mode

OpenBot App Screenshot mode

Vehicle Control

Es können drei unterschiedliche Geschwindigkeiten gewählt werden mit denen das Roboter Auto fährt. Da die Regelung der Geschwindigkeit über ein PWM Signal funktioniert wird diese entsprechend modifiziert.

  • Slow: Das PWM Signal ist zu 50% HIGH und das bedeutet, dass das Roboter Auto mit ca. 50% Leistung fährt und voller Spannung aus den Batterien.
  • Normal: Das PWM Signal ist zu ca. 75% HIGH und somit liegt die Leistung bei ca. 75% bei voller Spannung.
  • Fast: Das PWM Signal ist zu 100% HIGH und somit liegt die volle Leistung an den Motoren an. Das ist auch die Einstellung mit der das Neuronale Netz das Roboter Auto ansteuert.

Rechts im Menü der App sind die Werte zu sehen mit denen die Motoren angesteuert werden. Die Werte erscheinen bei der Steuerung mit dem PS4 Controller aber auch wenn das Neuronale Netz seine Vorhersagen trifft wenn dieses die Kontrolle über das Roboter Auto hat.

OpenBot App Screenshot drive mode

OpenBot App Screenshot drive mode

Model

Es stehen aktuell in der App drei Neuronale Netze zur Verfügung die bereits trainiert sind und ausprobiert werden können.

  • DETECTOR_V1_1_0_Q: Dieses Modell setzt auf dem MobileNet V1 auf und dient dazu Personen zu folgen. Bei mir hat es ganz gut funktioniert wenn ich langsam vor dem Roboter Auto hergelaufen bin. Das Modell wurde für den mobilen Einsatz auf einem Smartphone durch die Entwickler des OpenBot Projektes angepasst.
  • DETECTOR_V3_S_Q: Dieses Modell setzt auf dem MobileNet V3 auf und dient dazu Personen zu folgen. Bei mir hat es ganz gut funktioniert wenn ich langsam vor dem Roboter Auto hergelaufen bin. Das Modell wurde für den mobilen Einsatz auf einem Smartphone durch die Entwickler des OpenBot Projektes angepasst.
  • AUTOPILOT_F: Dieses Neuronale Netz ist wirklich erstaunlich und ermöglicht es dem Roboter Auto autonom zu fahren. Das hat in meiner Wohnung auch schon ganz gut geklappt und ich war wirklich begeistert. Allerdings hatte es so seine Herausforderungen da es nicht speziell für meine Wohnung trainiert war. Dennoch war die Leistung für mich beeindruckend. Wer selber ein Neuronale Netz trainieren möchte kann direkt über den folgenden Link nachlesen wie das geht Driving Policy. Dafür muss dann aber die Android App auch neu kompiliert werden um das eigene Netz dort verfügbar zu machen.
OpenBot App Screenshot neural network model

OpenBot App Screenshot neural network model

Device

Über die Drop Down Box kann noch ausgewählt werden auf welcher CPU bzw. GPU das Neuronale Netz ausgeführt werden soll. Bei meinem Samsung Galaxy S8 hatte ich keine Wahl da dieses nur über eine CPu verfügt.

OpenBot App Screenshot device

OpenBot App Screenshot device

PS4 Controller

Ich habe einen PS4 Controller mit meinem Smartphone gekoppelt. Dazu am PS4 Controller die beiden Buttons “SHARE” und den “Playstation Button” gleichzeitig drücken. Anschließend blinkt der Controller ganz schnell und am Smartphone kann man unter Bluetooth Geräte dann den Controller finden. Hier diesen anklicken und so die Kopplung starten. Anschließend kann man das Roboter Auto über die App bzw. das Smartphone steuern. Das ist wichtig das Roboter Auto manuell steuern zu können wenn man später Trainingsdaten aufnimmt.

OpenBot ready to run PS4 controller

OpenBot ready to run PS4 controller

OpenBot autonom fahren lassen

Nach dem jetzt hoffentlich klar ist wie die App auf dem Android Smartphone bedient wird geht es daran das Roboter Auto autonom fahren zu lassen. Sehr schön für den Beginn sind die beiden ersten neuronalen Netze die den Roboter einer Person folgen lassen. Wichtig dabei ist, dass das Smartphone bzw. die Kamera des Smartphones etwas schräg nach oben ausgerichtet ist. Ich hatte bei meinem Modell die Kamera so ausgerichtet, dass diese gerade nach vorne schaut. Das hat zur Folge dass diese unten sehr viel vom Boden aufnimmt was nicht wirklich interessant ist. Daher das Smartphone etwas schräg um ca. 5° – 10° nach oben ausrichten. Dann sollten alle drei Netze recht gut das Bild nutzen können.

Den Modus für das Neuronale Netz aktiviert man wie auf dem folgenden Screenshot zu sehen ist.

OpenBot App Screenshot active neural network

OpenBot App Screenshot active neural network

Zusammenfassung

Mit der Software die vom OpenBot Projekt mit geliefert wird fährt das Roboter Auto wirklich autonom und wird vom Smartphone gesteuert. Bei mir hat alles ohne Probleme geklappt und das Erfolgserlebnis hat sich direkt eingestellt. Daher ist das wirklich ein tolles Projekt auch für Einsteiger. Jetzt in den weiteren Beiträgen wird es darum gehen einmal gute Trainingsdaten aufzuzeichnen und ein eigenes neuronales Netz zu trainieren bzw. die vorhanden mit den eigenen Daten zu verbessern.


Artikel Übersicht OpenBot Roboter Auto:

OpenBot – Dein Smartphone wird zu einem autonomen Roboter Auto – Einleitung
OpenBot – Dein Smartphone steuert ein Roboter Auto – benötigte Bauteile Teil 1-2
OpenBot – Dein Smartphone steuert ein Roboter Auto – benötigte Bauteile Teil 2-2
OpenBot – Dein Smartphone steuert ein Roboter Auto – Chassis bauen
OpenBot – Dein Smartphone steuert ein Roboter Auto – Verkabelung
OpenBot – Dein Smartphone steuert ein Roboter Auto – Arduino Firmware aufspielen
OpenBot – Dein Smartphone steuert ein Roboter Auto – Android App und erster Probelauf
OpenBot – Dein Smartphone steuert ein Roboter Auto – Trainingsdaten aufzeichnen
OpenBot – Dein Smartphone steuert ein Roboter Auto – Trainingsumgebung einrichten
OpenBot – Dein Smartphone steuert ein Roboter Auto – das neuronale Netz trainieren
OpenBot – Dein Smartphone steuert ein Roboter Auto – Android Studio und Smartphone einrichten
OpenBot – Dein Smartphone steuert ein Roboter Auto – die eigene OpenBot Android App erstellen

Geplante Artikel in dieser Serie:

OpenBot – Dein Smartphone steuert ein Roboter Auto – OpenBot End-2-End Durchlauf
(Visited 74 times, 2 visits today)