Buchempfehlung:
Roboter-Autos mit dem Raspberry Pi

Roboter Autos mit dem Raspberry Pi - 2019

Der aktuelle Stand sollte sein, dass das Chassis des Donkey Cars aufgebaut ist, die Elektronik logisch angeschlossen ist und das Donkeycar Image auf die micro SD-Karte aufgespielt wurde. Dann wurde die weitere Software installiert und das Donkey Car Framework soweit eingerichtet. Dann ist jetzt der Augenblick gekommen das Donkey Car zu kalibrieren.

Donkey Car initial kalibrieren

Als erstes werden die maximalen Werte für die Lenkung nach links und rechts ermittelt. Ich habe dazu immer das Donkey Car auf den Schreibtisch gestellt und zwar so, dass alle Räder in der Luft sind. Via SSH habe ich eine Verbindung zu meinem Donkey Car aufgebaut und habe die Kalibrierung gestartet. Ich gehe davon aus, dass am Servo-Kontroller der Lenk-Servo am Kanal 1 angeschlossen ist.

Für die Kalibrierung bitte jetzt in den Ordner /home/pi/mycar wechseln und den folgenden Befehl ausführen. Dabei steht die 1 für den Kanal an dem der Lenk-Servo angeschlossen ist.

Befehl: donkey calibrate –channel 1

In der Konsole ist jetzt folgendes zu sehen.

Donkey Car calibrate

Donkey Car calibrate

Lenkeinschlag rechts

Hier jetzt z. B. mit einem Wert um die 500 starten und beobachten wie stark die Lenkung einschlägt. Ich bin immer danach gegangen ob der Servo-Motor brummt also zu weit lenkt und es zu einem Anschlag kommt. Wenn dem so war habe ich Schritt für Schritt den Lenkeinschlag reduziert also z. B. einen Wert von 490 eingeben bis der Servo-Motor nicht mehr gebrummt hat.

Hatte ich dann den maximalen Wert ermittelt für z. B. den Lenkeinschlag nach links habe ich diesen in der Datei /home/pi/mycar/config.py hinterlegt.

Lenkeinschlag links

Dann habe ich den Lenkeinschlag nach genau dem gleichen Prinzip in die Andere Richtung ermittelt und habe hier mit einem Wert um die 280 gestartet. War der Wert 280 zu gering und der Servo-Motor hat wieder gebrummt habe ich es mit 290 probiert bis der Motor nicht mehr gebrummt hat. Anschließend habe ich auch diesen Wert also jetzt für den rechten Lenkeinschlag in der /home/pi/mycar/config.py abgespeichert.

Das Bild zeigt meine Konfiguration mit der Erweiterung, dass ich für die verschiedenen Donkey Cars die ich aufgebaut habe via der MAC-Adresse unterscheide welches Auto gerade die config.py geladen hat.

Donkey Car steering

Donkey Car steering

Geradeauslauf prüfen

Anschließend habe ich überprüft ob der Geradeauslauf einigermaßen stimmt. Dazu habe ich die Differenz zwischen maximal links und maximal rechts ermittelt durch zwei geteilt und auf den kleineren Wert addiert.

(500 – 280 ) / 2 + 280 = 390

War der Geradeauslauf noch nicht richtig, so habe ich dann durch anpassen der beiden maximalen Werte versucht diesen zu treffen. Ist mir das nicht gelungen habe ich den Wert für den Geradeauslauf eingeben, das Lenkgestänge vom Servo-Motor abgeschraubt, die Räder gerade gestellt, das Lenkgestänge wieder montiert und anschließend wieder alles von Beginn an wiederholt.

So hat es bis jetzt bei sechs Donkey Cars geklappt die ich aufgebaut habe das die Lenkung schon recht gut kalibriert war.

Hinweis: Da die Werte für die Lenkung der config.py Datei abgelegt werden und das für jedes Donkey Car individuell wäre es prinzipiell möglich die trainierten Neuronalen Netze zwischen den Donkey Cars zu tauschen. Aber in der Praxis ist das ganze doch viel komplexer und so einfach nicht möglich.

Fahrtenregler kalibrieren

