Das Buch Roboter-Autos mit dem Raspberry Pi in der Auflage von 2016 und 2019 das ich geschrieben habe bedarf kleinerer Updates. Denn die Software zu diesem Projekt hat sich weiter entwickelt und so funktioniert das live Videostreaming jetzt etwas anders. Die Änderungen die sich über die vergangenen Jahre ergeben haben sind hier für euch dokumentiert.

Wenn euch noch etwas auffällt das jetzt nicht mehr fuktioniert dann meldet euch bitte damit ich das Problem und hoffentlich dann auch zeitnahe die Lösung hier für alle veröffentlichen kann.

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 Weiterenticklung des Betriebssystems Raspbian OS und auch der Weiterentwicklung von Bibliotheken wie der libcamera Bibliothek für die Kamera haben sich diese Änderungen ergeben. Ich habe die Anpassungen und Lösungen hier so gut wie möglich beschrieben und auch immer die Seitenzahl für jede Anpassungen hier angegeben.

Die Raspbian Version die genutzt wurde um diese Anpassungen zu beschreiben ist die 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 Erfahrungen gemacht, dass es zu Problemem kam wenn er Pi-Imager verwendet hat um seine micro SD-Karte zu erstellen. Dann konnte er die libjpeg9-dev Bibliothek nicht installieren. Daher verwendet bitte Win32 Disk Imager für das schreiben des Images auf die mirco SD-Karte wie ich dies in beiden Büchern beschrieben habe.

 

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

Befehl: cat /etc/os-release

Da es die Nachfrage gab nach dem Download Link für das von mir verwendete Image 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 jetzt los geht aktualisiert wie im Buch beschrieben eure installation zunächst einmal. Dazu führt ihr die folgenden Befehle aus.

Befehl: sudo apt-get update -y

Befehl: sudo apt-get upgrade -y


Installationsanleitung als Video


Hier gibt es das passende Video das euch hilft die Software auf eurem Roboter-Auto zu installieren.


Änderung 1 – Python 3


Wichtig ist, dass jetzt statt Python 2,7 die Python Version 3.x zum Einsatz kommen muss. Der Hintergrund hier ist z. B. die Bibliothek readchar mit der die Tastatureingaben eingelesen werden. Das hat zur Folge das die Beispielprogramme ebenfalls aktualisiert werden mussten. Diese stehen ab jetzt hier in der aktualisierten Fassung zum Download bereit:

