Wir kennen es alle auf Meetups oder Produktpräsentationen steht nicht immer ein W-LAN zur Verfügung das zuverlässig und einfach gentutz werden kann. So es durchaus schwierig sich z. B. mit dem Donkey Car über WIFI zu verbinden. Oft steht dann auch nur ein begrenztes Zeitfenster zur Verfügung innerhalb der die Vorstellung des Donkey Cars klappen muss. Damit ich nicht immer mein Donkey Car über PuTTY / SSH bedienen muss habe ich mir deshalb Buttons an meinen Raspberry Pi angeschlossen. Mit diesen Knöpfen kann ich die grundlegenden Funktionen des Donkey Car Frameworks ausführen.

Auf dem nachfolgenden Bild ist mein Donkey Car mit montiertem Pimoroni Button SHIM zu sehen.

Donkey Car - pimoroni button_SHIM

Donkey Car – pimoroni button_SHIM

Button SHIM

Das Pimoroni Button SHIM stellt einem ganz einfach fünf Buttons und eine RGB LED am Raspberry Pi zur Verfügung. Die Leiste mit den Knöpfen kann einfach auf die GPIO Pin-Leiste des Raspberry Pi aufgesteckt werden. Die Buttons selber kommunizieren via dem I2C Bus mit dem Raspberry Pi. Steckt man allerdings das Button SHIM einfach auf die GPIO Leiste des Raspberry Pi dann ist der I2C Bus nicht mehr erreichbar um weitere Geräte wie den Servo Kontroller anzuschließen. Daher habe ich mir eine Adapter Platine zugelegt die die GPIO Pin Leiste des Raspberry Pis mehrfach herausführt.

Diese Platine ist auf dem nachfolgenden Bild gut zu sehen.

Donkey Car GPIO expander HAT

Donkey Car GPIO expander HAT

Der Raspberry Pi mit dem Button SHIM auf dem GPIO expander montiert sieht dann wie auf dem folgenden Bild zu sehen aus. Das ganze ist wirklich ganz einfach montiert und mit vier Schrauben gesichert.

Donkey Car button SHIM GPIO expander HAT

Donkey Car button SHIM GPIO expander HAT

Nach dem alles technisch montiert war habe ich mir überlegt welche Funktionen mir wichtig sind.

Funktionen

Die beiden wichtigsten Funktionen waren für mich einmal den Raspberry Pi herunter fahren zu können und den Donkey Car Modus für die Datenaufzeichnung starten und stoppen zu können. Dann sind immer weiter Funktionen dazu gekommen wie das erzeugen von MPEG4 Videos aus den aufgenommenen einzelbildern und das Packen aller Trainingsdaten in eine TAR Datei mit anschließendem kopieren auf einen USB Stick.

Auch ist die LED auf dem Button SHIM sehr gut um Statusinformationen die nicht auf dem OLED Display angezeigt werden können ersichtlich zu machen. So leuchtet die LED in unterschiedlichen Fargen und blinkt. Anhand dieser Codes ist mir der Status bekannt in dem sich das Donkey Car befindet.

Das folgende Bild zeigt die verschiedenen Funktionen die ich für mein Donkey Car über die Button implementiert habe.

Donkey Car - Button SHIM function overview

Donkey Car – Button SHIM function overview

Software

Damit das Button SHIM funktioniert muss in der virtuellen Umgebung des Donkey Car Frameworks die Software bzw. die Bibliotheken von PIMORONI installiert werden. Dazu einfach der Webseite und der dort online gestellten Anleitung folgen.

URL: https://shop.pimoroni.com/products/button-shim

Hier eine kurze Anleitung wie die Bibliothek installiert wird.

Der online Installer wird über den folgenden Befehl gestartet.

Befehl: curl https://get.pimoroni.com/buttonshim | bash

Jetzt ist die Software vorhanden damit das Button SHIM unter Python verwendet werden kann.

Hinweis: Für alle bei denen die Software installation Probleme macht empfehle ich folgende Seite von Pimoroni. Hier gibt es weiterführende Erklärungen: button-shim

Autostart

Damit das Python Programm das die Steuerung übernimmt immer automatisch ausgeführt wird nach jedem Neustart des Donkey Cars muss einmal ein Start-Skript “control.sh” angelegt werden. Weiter muss in der crontab eine Zeile eingefügt werden die genau dieses Skript “control.sh” startet. Anschließend wird immer das Python Programm “button.py” ausgeführt, dass die Logik bzw. die Aufrufe ausführt die hinter den einzelnen Buttons hinterlegt sind.

Autostart-Skript

Das Skript ist recht einfach gehalten und führt in der virtuellen Umgebung des Donkey Cars lediglich ein Python Programm im Hintergrund aus. Ein großes Dankeschön geht hier an André R. der mir erklärt hat wie es funktioniert in der virtuellen Umgebung des Donkey Cars via Autostart ein Python Programm zu starten.

#!/bin/bash
source ~/env/bin/activate
python /home/pi/button.py >> /home/pi/button.log 2>&1 &

Crontab ergänzen

Nach dem das Start-Skript control.sh angelegt ist muss dieses noch in der crontab hinterlegt werden damit es immer ausgeführt wird. Dazu in der crontab die folgende Zeile ergänzen. Diese ruft das Skript im Hintergrund auf.

@reboot pi /home/pi/control.sh >> /home/pi/control.log 2>&1 &

Python Programm button.py

Das Python Programm button.py, dass auf die gedrückten Buttons reagiert und entsprechend die Funktionen ausführt steht auf GitHub unter der folgenden URL online verfügbar.

GitHub URL: https://github.com/custom-build-robots/donkey_car_button_SHIM

Zusammenfassung

Diese Implementierung hat mir sehr viel Zeit und Ärger gespart auf verschiedenen Präsentationen auf denen ich mein Donkey Car und das Projekt dahinter vorgestellt habe. Auch ist die Funktion ideal auf Meetups etc. wenn das verfügbare W-LAN nicht zuverlässig funktioniert. Generell spart es einem auch einfach viel Zeit bei der Erhebung der Trainingsdaten denn ein extra Laptop wird so nicht gebraucht.


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 900 times, 1 visits today)