Als nächstes muss der Fahrtenregler kalibriert werden. Wichtig ist, dass das Auto aufgebockt steht also die Räder nicht den Boden berühren. Ich nehme an, dass der Fahrtenregler am Kanal 0 der Servo Kontrollers angeschlossen wurde. Jetzt geht es im Prinzip genau so weiter wie beim Kalibrieren der Lenkung. Führe zunächst den folgenden Befehl aus und beachte, dass die 0 für den Kanal steht an dem der Fahrtenregler angeschlossen ist.

Befehl: donkey calibrate –channel 0

Vorwärts fahren

Starte mit einem Wert um die 400 und es sollten sich die Räder nach vorne drehen. Ermittle jetzt wieder den maximalen Wert für Vollgas also addiere immer 10 auf die 400. Wenn Du den maximalen Wert ermittelt hast hinterlegen dieser wieder in der /home/pi/mycar/config.py Datei.

Stoppen

Als nächstes versuche den Wert zu finden bei dem die Räder stillstehen also der Fahrtenregler stoppt. Dieser Wert liegt vermutlich bei 330. Hast Du den Wert gefunden bei dem die Räder stoppen so hinterlege auch diesen wieder in der config.py Datei.

Rückwärts fahren

Ermittle jetzt den Wert für die Rückwärtsfahrt Deines Donkey Cars. Dieser Wert wird bei ca. 280 als maximaler Wert liegen. Aber probiere auch hier verschiedene Werte aus.

Am Ende sollte Deine config.py Datei in etwas wie folgt aussehen.

Donkey Car throttle

Donkey Car throttle

Sony PS4 Gamepad aktivieren

Jetzt kannst Du probieren ob Dein Donkey Car sich schon mit dem Sony PS4 Controller lenken lässt. Dazu musst Du noch in der config.py Datei die Steuerung über einen Joystick bzw. über das Gamepad aktivieren. Suche dazu die Zeile mit dem Eintrag „“ und setze das False an dieser Stelle auf True.

#JOYSTICK
USE_JOYSTICK_AS_DEFAULT = True

Hast Du diese Einstellung vorgenommen, so stelle wieder sicher, dass Dein Donkey Car entweder am Boden steht oder die Räder in der Luft sind. Führe jetzt den folgenden Befehl aus und teste mit dem Joystick ob die Lenkung geht.

Befehl: python manage.py drive

Wenn die Lenkung geht dann ziehe einfach mal am Trigger rechts (Zeigefinger) ob sich die Räder anfangen zu drehen. Wenn das alles klappt, dann bist Du jetzt eigentlich fertig mit der Kalibrierung. Allerdings kann man jetzt die Lenkung noch etwas genauer einstellen wenn man das möchte.

Lenkung Feintuning

Nach dieser ersten ich nenne es mal groben Kalibrierung des Donkey Cars habe ich mich an das Feintuning der Lenkung gemacht. Ich dachte zu Beginn, dass dieses Feintuning sehr aufwendig wird. Aber eigentlich muss man immer nur mit verschiedenen Lenkwinkeln einen Halbkreis fahren.

Ich bin der Anleitung gefolgt wie hier beschrieben.

Allgemeine Beschreibung des Vorgehens

Mein Donkeycar habe ich immer einen Halbkreis vor dem Fernseher fahren lassen und dann mit dem Zollstock am Boden den Radius gemessen. Das sieht dann in etwa wie auf dem folgenden Bild gezeigt aus.

Donkeycar fine tuning

Donkeycar fine tuning

Den vom Donkey Car gefahrenen Radius und Lenkeinschlag notiert man sich jetzt und wieder holt das ganze mehrfach mit verschiedenen Lenkeinschlägen. Das Prozedere habe ich dann wie gewohnt analog auf einen Blog gemacht. Ich konnte sehr schnell erkennen, dass der Lenkeinschlag nach rechts nicht so enge Radien zulässt wie der Lenkeinschlag nach links. Es ist sehr gut zu sehen, dass rechts bei einem Lenkeinschlag von 0,5 ein Radius von 2.380 mm erreicht wird. Links hingegen liegt der Radius bei guten 1.180 mm und ist somit nur halb so groß.

