Mein Robo mit Webcam hat ja inzwischen schon funktioniert, aber irgendwie auch nicht, wenn man ständig irgendwo gegenfährt, weil das Bild ne Sekunde hinterherhängt.

Deshalb mal hier jetzt das Update und damit es nicht zu langweilig wird, auch gleich mal mit ein paar Fotos :-).

Geht den Artikel zuvor einfach in genau der Reihenfolge durch und wenn alles so ruckelig läuft, dann macht hier weiter!

Wir benötigen für den Webcam Stream eine bessere Software, die unser Bild in Echtzeit übertragen kann. Dazu habe ich auf den Kommentar von johnktoo mal mjpg-streamer ausprobiert. Da gibt es auch ein schönes Tutorial, welches ich hier als Grundlage verwende.

Als erstes also alle benötigten Pakete installiert. Leider ist auch imagemagick notwendig, damit der Code sauber kompiliert.

sudo apt-get update
sudo apt-get install libv4l-dev
sudo apt-get install libjpeg8-dev
sudo apt-get install subversion
sudo apt-get install imagemagick

Danach dann das Repository ausgecheckt und das Paket kompliert:

svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
cd mjpg-streamer/mjpg-streamer
sudo make USE_LIBV4L2=true clean all
sudo make DESTDIR=/usr install

Nun starten wir den Stream:

mjpg_streamer -b -i "/usr/lib/input_uvc.so -d /dev/video0 -y -r 320x240 -f 30" -o "/usr/lib/output_http.so -p 8081 -w /tmp"

Details zu den Parametern findet ihr hier: mjpg_streamer Ubuntu Wiki

Nur ne kurze Erläuterung zu den Punkten. Mit -b startet man mjpg_streamer im Hintergrund. Für den Input Parameter kommt dann -d, welches das Device ist. In unserem Fall wieder /dev/video0. Die -y Option muss ich setzen, da meine Cam keine mjpeg Unterstützung hat. Ansonsten noch -r für die Auflösung und -f für die Frames per Second. Hier kann man entsprechend schrauben, um die bestmögliche Performance zu bekommen. Für den Output verwenden wir -p für den Port. Hier behalten wir Port 8081. Die Daten werden nach /tmp geschrieben. Um den Stream über unsere /robot-control.php anzuschauen müssen wir noch eine Änderung an der „control.html“ durchführen.

Wir ändern:
<iframe src="http://192.168.23.111:8081/" width="700" height="500" frameborder="0"></iframe>
in
<iframe src="http://192.168.23.111:8081/?action=stream" width="500" height="300" frameborder="0"></iframe>

Jetzt können wir uns auf der Webseite den Stream anschauen.
http://192.168.23.111/robot-control.php

Ich habe noch ein paar kleine Änderungen an den Scripten durchgeführt, wie bspw. die Aktivierung der Kamera über die Weboberfläche. Die Sourcen gibt es hier:

http://www.robosphere.de/wp-content/uploads/2013/03/RoboControl.zip

Und hier endlich das lang ersehnte Video 🙂


7 Responses to “Raspberry Pi Roboter mit Echtzeit-Webcam via mjpg-streamer”

  1. Sebastian sagt:

    Habe heute erst den Pingback auf mein Tutorial bemerkt. Mein Blog ist übrigens umgezogen und jetzt unter http://www.justrobots.net zu erreichen. Im kommenden Jahr plane ich auch ein vergleichbares Projekt, allerdings als omnidirektionalen Plattform.
    Freut mich, dass ich dir helfen konnte,
    Gruß
    Sebastian

  2. Theodor sagt:

    Hello, I would like to make my own little robot with a life feed, however i know arduino does not have enough RAM for that, did you use Rasperry to get the live feed and then sent it via some wifi addon for rasperry or the shield for arduino? if yes, could you please direct me to some way of learning how? thank you

  3. Roboman sagt:

    hey theodor,

    i have connected the arduino shield via usb to my raspberry pi where the camera is installed. on the raspberry pi is everything regarding logic and visualization. the arduino just gets simple commands via the usb serial and then controls the motor shield.

    tutorial for the arduino and the motorshield:
    http://www.robosphere.de/arduino-motor-shield/

    turorial for the connection between arduino and raspberry:
    http://www.robosphere.de/raspberry-pi-steuert-arduino-roboter/

    best

  4. Oliver sagt:

    Hi, hab mit großer Freude dein Projekt nachgebaut und es funktioniert alles auch echt super nur stürzt mein Firefox nach einer zufälligen Zeit immer ab wenn ich die Kamera aktieviere. Kannst du mir da vielleicht weiter helfen?

    Danke im Vorraus

  5. Roboman sagt:

    Hey Oli,

    da hast du sicherlich mehr getestet, als ich das getan hab :-). Bei mir lief der Robo immer nur wenige Minuten bisher. Wenn ich mal wieder dazu komme, dann werde ich das nochmal nachprüfen. Aber schön, dass ich dich inspirieren konnte 😀

  6. Blackit sagt:

    Ist ja ein netter kleiner Roboter den Du da hast.
    Auch ich habe vor meinen Roboter mit dem Name pirol 2.0 demnächst mit einer Webcam auszustatten. Da mein Roboter von einem Raspberry Pi gesteuert wird, werde ich wohl eine PiCam verwenden.
    Du kannst gerne mal bei mir auf der Seite vorbei schauen und eventuell deine Meinung zu meinen Projekten als Kommentar oder Forenbeitrag da lassen:

    https://blackit.de/category/pirobot/

    Noch eine kleine Sache zu deiner Webseite bezüglich der Usability: Dein Kontrast bei deinen Texten ist ziemlich schwach. Auch wenn ich mein Thinkpad (T410) auf volle Helligkeit stelle, kann ich die Texte auf deiner Seite nur sehr schwer lesen.

    Die Projekte auf deiner Seite sind klasse. Mach weiter so ich werde bestimmt mal wieder bei dir vorbei schauen.

  7. Roboman sagt:

    hey danke dir. ich werde den kontrast mal verstärken. dachte damals dass das cool ist, aber wenn man es schlecht lesen kann ist es auch blöd 🙂

Leave a Reply