Buchempfehlung:
Roboter-Autos mit dem Raspberry Pi

Roboter Autos mit dem Raspberry Pi

Als erstes muss das offizielle Image von NVIDIA für das Jetson Nano Board auf eine SD-Karte geschrieben werden. Für diese Anleitung wurde von mir das Image mit der Bezeichnung und Version „jetson-nano-sd-r32.1-2019-03-18.img“ verwendet.

Die Image Datei findet man auf der NVIDA Webseite unter der folgenden URL: https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write

Sie sollten die Image Datei auf eine schnelle Mirco-SD Karte schreiben, die mindestens 32GB groß ist. Anschließend stecken Sie diesen in das Nano Board, schließen das Board an einem Monitor, Maus, Tastatur an und schalten es sein.

NVIDIA Jetson Nano Donkey Car

NVIDIA Jetson Nano Donkey Car

Die ersten Schritte sind ganz einfach. Es muss einmal die Sprache festgelegt werden und das Tastaturlayout. Anschließend wird eine Verbindung via WIFI USB Adapter zum eigenen Netzwerk aufgebaut. Eine Alternative ist natürlich auch das LAN-Kabel. Aber dieses macht an einem Donkey Car nicht wirklich Sinn.

Nach dem alles soweit konfiguriert wurde wechseln Sie in das Terminal Fenster.

Softwareinstallation

Als erstes bringen Sie die Repository-informationen auf den neuesten Stand. Dazu führen Sie den folgenden Befehl aus.

Befehl: sudo apt-get update

Nach dem das Update durchgelaufen ist beginnt die Softwareinstallation.

An dieser Stelle möchte ich mich bei allen Usern im NVIDIA Forum bedanken für die vielen dort verfügbaren Hinweise sowie bei „Fei Cheung“ für diese Beschreibung Getting started with Jetson Nano and Donkey car aka Autonomous Car Portal.

Zunächst werden Sie ein paar Python Bibliotheken und Bibliotheken für die Verwendung von TensorFlow installiert.

Befehl: sudo apt-get install python3-pip libhdf5-serial-dev hdf5-tools

Nach der Installation muss unbedingt ein Neustart des Systems durchgeführt werden. Denn der nachfolgende Schritt warf bei mir immer eine lange Liste an Fehlern und nach vielen Wiederholungen muss es wohl am fehlenden Neustart gelegen haben.

Starten Sie den Nano mit dem folgenden Befehl neu:

Befehl: sudo reboot

Bei mir hat dann die Installation von TensorFlow mit dem folgenden Befehl irgendwann ohne Fehler geklappt.

Befehl: pip3 install –extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3 –user

Die Installation dauert recht lange und es lohnt sich nicht den Bildschirm zu beobachten. Nach der Installation von TensorFlow können Sie wie folgt prüfen ob diese erfolgreich war.

Starten Sie in der Konsole python3 mit dem folgenden Befehl:

Befehl: python3

Anschließend importieren Sie TensorFlow in dieser Python3 Umgebung mit dem folgenden Befehl.

Befehl: import tensorflow as tf

Es sollte keine besondere Meldung im Terminalfenster erscheinen. Mit der Tatenkombination „CTRL + D“ verlassen bzw. beenden Sie die Python3 Umgebung wieder

Als nächstes können Sie das Pytorch Framework installieren. Dazu laden Sie dieses zunächst von der NVIDIA Seite mit dem folgenden Befehl im Terminal Fenster herunter:

Befehl: wget https://nvidia.box.com/shared/static/veo87trfaawj5pfwuqvhl6mzc5b55fbj.whl -O torch-1.1.0a0+b457266-cp36-cp36m-linux_aarch64.whl

Anschließend starten Sie die Installation mit diesem Befehl:

Befehl: pip3 install numpy torch-1.1.0a0+b457266-cp36-cp36m-linux_aarch64.whl

Nach der erfolgreichen Installation testen Sie erneut ob Pytorch erfolgreich installiert wurde. Dazu müssen Sie wieder

Befehl: python3

Importineren Sie jetzt Pytorch mit:

Befehl: import torch

Es sollte die Versoinsnummer z. B. „1.1.0a0+b457266“ angezeigt werden.