Hier das Bild dazu gehörige Bild vom Test 1.

Donkeycar - fine tuning Test 1

Donkeycar – fine tuning Test 1

Ich habe dann den Roboter wieder zerlegt und mir die Lenkung angeschaut. Hier konnte ich aber auf der mechanischen Seite keinen großen Fehler erkennen. Ich habe alle Schrauben noch einmal festgezogen und den Test noch einmal durchgeführt. Gut zu erkennen ist auf dem folgenden Bild das die Radien jetzt in Summe kleiner wurden aber der Unterschied zwischen linker und rechter Seite immer noch vorhanden ist.

Hier das Bild dazu gehörige Bild vom Test 2.

Donkeycar - fine tuning Test 2

Donkeycar – fine tuning Test 2

Also hat die mechanische Korrektur nur zu einer generell engeren Kurvenfahrt geführt. Aber die Abweichung zwischen linker und rechter Seite ist nach wie vor vorhanden. Ich vermute, dass es vielleicht auch mit der Gewichtsverteilung etwas zu tun haben kann. Die beste Lösung ist jetzt wohl die PWM Werte zu verschieben und so zwar eine generell schlechtere Kurvenfahrt zu erzielen die dann dafür aber zwischen linker und rechter Seite ausgewogener ist.

Steuerung über die Web-Oberlfäche

Die Versuche lassen sich einfach über eine Weboberfläche durchführen auf der der Lenkeinschlag und die Geschwindigkeit eingegeben wird. Das folgende Bild zeigt diese Weboberfläche. Um die Web-Oberfläche zu starten führe den folgenden Befehl aus.

Befehl: python manage.py drive

Öffne jetzt im Browser die folgende URL um auf Deinen Raspberry Pi zuzugreifen um die Web-Oberfläche zu starten.

URL: <IP-Adresse-Donkey-Car>:8887

Hinweis: Zu vor wurde beschrieben wie der Joystick in der config.py Datei aktiviert wird. Hier bitte für die Steuerung über die Web-Oberfläche den Wert wieder auf False setzen. So kommt es nicht zu eventuellen Problemen zwischen Web-Oberfläche und angeschlossenen Joystick

Donkeycar fine tuning web UI

Donkeycar fine tuning web UI

Nach dem anpassen der PWM Werte in der config.py Datei für die Linke Seite sieht das Ergebnis der Messung bzw. des Feintunings der Lenkung für mein Donkey Car jetzt wie folgt aus. Leider habe ich nach wie vor zwei krasse Aussreiser wenn das Auto nach links lenkt. Hier kann es vielleicht daran liegen, dass ich mit einer höheren Geschwindigkeit gefahren bin bzw. das günstige China-Fahrwerk mit dem ich die Tests gemacht habe einen Hinterachsen-Antrieb ohne Differential hat.

Aber ich lasse es jetzt mal so von den Einstellungen und werde als nächstes Trainingsdaten aufzeichnen um das Neuronale Netz also den Piloten zu trainieren.

Donkeycar - fine tuning Test 3

Donkeycar – fine tuning Test 3

Zusammenfassung

Das initiale Kalibrieren und auch das Feintuning an sich ist wichtig, damit die Lenkung ausgewogen nach links und rechts lenkt. Ich hatte mir das Vorgehen bezüglich dem Feintuning wesentlich komplexer vorgestellt als es dann war. Für das Feintuning habe ich ca. 2 Std. gebraucht. Das aber auch nur, da ich das Chassis zerlegt hatte bei der Suche nach dem Fehler in der Lenkung um den krassen Unterschied  zwischen der linken und rechten Seite heraus zu finden. Aber am Ende hat sich die Lösung via Software angeboten und das gewünschte Ergebnis geliefert wenn auch mit zwei Ausreisern. Ich werde jetzt weiter machen und mal schauen ob sich das Auto trainieren lässt für eine autonome Fahrt auf einem Rundkurs.


Artikel Übersicht Donkeycar Roboter Auto:

Autonom fahrendes Raspberry Pi KI Roboter-Auto – Einleitung
Autonom 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
(Visited 1.009 times, 1 visits today)