Hinweis: Aufgrund eines Problems mit dem live Stream in dem Web-Programm für die Steuerung des Roboter-Autos ist die Veröffentlichung noch nicht erfolgt (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 daher muss diese auch für Python 3 installiert werden. Damit das auch sicher gelingt muss PIP für Python 3 installiert sein. Bei den aktuellen Raspbian Versionen ist das bereits gegeben. Dennoch kann es nicht schaden den notwendigen Befehl dafür hier aufzuführen. Wenn PIP für Python 3 schon vorhanden ist kann man auch nichts kaputt machen wenn man den Befehl trotzdem ausführt. Dann wird halt einfach nichts installiert.

Pip für Python3 isntallieren

Befehl: sudo apt-get install python3-pip

readchar für Python3 isntallieren

Jetzt nach dem PIP für Python 3 installiert ist kann readchar für Python3 installieren werden. Denn readchar benötigen wir später um die Tastatureingaben für die Steuerung des Roboter-Autos einlesen zu können.

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


Änderung 3 – Kamera Bild anzeigen

Buch 2016: Seite 161

Buch 2019: Seite 161


Wenn ihr jetzt die Kamera soweit angeschlossen habt und Bookworm auf dem aktuellen Stand ist dann haben Stand Januar 2024 die folgenden Befehle bei mir funktioniert um ein erstes Bild bzw. Video-Stream der Kamera anzeigen zu lassen. Allerdings steht hier in der Dokumentation bereits das diese Befehle sich von ihren Namen her also dem Aufruf ändern werden.

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

Der folgende Befehl zeigt ein erstes Bild der Kamera.

Befehl: libcamera-hello

Dieser Befehl speichert ein Bild in das aktuelle Verzeichnis ab in dem ich euch im Terminalfenster aktuell befindet.

Befehl: libcamera-jpeg -o image.jpg

Dieser Befehl speichert ein 15 Sekunden langes Video in das aktuelle Verzeichnis ab in dem ich euch im Terminalfenster aktuell befindet.

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 hat sich eine Änderung ergeben die notwendig wurde nach dem sich die Kameraunterstützung unter Raspian OS geändert hat. Der nachfolgende Abschnitt erklärt wie der mjpg-streamer installiert wird.

Der Video-Streaming-Server mjpg-streamer übernimmt die Aufgabe, das Video aus dem Roboter-Auto über das WLAN zu übertragen. Damit das funktioniert, müssen Sie einige Bibliotheken installieren und konfigurieren. Diese zusätzlichen Bibliotheken unterstützen den Video-Streaming-Server dabei, die Bildinformationen so aufzubereiten, dass sich diese als Live-Stream übertragen lassen.

Die libjpeg9-dev-Bibliothek installieren

Die libjpeg9-dev-Bibliothek ist eine frei erhältliche Software der Independent JPEG Group . Im Wesentlichen stellt diese Bibliothek einen JPEG-Codec zur Verfügung, mit dem Bilder in einer unterschiedlich starken Komprimierung erzeugt werden. Dieses Paket ist eine weitere Voraussetzung dafür, dass später der mjpg-streamer das Video ohne Ruckeln über das WLAN des Roboter-Autos übertragen kann. Sie installieren die Bibliothek folgendermaßen:

Befehl: sudo apt-get install libjpeg9-dev

Zusätzliche Bibliotheken installieren

Bevor der mjpg-streamer kompiliert und installiert werden kann, müssen Sie kleinere Vorbereitungen treffen, die ich nachfolgend erklären werde. Dazu gehören die Installation des plattformunabhängigen Programmierwerkzeuges CMake und das Entpacken des zuvor heruntergeladenen Zip-Archivs. CMake erzeugt die notwendigen Skriptdateien, damit Sie den mjpg-streamer kompilieren können. Mit dem folgenden Befehl installieren Sie CMake auf Ihrem Raspberry Pi:

Befehl: sudo apt-get install cmake

Damit der mjpg-streamer kompiliert warden kann warden noch die GNU Kompiler Kollektion gcc benötigt. Zusätzlich wird noch der GNU C++ Kompiler ( g++ )benötigt um die notwendigen in C geschriebenen Programme kompellieren zu können.

Befehl: sudo apt-get install gcc g++

Da für das Streaming über die libcamera Bibliothek zugegriffen wird muss diese noch als Entwicklerversion installiert werden. Diese ist initial nicht installiert. Dazu bitte den folgenden Befehl ausführen.

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 werden vom Autor leicht angepasst wurde um die Installation so einfach wie möglich zu machen, muss noch eine ZIP-Datei von der Webseite des Autors herunter geladen werden. Das Programm mjpg-streamer soll später in den Ordner mjpg-streamer-rapi-libcamera unter dem Pfad /opt installiert werden. Dazu müssen Sie in den Ordner /opt im Terminal-Fenster wechseln.

Befehl: cd /opt

Nach dem Sie in den Ordner /opt gewechselt sind führen Sie den folgenden Befehl im Ordner /opt aus um die mjpg-streamer-rapi-libcamera.zip ZIP-Datei herunter zu laden.

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

Mit dem folgenden Befehl entpacken Sie die mjpg-streamer-bullseye.zip Datei die im Ordner /opt herunter geladen wurde.

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

Jetzt sind alle Vorraussetzung geschaffen das es losgehen kann mit der Installation des mjpg-streamers-rapi-libcamera.

Den mjpg-streamer installieren

Wechseln Sie jetzt in den mjpg-streamer Ordner /opt/mjpg-streamer-rapi-libcamera/mjpg-streamer-experimental mit dem folgenden Befehl.

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

Anschließend führen sie den make-Befehl aus um die Installation der Software vorzubereiten.

Befehl: sudo make

Nachdem Sie mit dem make-Befehl die notwendigen Installationsskripte erstellt haben, installieren Sie mit dem folgenden Befehl den mjpg-streamer auf Ihrem Raspberry Pi für das libcamera Kameramodul:

Befehl: sudo make install

Die Installation dauert ein paar Minuten und es erscheinen einige Zeilen im Terminalfenster.

Video Live-Stream starten

Jetzt ist alles installiert und soweit konfigurtiert. Möchten Sie den mjpg-streamer jetzt starten dann klappt das mit dem folgenden Befehl. Diesen führen Sie im Terminal-Fenster im ordner des mjpg.streamers aus.

Befehl: sh start.sh

Jetzt öffnen Sie einen Browser und öffnen die folgenden URL. Bitte tragen sie die IP Adresse ein über die ihr Raspberry Pi im eigenen Netzwerk erreichbar ist.

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

Hier ein Beispiel wie bei mir der Aufruf mit eingesetzter IP Adresse aussieht.

Befehl: http://<IP-Adresse>: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 der Raspbian OS Version Bookworm aus Dezember 2023 ist Flask bereits installiert und muss daher nicht mehr extra installiert werden. Der Befehl um Flask dennoch zu installieren lautet wie folgt:

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


Das Start-Skript das den mjpg-streamer automatisch startet hat sich ebenfalls geändert mit der Einführung von libcamera. Daher verwendet jetzt bitte das Start-Skript aus der folgenden ZIP-Datei mjpg-streamer.zip.

Download: mjpg-streamer.zip

Hinweis: Achtet bitte darauf, dass der Pfad zum mjpg-streamer richtig gesetzt ist. Dieser kommt an zwei Stellen vor und lautet hier wie folgt /opt/mjpg-streamer-rapi-libcamera/mjpg-streamer-experimental/. Dann kommt noch ein weiterer Pfad vor der ebenfalls 2x vorkommt in dem eine Log-Datei geschrieben wird, die die Ausgaben speichert die der mjpg-streamer erzeugt wenn er gestartet wird. Hier ist mein user mit dem Namen robot hinterlegt. Die Zeile sieht wie folgt aus /home/robot/mjpg-streamer.log und statt robot müsst ihr euren User-Namen dort im Pfad hinterlegen.



Hinweis weitere Updates:


Wenn ihr Probleme feststellt bzw. ich weitere Anpassungen erkenne die notwendig sind dann werde ich diese hier veröffentlichen.

 

(Visited 910 times, 5 visits today)