Als nächstes interessiert uns ob die CUDA Treiberunterstützung verfügbar ist. Dazu führen Sie den folgenden print Befehl aus.

Befehl: print(‘CUDA available: ‘ + str(torch.cuda.is_available()))

Es sollte jetzt die Medlung „CUDA available: True“ im Terminal Fenster erscheinen. Mit der Tastenkombination „CTRL + D“ verlassen Sie die Python3 Umgebung wieder.

Zum Schluß werden noch die Pakete SCIPY und KERAS installiert. Beide werden benötigt um das Donkey Car Framework auf dem Jetson Nano laufen lassen zu können. Dazu führen Sie die beiden folgenden Befehle nacheinander aus.

Befehl: sudo apt-get install python3-scipy

Befehl: sudo apt-get install python3-keras

Hier testen wir nach der Installation ob KERAS erfolgreich installiert wurde. Dazu wechseln Sie wieder in die PAthon3 Umgebung.

Befehl: python3

Anschließend importieren Sie KERAS in dieser Umrebung.

Befehl: import keras

Es sollte eine Meldung wie folgt erscheinen „Using TensorFlow backend.“.

Jetzt ist der Teil der Softwareinstallation abgeschlossen der die Basis für das Donkey Car Framework legt. Jetzt folgen noch spezielle Pakete die benötigt werden wie die Bibliothek von Adafruit für den PCA9685 Servo-Kontroller.

Dieses installieren Sie mit dem folgenden Befehl:

Befehl: pip3 install Adafruit_PCA9685

Ich gehe jetzt davon aus, dass bei Ihnen der I²C Bus des NVIDIA Jetson Nano mit dem Servo-Kontroller verbunden ist. Führen Sie wenn das der Fall ist den folgenden Befehl aus um zu sehen ob der Servo-Kontroller auch gefunden wird.

Befehl: sudo i2cdetect -y -r 1

Sie sollten den Servo-Kontroller mit den beiden I²C Adressen 40 und 70 im Terminal Fenster angezeigt bekommen.

Damit der User mit dem Sie am JEtson Nano arbeiten, also der User den Sie zu beginn der Installaton angelegt haben auch ohne sudo auf den I²C Bus zugreifen darf muss dieser User der Gruppe i2c hinzugefügt werden.

Dazu führen Sie den folgenden Befehl aus.

Befehl: sudo usermod -a -G i2c username

Bitte starten Sie den Nano jetzt neu mit dem folgenden Befehl:

Befehl: sudo reboot

Nach dem der Nano wieder hochgefahren ist prüfen Sie ob Ihr user der Gruppe i2c hinzugefügt wurde. Dazu führen Sie im Terminal Fenster den folgenden Befehl aus.

Befehl: groups

Es sollte eine Meldung ähnlich wie folgende erscheinen.

i2c adm cdrom sudo audio dip video plugdev lpadmin gdm sambashare gpio

Jetzt ist alles soweit installiert und funktionsbereit. Als nächstes schließen Sie die Kamera an.

Kamera anschließen

Am Jetson Nano läuft nur die aktuelle Raspberry Pi Kamera V2 mit dem Chipsatz „IMX219“. Viele günstige Modelle bzw. die ersten Raspberry Pi Kamera mit dem OV5647 Chip werden nicht vom Betriebssystem aktuell unterstützt.

Nach dem die Kamera angeschlossen ist sollte diese mit dem folgenden Befehl als Gerät video0 angezeigt werden.

Befehl: ls /dev/video0

Jetzt solle die Kamera funktionieren.

Kamera testen

Ob die Kamera auch wirklich funktioniert kann man nur sagen wenn man auch ein Bild sieht. Hier gibt es von der wohl besten Seite im Internet jetsonhacks.com rund um die NVIDIA Jetson Familie ein kleines Programm um den live Video Stream anzeigen zu lassen.

Das Programm nebst Erklärung steht auf GitHub zur Verfügung.

URL: https://github.com/JetsonHacksNano/CSI-Camera

Mit dem folgenden Befehl kann das Repository auf das Jetson Nano Board herunter geladen werden.

Befehl: git clone https://github.com/JetsonHacksNano/CSI-Camera.git

