Ich wollte schon immer mal eines meiner Roboter Auto Modelle von einer künstlichen Intelligenz steuern lassen. Um diese Idee umsetzen zu können hatte ich mir verschiedene Projekte angeschaut. Es gibt schon einige Projekte von Hochschulen wie dem MIT die aber häufig einen sehr wissenschaftlichen Stand haben. So bin ich bei meiner Suche auf das donkeycar Projekt gestoßen. Dieses setzt auf Standard Hardware wie einem einfachen 1:16 RC Auto und einem Raspberry Pi Computer. So ist für mich die Entscheidung gefallen mit dem Donkey Car Projekt loszulegen.
Hinweis: Da ich bei der aktuellen Überarbeitung meiner Beiträge hier schon seit über 1 Jahr Donkey Cars baue sind es jetzt schon drei Modelle geworden.
Mein erstes Modell war ein ganz einfaches Fahrwerk aus China. Das zweite Modell war ein 1:10 Tamiya Unimog mit einem CC-01 Fahrwerk. Das Dritte Auto war das original Donkey Car RC Auto das ich aus Hong Kong importiert habe. Dabei macht es keinen Unterschied ob es das offizielle Donkey RC Modellauto aus Hong Kong ist oder ein ReadyToRun RC Modell. Die Autos lassen sich alle gleich einfach umbauen solange es Standard RC Modellbau Komponenten sind. Nachfolgend kommen drei Bilder meiner bis jetzt aufgebauten Donkey Cars.
Das folgende Bild zeigt das Donkey Car (1:16) auf Basis des Fahrwerkes das für das original Donkey Car verwendet wurde.
Mein zweites Donkey Car (1:18) ist auf Basis eines einfachen Chassis und Pappe aufgebaut.
Das Dritte Donkey Car ist der Unimog von Tamiya auf Basis des CC-01 Chassis (1:10).
Hintergrund des Donkey Car Projekt
Das Donkey Car Projekt setzt einen Raspberry Pi ein auf dem das fertig trainierte neuronale Netz aktiv die Bildauswertung vornimmt und so das Auto z. B. zwischen zwei weißen Linien steuert. Das neuronale Netz das eingesetzt wird setzt auf TensorFlow von Google auf. Die Daten die sogenannten Trainingsdaten werden selber durch manuelles Steuern des Donkey Cars erfasst und auf Basis dieser Daten das Neuronale Netz bzw. der Pilot trainiert. Dieses Vorgehen nennt man auch Behavioral Cloning da das Neuronale Netz / der Pilot das Fahrverhalten von einem Menschen lernt.
TensorFlow ist eine plattformunabhängige Open-Source-Programmbibliothek für künstliche Intelligenz bzw. maschinelles Lernen im Umfeld von Sprache und Bildverarbeitungsaufgaben (Quelle: TensorFlow WIKI).
Wie werden die Trainingsdaten erzeugen
Die Trainingsdaten werden durch manuelle Steuerung und fahren mit dem Donkey Car erzeugt. Der Raspberry Pi 3 Model B+ zusammen mit der Raspberry Pi Kamera zeichnet die Trainingsdaten auf. Die Kamera nimmt das Bild direkt vor dem Auto auf und so sind die weißen Begrenzungslinien oder auch die Klebestreifen der Fahrbahn gut zu sehen. Neben dem Bild wird auch immer zu jedem Bild der aktuelle Wert für den Lenkeinschlag und der aktuelle Wert für die Geschwindigkeit in einer JSON-Datei gespeichert. Wichtig bei der Aufzeichnung der Trainingsdaten ist, dass das Auto nicht mit der Tastatur gesteuert wird sondern mit einem Gamepad wie einem PS4 Controller. Eine Steuerung über die Tastatur oder der Web-Oberfläche führt zu ruckeligen Lenkbewegungen und hackeligen Beschleunigungswerten. Die über Tastatur oder das Webinterface generierten Trainingsdaten sind für das Training des neuronalen Netzes nicht ideal. Damit die Trainingsdaten für das Training des Piloten verwendet werden können sollte das Donkey Car daher unbedingt mit einem Gamepad gesteuert werden.
Wo wird der Pilot trainiert?
Für das Training des neuronalen Netzes werden die Bilder und die zugehörigen Lenkbewegungen benötigt. Das neuronale Netzt wird nicht direkt auf dem Raspberry Pi Computer trainiert. Dazu ist die Leistung des Pi’s einfach zu schwach. Stattdessen wird das neuronale Netz auf einem PC idealer Weise mit NVIDIA Grafikkarte oder in der Cloud z. B. bei AMAZON trainiert. Ich habe das neuronale Netz für die Steuerung des Roboter Autos auf meinem Laptop mit Intel Core i5 5200U CPU trainieren. Das Training des Piloten dauert mit 12GB Ram, Ubuntu 14.04 und ca. 23.000 Trainingsdatensätze ca. 4 Stunden brach aber vorzeigtig nach ca. 12% der Durchläufe ab da keine Verbesserung des Neuronalen Netzes mehr erzielt wurde. Das gleiche Training mit den gleichen Trainingsdatensätzen benötigt ca. 3 Minuten auf einem nVIDIA Spezialrechner für Maschinenlernen der mit ca. 3PetaFlops gerade einmal drei Minuten benötigt hat.
Donkey Car Ablauf
Nach dem in den vorherigen Kapiteln erklärt wurde wie die Trainingsdaten erzeugt werden, wo das Training erfolgt und mit welcher Technologie möchte ich hier noch einmal das Vorgehen mit einer kleinen Grafik verdeutlichen.
- Die Trainingsdaten werden mit dem Donkey Car erzeugt.
- Die Trainingsdaten werden auf einen Computer übertragen auf dem das Neuronale Netz bzw. der Pilot trainiert wird.
- Das Neuronale Netz ist mit Tensorflow und KERAS aufgebaut und kann individuell optimiert werden.
Der nachfolgende Kreislauf kann immer und immer wieder wiederholt werden um z. B. die Trainingsdaten zu optimieren wenn das Neuronale Netz Fehler macht bzw. das Neuronale Netz kann auch optimiert werden.
Welche Hardware brauche ich?
Idealerweise kommt ein RtR RC Modellauto zum Einsatz Für den Umbau hin zu einem Donkey Car wird noch etwas an Hardware benötigt wie einen Raspberry Pi und eine Raspberry Pi Kamera. Für die Ansteuerung des Fahrtenreglers und Lenkservo des RC Autos wird ein ganz einfacher Servo Kontroller verwendet. Dieser wird direkt am Raspberry Pi angeschlossen und kann mit Python z. B. programmiert werden. Aus meiner Erfahrung mit diversen Raspberry Pi Robotern ist noch ein leistungsstarker Akku sehr wichtig. Hier sollte man nicht sparen andernfalls fährt das Auto vielleicht nur ein paar Minuten und das ganze Projekt macht am Ende keinen Spaß.
Zusammenfassung
Mich hatte das donkeycar Projekt überzeugt, da es mit wenig Geld auf die Beine gestellt werden kann. Die Software ist soweit schon vorgedacht und der erfolgreiche Einstieg in einen mit KI gesteuerten Roboter wird sehr sicher klappen. Wie einfach das Ganze dann in der Praxis ist und wie gut alles funktioniert werde ich hier auf meinem Blog in einer Artikelserie dokumentieren. Die Idee ist von allen Abschnitten des Projektes einen Erfahrungsbericht zu schreiben um den Leser ein Gefühl für die Komplexität zu geben.
Artikel Übersicht Donkeycar Roboter Auto:
Autonom fahrendes Raspberry Pi KI Roboter-Auto – EinleitungAutonom fahrendes Raspberry Pi KI Roboter-Auto – Chassis
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Elektronik
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Software Installation
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Kalibrierung
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Trainings Vorbereitungen
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Trainingsdaten aufzeichnen
Autonom fahrendes Raspberry Pi KI Roboter-Auto – das Neuronale Netz trainieren
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Donkeycar training in einem Docker Container (optional)
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Donkey Car UNIMOG Upgrade
Autonom fahrendes Raspberry Pi KI Roboter-Auto – Manuelle Short Keys
Autonom fahrendes Raspberry Pi KI Roboter-Auto – IMU Sensor 9-DOF absolute Orientation
Autonom fahrendes Nvidia Jetson Nano AI Roboter-Auto – Vorbereitung
Autonom fahrendes Nvidia Jetson Nano AI Roboter-Auto – Software Installation
Autonom fahrendes Nvidia Jetson Nano AI Roboter-Auto – Konfiguration des Donkey Car Frameworks
Sehr geehrter Herr Stapel
Mit grosser Faszination habe ich soeben Ihre Hompage durchgestöbert und mir auch gleich ihr Buch geordert. Es ist schon ein langjähriger Wunsch von mir, einmal einen eigenen autonomen Roboter zu bauen. Dank ihrem Werk scheint dieser Traum nun Wirklichkeit zu werden. Etwas hin und her gerissen bin ich nun aber noch, betreffend den benötigten Komponenten. Ich habe aktuell noch einen Raspberry Pi 3 B, 4x 1,2 GHz, 1 GB RAM zuhause rum liegen. Nun lese ich jedoch, dass der Jetson Nano eine deutlich höhere Leistung (= mehr Möglichkeiten) als der Raspberry besitzt. Ausserdem enthält das von Ihnen empfohlene “Waveshare NVIDIA JetBot AI Kit Smart Robot Based” wohl schon sämtliche benötigten Komponenten. Ich habe das Set soeben zu einem sehr attraktiven Preis auf Aliexpress entdeckt (wohl auch wegen dem heutigen Cyber Monday). Nun beschreiben Sie jedoch in ihrem neusten Buch den Aufbau mit einem Raspberry und nicht mit einem Jetbot. Sollte ich da vielleicht doch lieber zuerst einen Roboter auf Basis eines Raspberrys zusammenbauen um dem Buch besser folgen zu können?
Ich würde mich über einen Tipp sehr freuen.
Freundliche Grüsse
P.Baumgärtner
Hallo Herr Baumgärtner,
wenn Sie noch keine Erfahrungen im Bereich der Single Board Computer wie z. B. dem bekanntesten Vertreter dem Raspberry Pi bereits gesammelt haben dann würde ich Ihnen von einem Projekt mit dem Jetson Nano erst einmal abraten. Die Boards sind sich zwar sehr ähnlich aber unterscheiden sich dennoch und das merkt man sicher als Einsteiger gleich zu Beginn. Auch ist die Community sowie Softwareunterstützung beim Jetson Nano viel kleiner als bei dem seit Jahren verkauften und in großen Stückzahlen bereits produzierten Raspberry Pi.
Auch würde Ihnen mein Buch nur in kleinen Teilen helfen wenn Sie einen Jetson Nano verwenden. Die Unterschiede sind dann wieder zu groß wenn es um Software-Bibliotheken und die Unterstützung von Sensoren geht. Der Jetson Nano ist stark in dem Thema künstliche Intelligenz und dem Ausführen von Neuronalen Netzen. Das Thema AI ist aber ein ganz eigenes Feld und wird in meinem Buch nicht behandelt da es ein eigenes Buch sein müsste.
Daher würde ich empfehlen mit dem bereits vorhandenen Raspberry Pi 3 Model B+ und meinem Buch zu starten. Sich die Grundlagen anzueignen und dann ca. im März 2020 wenn der große Bruder des Jetson Nano der ca. 20x schneller sein wird erhältlich ist in das Thema künstliche Intelligenz und autonom fahrende Roboter-Autos wie dem Donkey Car einzusteigen. Das mit meinem Buch erworbene Wissen wird Ihnen dann sicher helfen und das Donkey Car das kann ich versprechen ist ein ganz tolles Projekt das mich nach wie vor begeistert und ich dazu weiter auf meinem Blog schreiben werde.
Viele Grüße,
Maker
Hallo Herr Stapel
Vielen herzlichen Dank für Ihre ausführliche Antwort und den guten Tipp betreffend Raspberry. Somit ist für mich klar, wo meine Reise beginnen wird. 🙂 Ihre bisherigen und zukünftigen Projekte spornen zusätzlich an, sich vertiefter in diese Materie einzulesen.
Liebe Grüsse
P. Baumgärtner
Andere Frage: Betreiben Sie auch ein Userforum, wo sich die Leser ihres Buches austauschen können?
Hallo Herr Baumgärtner,
nein ein Forum betreibe ich nicht aus zeitlichen Gründen da ich dieses Moderieren müsste um für mich als Betreiber Rechtssicherheit zu erreichen.
Viele Grüße,
Maker