Das Buch Roboter-Autos mit dem Raspberry Pi in den Auflagen von 2016 und 2019, das ich geschrieben habe, benötigt einige kleinere Updates. Die Software zu diesem Projekt hat sich über die Zeit weiterentwickelt und vor allem das Live-Videostreaming funktioniert nun ein wenig anders. Alle über die vergangenen Jahre angefallenen Änderungen sind hier für euch dokumentiert.

Wenn euch noch etwas auffällt, das jetzt nicht mehr funktioniert, meldet euch bitte. So kann ich das Problem – und hoffentlich auch zeitnah die Lösung – hier für alle veröffentlichen.

2. Auflage 2019
Roboter Autos mit dem Rasbperry Pi - 2. Auflage
1. Auflage 2016
Roboter-Autos mit dem Raspberry Pi - 2016

Der Hintergrund zu diesem Update

Mit der Weiterentwicklung des Betriebssystems Raspbian OS und auch der Bibliotheken wie der libcamera-Bibliothek für die Kamera haben sich etliche Änderungen ergeben. Ich habe diese Anpassungen und Lösungen hier so gut wie möglich beschrieben und jeweils die Seitenzahl für jede Anpassung angegeben.
Die Raspbian-Version, die für diese Anpassungen genutzt wurde, ist Version 12 (BOOKWORM).

PRETTY_NAME=“Debian GNU/Linux 12 (bookworm)“
NAME=“Debian GNU/Linux“
VERSION_ID=“12″
VERSION=“12 (bookworm)“
VERSION_CODENAME=bookworm
ID=debian

Hinweis: Ein Leser hat die Erfahrung gemacht, dass es zu Problemen kam, wenn er Pi-Imager zum Erstellen seiner micro SD-Karte verwendet hat. Dann konnte er die Bibliothek libjpeg9-dev nicht installieren. Verwendet daher bitte den Win32 Disk Imager zum Schreiben des Images auf die micro SD-Karte, wie ich dies in beiden Büchern beschrieben habe.

Mit dem folgenden Befehl könnt ihr die Version eurer Installation abfragen:

Befehl: cat /etc/os-release

Da es Nachfrage nach dem Download-Link für das von mir verwendete Image gab, möchte ich diesen hier ergänzen:

URL: https://downloads.raspberrypi.com/raspios_full_armhf/images/raspios_full_armhf-2023-12-06/2023-12-05-raspios-bookworm-armhf-full.img.xz


Vorbereitung der Installation


Bevor es losgeht, aktualisiert wie im Buch beschrieben eure Installation. Führt dazu die folgenden Befehle aus:

Befehl: sudo apt-get update -y

Befehl: sudo apt-get upgrade -y


Installationsanleitung als Video


Hier findet ihr das passende Video, das euch bei der Installation der Software auf eurem Roboter-Auto unterstützt.


Änderung 1 – Python 3


Wichtig ist, dass anstelle von Python 2.7 jetzt die Version Python 3.x zum Einsatz kommt. Unter anderem benötigt die Bibliothek readchar, mit der wir Tastatureingaben einlesen, Python 3. Die Beispielprogramme mussten daher ebenfalls aktualisiert werden. Sie stehen ab jetzt hier in angepasster Fassung zum Download bereit:

Hinweis: Aufgrund eines aktuellen Problems mit dem Live-Stream in dem Web-Programm für die Steuerung des Roboter-Autos ist diese Veröffentlichung noch nicht erfolgt (Stand Dezember 2023).


Änderung 2 – readchar installieren

Buch 2016: Seite 128

Buch 2019: Seite 133


Die readchar-Bibliothek steht nur noch für Python 3 zur Verfügung und muss daher für Python 3 installiert werden. Damit das sicher gelingt, muss PIP für Python 3 vorhanden sein. Bei aktuellen Raspbian-Versionen ist das in der Regel bereits der Fall. Zur Sicherheit hier dennoch der notwendige Befehl:

Pip für Python3 installieren

Befehl: sudo apt-get install python3-pip

readchar für Python3 installieren

Jetzt, da PIP für Python 3 installiert ist, kann readchar für Python 3 installiert werden. Wir benötigen es später zum Einlesen von Tastatureingaben für die Steuerung des Roboter-Autos.

Befehl: python3 -m pip install --break-system-packages readchar


Änderung 3 – Kamera-Bild anzeigen

Buch 2016: Seite 161

Buch 2019: Seite 161


Wenn ihr die Kamera angeschlossen und Bookworm auf dem aktuellen Stand habt, funktionieren Stand Januar 2024 bei mir folgende Befehle, um ein erstes Bild bzw. einen Video-Stream der Kamera anzuzeigen. Allerdings steht in der offiziellen Dokumentation bereits, dass sich diese Befehle zukünftig ändern können.

Dokumentation: https://www.raspberrypi.com/documentation/computers/camera_software.html

Der folgende Befehl zeigt ein erstes Kamerabild:

Befehl: libcamera-hello

Dieser Befehl speichert ein Bild im aktuellen Verzeichnis, in dem ihr euch im Terminalfenster befindet:

Befehl: libcamera-jpeg -o image.jpg

Dieser Befehl speichert ein 15 Sekunden langes Video im aktuellen Verzeichnis:

Befehl: libcamera-vid -t 15000 -o video.h264


Änderung 4 – MJPG-Streamer

Buch 2016: Seite 129

Buch 2019: Seite 134