Es ist ein kleines Python Programm mit dabei das ein live Bild von der Kamera zeigt. Mit dem folgenden Befehl kann das Programm im Ordner CSI-Camera gestartet werden.

Befehl: python simple_camera.py

Hinweis: Probleme in der Stromversorgung

Wenn das Programm läuft steigt die Leistungsaufnahme des Jetson Nano doch deutlich und mein Standard Handy Ladegerät kommt wohl an seine Grenzen. Das soll heißen, der Nano stürzt einfach ab. Genaures muss ich hier nach analysieren und eine Lösung finden wenn das Donkey Car autonom fahren soll.

Lösung der Probleme in der Stromversorgung:

Ein Netzteil mit 5V und 5A über den ganz linken Stecker (die Buchse) für die Stromversorgung liefert genug Leistung das der Nano nicht abstürzt sobald etwas mehr Rechenpower von ihm abverlangt wird. Damit die Stromversorgung über die linke Buchse auch klappt muss ein kleiner Jumper gesetzt werden.

Donkey Car Framework installieren

Wie zu Beginn des Artikel erwähnt folge ich mit Dieser Anleitung in weiten Teilen der Beschreibung von Fei Cheung. Er hat eine Version des Donkey Car Frameworks auf GitHub online gestellt die mit kleinen Modifikationen auf dem Jetson Nano läuft. Daher wird im weiteren Verlauf der Beschreibung genau diese Version installiert.

Zu nächst klonen Sie das Donkey Framework von GitHub auf den Jetson Nano mit dem folgenden Befehl.

Befehl: git clone https://github.com/feicccccccc/donkeycar.git

Dann wechseln Si emit dem Befehl “cd donkeycar“ in das Verzeichnis.

Mit dem folgenden Befehl installieren Sie dann das Donkey Car Framework auf dem Jetson Nano. Das kann eine lange Zeit in Anspruch nehmen da noch weitere Abhängigkeiten installiert werden.

Befehl: pip3 install -e .

Anschließend ist das Donkey Car Framework installiert.

Fei Cheung schreibt in seinem Post auch etwas zu den Anpassungen die er vorgenommen hat.

For those who are interested. I edit the following things.

  1. Add a new camera class
  2. Add a default bus to Actuator parts
  3. Add Int typecasting in Keras.py for a variable to make training works

Bevor Sie jetzt die eigentliche Instanz des Donkey Car Frameworks auf Ihrem Jetson Nano initialisieren ist e seine kurze Überlegung wert dieses in einer virtuellen Umgebung vorzunehmen. Diese installieren Sie wie folgt.

Befehl: sudo apt-get install virtualenv

Das Kürzel „env“ steht hier für den Namen der virtuellen Umgebung die Sie anlegen.

Befehl: virtualenv env -p python3

Anschließend müssen Sie die virtuelle Umgebung „env“ aktivieren damit Sie in dieser die Instanz des Donkey Cars anlegen können.

Befehl: source env/bin/activate

Mit dem folgenden Befehl legen Sie die Donkey Car Instanz „mycar“ in der zuvor gestarteten virtuellen Umgebung an.

Befehl: donkey createcar mycar

Ab jetzt können Sie über den Ordner mycar das Donkey Car Framework konfigurieren und starten. Wie das genau geht und was Sie hier machen können entnehmen Sie bitte meinen Beiträgen rund um das Donkey Car.

Hinweis:

Damit die virtuelle Umgebung mit dem Namen “env” immer gestartet wird wenn Du Dich mit Deinem User am Nano anmeldest musst Du in der “/home/<user name>/.bashrc” Datei ganz am Ende den Aufruf “source env/bin/activate” einfügen um die virtuelle Umgebung automatisch bei jedem Login zu starten.

Terminal auto load virtual env

Terminal auto load virtual env

Zusammenfassung

Mir gefällt das Jetson Nano sehr gut. Es ist ein kompaktes Board mit richtig viel Power. Auch die softwareinstallation klappte recht gut und fast ohne Probleme. Hier geht ein großer Dank an für seinen tollen Beitrag und für das überarbeitete Donkey Car Framework. Wie es mit der Stromversorgung weiter geht muss ich noch prüfen.


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 AI Roboter-Auto – NVIDIA Jetson Nano SBC
(Visited 239 times, 1 visits today)