Roboter HaBuRo1 Video Stream
Vom Robuter über WLAN zum PC
mjpg-streamer
Für Video-Streaming wird WLAN benötigt. Wenn du mit dem Roboter draußen auf der Liegewiese einer Badeanstalt
rumkurvst dann ist Schluss mit Video! Kein WLAN! Jedoch kann man Einzelbilder oder Videosequenzen auf
einen USB-Speicher speichern. Aber was bringt das! Du hast keine Kamerakontrolle auf deinem Tablet und
anstelle einer schönen Frau siehst du Löwenzahn. Spaß beiseite, Ernst aus der Ecke.
Die Leistungsfähigkeit der Raspberry Pi Kamera ist erstaunlich. Auf dem Firefox Browser
siehst du klasse Videos und mit einem hervorragenden Zeitverhalten. Alle drei Servos können
vom Windows Tablet präzise gesteuert werden. Dafür stehen GUI-Schieberegler zur Verfügung.
Das Internet füllt das Alte- und Neue Testament mit Beschreibungen über Video-Streaming,
jedoch in Verbindung mit eine Fülle von weiteren zusätzlichen Steuerungsaufgaben
für den HaBuRo ist der "mjpg-streamer" die beste Wahl. Der Installationsaufwand
ist jedoch komplex.
Der Video-Streaming-Server „mjpg-streamer“ übernimmt die Aufgabe, Kamerabilder
vom Roboter-Auto über das WLAN zu übertragen. Damit das funktioniert müssen
einige Bibliotheken installiert und konfiguriert werden:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
sudo apt-get install subversion
sudo apt-get install libjpeg8-dev
sudo apt-get install imagemagick
Nach dieser Vorbereitung kannst du jetzt den „mjpg-streamer“ herunterladen. Das Programm „mjpg-streamer“ soll
in den Ordner /opt/ installiert werden! Wechsle über das Terminal-Fenster in den Ordner /opt/ und erstelle
einen neuen Ordner „mjpg-streamer“. Du bleibst im Ordner: /opt/mjpg-streamer/ und führst
folgenden Befehl aus:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/
Symbolischen Link ausführen: Die Datei „videodev.h“, die der mjpg-streamer benötigt,
wurde vom Linux Betriebssystem „Raspbian“ des Raspberry Pi durch „videodev2.h ersetzt.
Damit der mjpg-streamer die entsprechende videodev2.h-Datei als videodev.h-Datei auch finden kann,
muss eine Verknüpfung zwischen beiden Dateien erzeugt werden. Dies geschieht in Form eines symbolischen Links.
Es folgt der Befehl dafür:
sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
Jetzt den mjpg-streamer mit folgenden Befehl installieren:
sudo make install. Damit das Live-Video-Streaming richtig klappt und der mjpg-streamer den
Video-Stream optimal einlesen kann, muss der Video4Linux-Treiber in der Version 2 (v4l2) geladen werden.
Siehe Bild oben links. Ab jetzt muss die Kamera angeschlossen und aktiv sein. Führe folgenden Befehl aus:
sudo modprobe bcm2835-v4l2
Richtige Schreibweise: Achte darauf, dass zwischen der 4 und der 2 der Buchstabe „l“ (wie „leise“) und
nicht die Ziffer eins "1" steht. Möchtest du überprüfen, ob das Modul bcm2835-v4l2 geladen wurde, führe den Befehl: sudo lsmod aus. Es erscheint im Terminalfenster eine Liste mit allen geladenen Modulen. In der sollte das Modul bcm2835-v4l2 enthalten sein. Damit du das Modul bcm2835-v4l2 nicht bei jedem Neustart manuell neu laden musst kann man es in einer Art Autostart aufnehmen. Im Verzeichnis /etc/ liegt eine Datei „Modules“. Öffne mit sudo nano /etc/modules und füge folgende Zeile ein: bcm2835-v4l2.
mjpg-streamer konfigurieren:
Öffne die Datei /opt/mjpg-streamer/start.sh mit dem Editor nano. Suche die Zeile:
./mjpg-streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
füge in die Zeile folgende Ergänzung ein: -d /dev/video0 -r 800x640 -f 25.
Nach der Anpassung sollte die Zeile wie folgt aussehen:
./mjpg-streamer -i "./input_uvc.so -d /dev/video0 -r 800x640 -f 25 " -o "./output_http.so -w ./www"
Mit dieser Anpassung hast du dem mjpg-streamer die Raspberry Pi Kamera als
Aufnahmegerät zugewiesen (-d /dev/video0) und die Auflösung (-r 800x640) sowie die
Framerate (-f 25) des Videos festgelegt. Das Streaming wird mit sudo ./start.sh aktiviert.
Auf der Seite des Raspberry Pi ist jetzt alles erledigt. Du kannst jetzt im Webbrowser deines
PCs das Livevideo der Raspberry Pi Kamera über folgender URL aufrufen:
IP-Adresse des Raspberry Pi:8080
Eine Skript und eine Python-Klasse für den mjpg-streamer: Das Skript "mjpg-streamer" wird in Python gekapselt.
Die Klasse "KamStream" wird als eigenständigen Thread im Python-Hautprogramm aufgerufen. Die Kamera funktioniert
jedoch nur, wenn eine WLAN-Verbindung besteht.