Bei der Installation und der Konfiguration des mjpg-streamers ist eine Änderung nötig, da sich die Kameraunterstützung unter Raspbian OS geändert hat. Im Folgenden findet ihr eine Anleitung, wie ihr den mjpg-streamer installiert.

Der Video-Streaming-Server mjpg-streamer übernimmt die Aufgabe, das Video aus dem Roboter-Auto über WLAN zu übertragen. Damit das klappt, müssen einige Bibliotheken installiert und konfiguriert werden. Diese zusätzlichen Bibliotheken unterstützen den Server bei der Bildkomprimierung und -verarbeitung für den Live-Stream.

Die libjpeg9-dev-Bibliothek installieren

Die libjpeg9-dev-Bibliothek ist eine frei erhältliche Software der Independent JPEG Group. Wesentlich stellt sie einen JPEG-Codec zur Verfügung, der Bilder mit unterschiedlicher Kompression erzeugen kann. Dieses Paket ist Voraussetzung, damit der mjpg-streamer das Video ruckelfrei über das WLAN übertragen kann.

Befehl: sudo apt-get install libjpeg9-dev

Zusätzliche Bibliotheken installieren

Bevor der mjpg-streamer kompiliert und installiert werden kann, sind kleinere Vorbereitungen nötig. Dazu gehört die Installation des plattformunabhängigen Programmierwerkzeugs CMake und das Entpacken des zuvor heruntergeladenen ZIP-Archivs. CMake erzeugt die notwendigen Skriptdateien zum Kompilieren des mjpg-streamer. Mit folgendem Befehl installiert ihr CMake auf eurem Raspberry Pi:

Befehl: sudo apt-get install cmake

Damit der mjpg-streamer kompiliert werden kann, wird außerdem die GNU Compiler Collection gcc sowie der GNU C++ Compiler g++ benötigt:

Befehl: sudo apt-get install gcc g++

Da für das Streaming über die libcamera-Bibliothek zugegriffen wird, muss deren Entwicklerversion installiert werden:

Befehl: sudo apt-get install libcamera-dev

Den mjpg-streamer herunterladen

Da die Version des mjpg-streamers, die wir für das Roboter-Auto verwenden, vom Autor leicht angepasst wurde, um die Installation zu vereinfachen, muss eine ZIP-Datei von der Webseite des Autors heruntergeladen werden. Das Programm soll später in den Ordner /opt/mjpg-streamer-rapi-libcamera installiert werden. Wechselt dazu im Terminal-Fenster in den Ordner /opt:

Befehl: cd /opt

Führt dann diesen Befehl aus, um die mjpg-streamer-rapi-libcamera.zip herunterzuladen:

Befehl: sudo wget https://custom-build-robots.com/mjpg-streamer-rapi-libcamera.zip

Anschließend entpackt ihr die ZIP-Datei:

Befehl: sudo unzip mjpg-streamer-rapi-libcamera.zip

Den mjpg-streamer installieren

Wechselt nun in den Ordner /opt/mjpg-streamer-rapi-libcamera/mjpg-streamer-experimental:

Befehl: cd /opt/mjpg-streamer-rapi-libcamera/mjpg-streamer-experimental

Bereitet die Installation mit dem make-Befehl vor:

Befehl: sudo make

Nachdem alle Skripte erstellt sind, installiert ihr den mjpg-streamer mit:

Befehl: sudo make install

Die Installation dauert ein paar Minuten und es erscheinen diverse Zeilen im Terminal.

Video-Live-Stream starten

Ist alles installiert und konfiguriert, könnt ihr den mjpg-streamer wie folgt starten. Führt dazu im Ordner des mjpg-streamers den Befehl aus:

Befehl: sh start.sh

Öffnet nun einen Browser und ruft folgende URL auf. Tragt dabei die IP-Adresse ein, unter der euer Raspberry Pi im Netzwerk erreichbar ist:

Befehl: http://<IP-Adresse>:8080/stream.html

Ein Beispiel-Aufruf könnte so aussehen:

Befehl: http://192.168.1.10:8080/stream.html


Änderung 5 – Flask Web-Framework installieren

Buch 2016: (In dieser Auflage wurde Flask nicht verwendet)

Buch 2019: Seite 134


Der Befehl für die Installation von Flask hat sich leicht verändert. Bei Raspbian OS (Bookworm, Dezember 2023) ist Flask meist bereits vorinstalliert. Der Befehl zum Installieren lautet:

Befehl: sudo apt-get install python3-flask


Änderung 6 – Das Start-Skript für den mjpg-streamer

Buch 2016: Seite 178

Buch 2019: Seite 188


Mit der Einführung von libcamera hat sich auch das automatische Start-Skript für den mjpg-streamer geändert. Bitte verwendet jetzt das Skript aus folgender ZIP-Datei:

Download: mjpg-streamer.zip

Hinweis: Achtet darauf, dass der Pfad zum mjpg-streamer richtig gesetzt ist. Dieser kommt in dem Skript an zwei Stellen vor und lautet in meinem Beispiel: /opt/mjpg-streamer-rapi-libcamera/mjpg-streamer-experimental/. Außerdem wird die Log-Datei an zwei Stellen in /home/robot/mjpg-streamer.log geschrieben. Hier müsst ihr robot durch euren eigenen Benutzer ersetzen.


Hinweis zu weiteren Updates


Wenn ihr Probleme feststellt und mir schreibt oder ich weitere notwendige Anpassungen entdecke, werde ich sie hier veröffentlichen.