Selbstfahrende Modellautos nach dem Vorbild des DonkeyCar Projekts um uns mit Maschine Learning auseinanderzusetzen. Das Gehirn des Fahrzeugs ist ein Raspberry Pi 3 B und als Auge dient eine Raspberry Pi Kamera (Clone) mit 160° Weitwinkelobjektiv.
Demnächst setzen wir auch nVidia Jetson Nano als Boards ein, dies ermöglicht dann das Trainieren des neuronalen Netzes direkt im Fahrzeug.
Anmelden zu Donkeycar-Workshops könnt ihr euch auf der Weiterbildungs-Seite.
Das Donkeycar Projekt hat die Homepage http://www.donkeycar.com und die Doku liegt unter https://docs.donkeycar.com
Einen Slack-Chat gibt es unter https://donkeycar.slack.com/ - schaut mal im Channel #community_germany vorbei!
PINGs Donkeycars
PING hat drei DonkeyCars von der Variante "Donkey Pro" (hier in der Doku erwähnt). Sie basieren auf dem Mission-D 1:10 Driftcar von Hobbyking. Dazu gehört noch ein Raspberry Pi 3B (bzw 3B+) und ein PCA9685 Servo-Board (kostet unter 2€ bei AliExpress) das die PWM-Signale erzeugt und selbst per I2C angesteuert wird. Sender (Funkfernsteuerung) und Empfänger benötigt man nicht, wohl aber ein USB-/Bluetooth-Gamepad (oder anderen Joystick) für den PC für das Trainieren (dass dann über das WLAN des RasPi erfolgt).
Die 3D-Modelle für den 3D-Druck des Griffs bzw für den Lasercutter (Holzplatte) findet ihr bei Thingiverse. Bei anderen RC-Autos im Maßstab 1:10 muss man in der Regel nur die Löcher in der Bodenplatte anpassen. Wichtig ist bei der Wahl des Fahrzeugs eigentlich nur dass Lenkservo und Fahrtenregler separat ausgeführt sind und einzeln per PWM Signal angesteuert werden können.
PINGs DonkeyCars haben unterschiedliche Hostnamen. Sie sind über die .local TLD erreichbar und werden via mDNS resolved.
Die Autos von ping haben die Hostnamen
- donkey1.local
- donkey2.local
- donkey3.local
Die Nummer des Fahrzeugs seht ihr auch auf der Holzplatte (one, two, three).
WLAN
Das WLAN wird in /etc/wpa_supplicant/wpa_supplicant.conf konfiguriert. Alle referenzierten Dateien befinden sich übrigens auf der rootfs Partition. Diese solltet ihr auch vergrößern auf die Größe der MicroSD-Karte (mit parted und resize2fs) um mehr Platz für Trainigsdaten zu haben.
Bei WLANs ohne Verschlüsselung muss die Zeile psk=“…“ durch
key_mgmt=NONE
ersetzt werden.
Shell-Zugang
Nachdem der RasPi gebootet hat kann man sich z.B. mit ssh pi@donkey1.local einloggen. Das Passwort bekommt ihr von Sven. Damit ihr es nicht ständig eingeben müsst packt euren SSH public key ins ~/.ssh/authorized_keys.
Die Daten für donkeycar befinden sich i.d.R. unter ~/mycar
Dort gibt es ein Verzeichnis „models“ mit den fertig trainierten Modellen und ein Verzeichnis „tub“ mit Daten fürs Training.
Das Training findet nicht auf dem RasPi statt sondern auf einem (schnellen) PC.
Nötige Befehle nach der Installation:
Autonomes Fahren des RasPi mit einem Model:
python manage.py drive --model models/mymodel
Manuelles Fahren mit der Möglichkeit Daten fürs Trainieren aufzunehmen:
python manage.py drive
In beiden Fällen könnt ihr nach dem Start des Webservers auf Port 8887 mit einem Browser verbinden (bei mir geht das Live Video nur mit Google Chrome).
Wenn ihr Daten aufnehme so liegen diese im Ordner "tub". Daten müssen vor den Trainieren des neuronalen Netzes noch bereinigt werden. Sämtliche Fahrfehler müssen entfernt werden, sonst erzielt ihr keine brauchbaren Ergebnisse! Dazu löscht alle Bilder und dazugehörigen record_XXX.json Dateien auf denen die Lenkrichung nicht richtig ist.
Trainieren eines Modells model3 auf dem PC mit Daten im Verzeichnis tub:
python manage.py train --tub tub --model models/model3
Trainieren eines Modells model4 basierend auf einem model3 auf dem PC mit (weiteren) Daten im Verzeichnis tub:
python manage.py train --tub tub --base_model models/model3 --model models/model4
Man kann mit der Tastatur lenken: Gasgeben mit “i”, bremsen mit “k”.
Besser ist aber ein USB- oder Bluetooth-Gamepad. Dazu im Browser auf den entsprechenden Button drücken.
Derzeit haben die Autos zwei getrennte Akkus: Ein USB Powerpack für den RasPi und einen LiPo Akku für das Fahrzeug.
Am Auto gibt es für den LiPo einen etwas versteckten Ein-/Ausschalter neben dem Fahrtregler. Wenn ihr den Schalter einschaltet piepst es.
Denkt dran beide Akkus vom Fahrzeug zu trennen wenn ihr fertig seid, da sie sonst kaputt gehen.
Wenn ihr den RasPi herunterfahrt mit „sudo shutdown -h now“ dann achtet auf die grüne LED auf dem RasPi neben der roten LED. Wenn sie ausgeht (und bleibt) dann könnt ihr den Micro-USB-Stecker ziehen.
LiPo
Wir haben vier Lithium-Polymer Akkus (2S 2200mAh 7,4V) und ein Akkuladegerät (SkyRC iMax B6AC V2). Man kann immer nur einen Akku gleichzeitig laden. Zum Laden muss man das Balancer-Kabel des Akkus und das eigentliche Stromkabel des Akkus an das Ladegerät anschließen. Zum Starten des Ladevorgangs hangelt euch durch das Menü und haltet dann 1 Sekunde lang die Start/OK Taste gedrückt.
Wenn ihr mit den Donkeycars fahrt werdet ihr merken dass allmählich die Geschwindigkeit des Fahrzeugs sinkt. Achtet darauf dass die LiPo Akkus nicht tiefentladen werden. Spätestens bei 3V Zellenspannung sollten die Akkus wieder geladen werden. Die Spannung könnt ihr ermitteln indem ihr den LiPo Akku an das Ladegerät anschließt.
LiPo Akkus sollten im LiPo-Schutzbeutel gelagert werden. Bei längerer Lagerung am besten mit einem Ladestand von ca. 70%.
USB Power Pack
Wir haben 3 USB Power Packs. Achtet darauf dass der RasPi am Port der mit „2,1A“ beschriftet ist angeschlossen wird. Zum Laden der Power Packs nutzt ihr den Micro-USB Port am Powerpack. Die Powerpacks haben einen kleinen Knopf mit dem man den Ladezustand überprüfen kann. Bei voller Batterie leuchten 4 blaue LEDs.
Old but good
Hier sind Dinge aus der Vergangenheit gut aufgehoben.
Planung für die Maker Faire Ruhr im März 2019 im Cryptpad damit Nicht-Pingmitglieder auch editieren können.