Robotik mit Raspberry-Pi/ Raspbian: Sehen, Sprechen, Bewegen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Leute,.

    bin neu hier,...

    bin nicht sicher ob ich alle Forenbeiträge abgesucht habe mit meinen Fragen.

    trotz einiger Kenntnisse und gelungener Ergebnisse,
    würde ich mich in "Robotik unter C-Programmierung" noch als Anfänger bezeichnen


    Bisher verwendete ich ein mini-ITX-Board unter xubuntu-alternate.

    In C-Programmen konnte ich hier eine LG-Webcam über /dev/video0 abfragen,
    weil xubuntu das v4l Modul verwendet.
    Die Abfrage ging über das c-Kommando "read" u.a.

    Ebenso konnte ich (über c :"System()") script-Kommandos zur Sprachausgabe einbinden (mbrola t2s t2pho...)

    Über den Par-Port und den seriellen Port steuere ich Relaisplatinen an, die wiederum Motoren ansteuern.
    Das Betriebssystem befindet sich auf einer Memorykarte.

    Inklusive Netzgerät -alles in einem Bauhaus-Alukoffer untergebracht- wiegt das Scheißding ohne Monitor an die 5 kg,
    und in jedem Bahnhof/ Flughafen würde ich damit umgehend gestoppt werden.
    (Aber immerhin 3 Relaisplatinen)


    Aus privaten Gründen kommen ich in diesem Hobby nur 2mm pro Jahr voran,
    dennoch ist es eine Leidenschaft seit meiner Kindheit.

    Und jetzt entdecke ich Raspberry-Pi und Raspbian... YEAH.....ENDLICHH

    Oder ist die Freude verfrüht ?

    ALSO HIER DIE FRAGEN:

    Kann ich unter Raspbian c-Programme wie gewohnt mit einem Editor schreiben und mit gcc compilieren ?
    (von mir aus per Konsole)
    (Ich vermute apt-get läuft unter Raspbian, falls Bibliotheken o.ä. fehlen).


    Kennt jemand mbrola text2speech, es funktioniert sehr einfach, wenn auch die Stimmen nicht der Burner sind,
    Weiß jemand ob so etwas unter Raspbian läuft, wenn es doch unter anderen Debain-Distris auch läuft ?

    Kommt das normale (mittlerweile evtl. veraltete) v4linux-Modul unter Raspbian zur Anwendung ?
    (Soweit ich weiß, wird /dev/video0 als wichtige Schnittstelle um Webcamdaten auszulesen durch v4l generiert)


    Ich weiß, dass sind viele Fragen, und ich bin nicht sicher ob sie genau genug beschrieben sind.
    (In Foren ist das grundsätzlich nie der Fall),

    .. bin gespannt auf Antworten, und bin froh dass es Rasberry-Pi und Raspbian gibt.

    Gruß mbot

    Einmal editiert, zuletzt von mbot (31. Oktober 2013 um 15:22)

  • Robotik mit Raspberry-Pi/ Raspbian: Sehen, Sprechen, Bewegen? Schau mal ob du hier fündig wirst!

  • okeh, ... nochmal in kurz:


    eine Frage: läuft v4l unter Raspbian,

    ... gibt es eine Schnittstelle /dev/video0 (erzeugt durch v4l) oder hnliches unter Raspbian?

    Das würde mir als Verkaufsargument für Raspberry-Pi, und dessen weitere Verbreitung reichen.

    Ich bin nicht sicher ob da alles gleich ist wie unter gewohnten Debain-Versionen (Xubuntu, Mint, ...)
    wegen der ARM-Technik.

    Ich vermute dass es genauso geht, oder dass es ähnliche Zugriffsmöglichkeiten auf Webcams gibt,
    evtl. einen anderen Verzeichnisbaum (fs) oder andere Namensgebung.

    (Ich vermute es gibt bereits viele Threads hier im Forum, die das Thema behandeln,
    da ich aus familiären Gründen so unglaublich wenig Zeit habe, frage ich erstmal aber gezielt nach v4l, gcc und Sprachausgabe)

    Gruß mbot

  • v4l und vorallem gcc gibt es selbstverständlich auch für Raspbian, insbesondere gcc brauch man ja zum kompilieren ;)

    Generell würde ich sagen das Linux = Linux ist, egal was für einen Prozessor genutzt wird - solange man also den Source hat kann man eigentlich alles auf dem Raspberry nutzen, auch Webcams ;)

    Google einfach mal nach: Raspberry v4l
    Da findest du dann zum Beispiel http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=50639 beziehungsweise http://www.linux-projects.org/modules/sectio…rticle&artid=16

    Und Sprachausgabe geht mit der Himbeere natürlich auch - selbst Sprachsteuerung funktioniert ;)

    Also die Möglichkeiten sind eigentlich unendlich

  • Danke dir melgrafd

    die grundsätzliche Frage wäre damit schonmal geklärt.

    Jetzt gehts wohl los: Ein Raspberry-Pi bestellen !

    Je nach Kassenlage, evtl. einen etwas besser ausgestatteten.


    {
    Eine Fachfrage noch, wenn erlaubt:

    Bisher ist es mir nicht gelungen meinem Linux-System zu erklären,
    dass ich im laufenden Betrieb eigentlich keine x-Oberfläche brauche,
    aber dennoch v4l benötige.

    Auf diese Weise hatte ich erhofft, mehr Rechenkapazitä/ Geschwindigkeit zu erreichen,
    sobald ich über /dev/video0 aus 2 auffeinanderfolgenden Webcam-Bildern (große) "read-Variabeln" gemacht habe,
    kann ich diese vergleichen, ... ich brauche also Arbeitsspeicher und Rechenleistung,
    ... beides stünde (vermutl.) mehr zur Verfügung ohne X-Server
    }

    Ich werde mir ein Raspberry bestellen, und hier erstmal den "erledigt"-Button betätigen.
    ich hoffe ich kann dennoch eventuelle Antworten erhalten.

    Ich versuche noch ein Bild von meinem eigenen bisheiregen "Raspberry-Pi"-Versuch hochzuladen.

    In dem Koffer ist das besagte mini-ITX-Bord
    (mittlerweile bei ca. 20 Watt auch mit Dualcore für ca. 70,-€)
    2 Relaisplatinen (2 Ein- und 16 Ausgänge)
    eine MemoryCard über IDE fürs OS
    und zwei Netzteile plus Steckerleiste und jede Menge Kabel:


    koffer9imvy18trh.gif


    Gruß mbot

  • Moin mbot,

    jetzt möchte ich doch kurz noch auf die Bremse treten :fies:

    Was hast Du denn jetzt in Richtung "Robotik" vor?

    Vielleicht auch mal einschränkend: die Sprachsteuerung funktioniert m.W. nur mit dieser "google-Speech-API" oder wie das Ding heisst.
    Wenn Du bisher ein ITX-Board genutzt hast, bist Du zudem mehr Power gewöhnt, als der RPi Dir zur Verfügung stellt.

    Sicher kannst Du einiges anstellen - aber ohne mehr Hintergrund-Info würde ich mir da nicht zutrauen Dir zu- oder abzuraten.

    cheers,
    -ds-

  • Vielleicht auch mal einschränkend: die Sprachsteuerung funktioniert m.W. nur mit dieser "google-Speech-API" oder wie das Ding heisst.

    Sprachsteuerung geht auch mit den unzähligen offline speech recognition engines im Web!

  • Hast recht dreamshader,

    ich vergaß, durch das 220V-PC Netzteil hatte ich ja stets stationäre Bots, dass heißt:
    völlig selbstverständlich habe ich stets kleine PC-Aktivboxen verwendet, die ebenfalls 220 Volt liefen.

    Mit dem Raspberry-Pi wollte ich den Schritt in Richtung Mobilität wagen,
    Ich dachte der Raspberry hätte einen gewöhnlichen Audio-Ausgang.

    Dann wäre doch alles erledigt:
    Ich nehme 1/2 Autobatterien/ Gel-Akku, (einen 12 Volt Stabilisator),
    Optokoppler-I/O über USB-Adruiono angesteuert, Aktivboxen Batteriebetrieben und ne Webcam.

    Zur Sprachausgabe verwende ich bisher die Pakete von mbrola /hadifix,.
    Sie liefen bisher unter allen Linux-Versionen.
    Ich weiß nicht ob man sie heute noch runterladen kann.

    Es ist ein "Text-to-Phonetic-Datei" Programm, das mbrola-Programm (pho to wav)
    eine config-Datei für /etc und mindestens ein Sprachpaket (de1 -de3).

    Zum Abspielen eignete sich immer am besten "aplay" mit diversen parametern C-"System()" aufgerufen.

    ach jetzt weiß ich was du meinst, ....der Groschen ist gefallen,


    ... ich erinnere mich: Das mbrola-Programm hieß "mbrola-i368", sprich:
    es war für 'nen bestimmten Prozessor geschrieben,
    es gab auch andere Versionen, aber bestimmt kein ARM-mbrola, Mist...


    ich bleibe dran....

    Gruß und Danke mbot

    Einmal editiert, zuletzt von mbot (1. November 2013 um 18:23)


  • Sprachsteuerung geht auch mit den unzähligen offline speech recognition engines im Web!


    Hi Alex,

    mag sein, ich wollte nur mal hervorheben, dass der RPi aufgrund seiner eher eingeschränkten Leistung und fehlender ADCs für direkte Sprachsteuerung (wie ich es noch vom PC her kenne - so mit Soundblaster und Mikrofon) eher nicht geeignet ist.
    BTW: offline ... im Web? Ist das nicht ein Widerspruch in sich?

    cheers,
    -ds-

  • ach verdammt...

    ihr redet die ganze Zeit von Sprachsteuerung = Spracherkennung/ Spracheingabe.... das kommt eh erst später.

    Ich weiß zunächts: Meine gewohnte Sprachausgabe (mbrola) läuft wahrscheinlich nicht.

    Aber melgrafd meinte ja, das wär kein Problem,
    ich werde das Forum mal nach entspechenden Threads durchsuchen.

    Im Moment besteht Unterschied zwischen Raspberry-Pi und mini-ITX hauptsächlich darin besteht,
    dass das itx-Board mehr Strom zieht, Mehr-Gewicht und Mehr-Platz sind im Moment noch nicht ausschlaggebend.
    (OK das Geld ist auch ständig knapp, ein mini-ITX kostet mehr und es fehlt dann noch Elektronik die aus 12V Autobatterie
    stabil die drei MB-Ströme gebneriert).

    Ohne Sprechen kein frecher Bot.


    Gruß mbot

    Einmal editiert, zuletzt von mbot (2. November 2013 um 16:36)

  • Robot unter C mit Raspberry_Pi:

    Meine Recherchen haben ergeben:
    (wahrsch. nix Neues, da aber viele Klicks waren, hier noch mal die Zusammenfassung)

    Sehen: Daten abgreifen über /dev/videio0 (v4l) mit read()

    Sprechen: mit espeak auch in deutschisch (sollte unter Raspbian laufen)

    Bewegen/ Handeln: Optokoppler/ Relaisplatinen an GPIOs als Ausgänge für Motoren, als Eingänge für Sensoren


    technische Tipps bei lowBudget:

    Unter- Oberarme, Hebel usw. ansteuern über ca. 3mm Gewindestangen
    auf Elektromotoren mit Untersetzung (Spindelsteuerung, Gewicht-entlastet).
    Man kann die Motorwelle mit den Gewindestangen verbinden,
    indem man die Innenteile von Lüsterklemmen verwendet (LowBudget!, eiert ein wenig, hält aber ne Weile)

    Bewegungsradius bei Max und Min mit 2 Tastschaltern über einen Eingang abtasten,
    um einen Sofzwarezähler (pro bewegten Hebel) auf 0 oder max zu setzen.

    So erreicht man eine relativ hohe Genauigkeit für kleines Geld.

    Man braucht allerdings ein Gewinde-Handbohrset und ein Messingrohr um sich das runde Gegenstück
    für die Spindel (Gewindstange) anzufertigen (siehe Abbildung).

    hebelmitspindbj3nratdei.gif

    Ein ungelöstes Problem:
    Ich brauche vier Ausgänge um die Stromrichtung umzuschalten.
    Wenn ich diese vier Ausgänge festgelegt habe, brauche ich pro Motor jeweils noch einen Ausgang.

    Theoretisch kommt man bei Knappheit der Eingänge, um Bewegungen abzutasten, mit einem einzigen Eingang aus.
    Allerdings kann man dann nicht mehrere Hebel gleichzeitig bewegen, und bei min- ode max-Berührung
    muss der Hebel wieder ein kleines Stück zurückbewegt werden, um den Tastschalter wieder frei zu geben.
    Ist halt mehr Programmieraufwand.


    Wenn ich diese Seite http://developer-blog.net/hardware/raspb…tstelle-teil-1/
    richtig verstanden habe, dann habe ich beim Rasberry_Pi max. 8 GPIOs, die einfach funktionieren,
    ohne Kenntnisse von I²C und SPI. Von diesen 8 GPIOs wird zudem einer (GPIO 18) als PWM genutzt.

    Diese geringe Anzahl ist allerdings einschränkend, sofern man keine Ahnung von I²C usw. hat,
    denn ich brauche mindestens ein GPIO als Eingang.

    Bei sieben Ausgängen wären nach meinen Kenntnissen nur drei Motoren mit Richtungswechsel machbar,

    ... hmmm knapp.

    Muss ins Bett,

    Gruß mbot

    PS: ach übrigens, in der neuen ct ist ne werbung für RAsberry-Pi mit Gehäuse bestellbar bei reichelt.de für 40 Eier, muh

    Einmal editiert, zuletzt von mbot (6. November 2013 um 00:06)

  • ..., nach weiteren Tests zeigt sich:... Mist:

    Bisher gelang Umgebungserkennung dmit einem C_Programnm immer problemlos über /dev/video0,
    da v4l was ausgespuckt hat, was man Byteweise auswerten konnte, ... also mühelos in Raumkoordinaten umwandeln konnte.

    Der seit geraumer Zeit gängige Nachfolger v4l2 liefert unverständliche Daten, ich vermute ist ein komprimiertes Format (evtl. jpg).
    solche Daten sind i.d. Regel mit (komplexen) Algorithmen verschlüsselt.

    Das Raspbian verwendet sehr wahrscheinlich auch 4vl2, ... so komm ich erstmal nicht weiter, ich muss mich nach einer Lösung umsehen,
    wie ich jpg-Daten "räumlich" mache (ohne Zwischenspeicherung auf d. Festplatte versteht sich).

    Ich bin nicht sicher ob ich unter Raspbian (für ARM-Prozessoren) den v4l2 gegen v4l austasuchen könnte.
    (Ich wüßte sowieso nicht wie man das macht...)

    Bis zum Kauf eines Raspberry-Pi dauerts also noch ne Weile...

    Gruß mbot

  • ... na, es scheint hier keiner was zu wissen über den Unterschied v4l vs. v4l2

    Folgender Code speichert über "programm > picture.txt" /dev/viedo0-Werte in picture.txt.

    Zur Analyse betrachte ich diese Werte meist mit hexedit.
    Sie ergaben unter v4l ein erkennbares Muster, welches sich leicht den 640x480 Pixeln zuordnen ließ.

    Das geht unter v4l2 nicht mehr, die Werte unter v4l2 sind verschlüsselt, weit weg von räumlicher Zuordnung.

    Vielleicht liegt es nicht an v4l2, dann wüßte ich im Moment aber nicht woran sonst.
    ... ich bleibe dran...

    Gruß mbot

    Einmal editiert, zuletzt von mbot (15. November 2013 um 07:49)

  • Hallo dreamshader,

    großen Dank.

    wenn ich den englischen Text deines Links richtig verstanden habe,
    dann arbeitet v4l2 standardmäßig mit unkomprimierten Formaten,


    Zitat


    The V4L2 standard formats are all uncompressed formats.

    die sich genauso auslesen lassen, wie ich es bisher von v4l kannte,

    ... nämlich ganz schlicht von oben links Reihenweise nach rechts (640 Pixel),
    und das dann 480 Zeilen nach unten.


    Im Text werden komprimierte Formate angesprochen, scheinbar Treiber-abhängig,


    Zitat


    V4L2 drivers are not limited to these formats, however. Driver-specific formats are possible.
    ... For example, a device may support a proprietary compressed format

    ...bin nicht sicher, heißt das: "manchmal muss man -Geräte-abhängig- das v4l2-Format zu einem komprimierten convertieren",

    oder ist gemeint:"manchmal weicht v4l2 vom Standard ab, um der Hardware/ dem Sytem gerecht zu werden"

    Egal was gemeint ist, der Hinweis steckt darin, dass nicht v4l/ v4l2 die Ursache für lesbar/ unlesbar sind,
    sondern das OS (die Webcam ist die gleiche geblieben).

    Ich verspreche mindestens ein C-Programm für ein Konsolen-ASCII-Gesicht mit bewegten Augen,
    die per WebCam den (einzelnen) anwesenden Programmierer verfolgt/ beobachtet,
    wenn er im Zimmer auf und ab läuft, .... wenn ich dieses v4l2 verstanden/ geknackt hab.
    (zusammen mit espeak, kann man damit schon Leute erschrecken)

    (Das Programm muss ich nicht erst schreiben, ich hab es schon lange,
    es läuft auch, aber nur unter xubuntu-alternate für alte Rechner)

    Muss jetzt mit meinen Kleinen einkaufen,
    ... beim nächszten mal, kann ich ja mal die v4l -Version einfügen, ...

    Ist ne gute Grundlage für Robot-Programmierer, ... wenn ma ne Routine für den ParPort schreibt,
    kann man Motoren ansteuern, ... seit USB2.0 ist die Reaktionszeit überraschend gut


    Gruß mbot

  • So
    ,... es geht weiter,


    Ich stehe kurz vor der Anschaffung eines Raspberry Typ B (Weihnachstgeldsegen).

    Da ich das Vieh autonom rumspazieren lassen will,
    plane ich 'ne mobile Stromversorgung, dazu eine Frage:

    Wenn ich das Board mit einer ausreichenden USB Stromquelle versorge,

    dann müsste der Strom doch für min. eine USB Webcam reichen ?

    Ich meine, der Strom wird doch im Board über USB Power-Leitungen weiter geleitet?
    (... wird doch nicht noch von einem Zwischencontroller geregelt,
    der auf best. Werte festgelegt ist oder?).

    Geplannt ist folgender Akku-Pack:
    http://www.amazon.de/8400mAh-Erweiterung-Batterie-Powerbank-Ladeger%C3%A4t/dp/B009ZP11C2/ref=sr_1_7?s=photo&ie=UTF8&qid=1387182197&sr=1-7&keywords=XCSOURCE&tag=psblog-21 [Anzeige]

    (der selbige wurde hier schonmal empfohlen)

    Eine Webcam zieht bis zu 500mA, (ich werde es mit ner alten LG versuchen),
    das wären bei 5 V ungefähr 2,5 Watt.

    Das Board braucht 3,5 Watt, der Powerpack liefert 8400mAh, das sollte doch reichen!?
    (Motoren und Lautsprecher bekommen eine eigene Stromversorgung).


    Die Zeit wird zu knapp sein, aber ich freu mich schon aufs Basteln,
    ... dafür würd' ich am liebsten sofort Jungrentner werden.

    Gruß mbot

    Einmal editiert, zuletzt von mbot (16. Dezember 2013 um 09:47)

  • Hallo dreamshader,

    ich danke dir für den schnellen Hinweis.

    Ich hatte sowas entfernt befürchtet,..

    hatte bereits gegrübelt, ob ich eventuell am USB Kabel/ Stecker rumbastel,
    so dass die WebCam-Daten übers RPi-USB laufen,
    während ich die Stromversorgung direkt vom Akkupack hole.

    (ich meine mich zu erinnern, dass die Datenleitung und die Stromleitung
    bei USB getrennt sind, bin nicht sicher).

    ... google...:

    Laut Wiki, sind die längeren Pins die Stromliefernden:

    http://commons.wikimedia.org/wiki/File:USB_Male_Plug_Type_A.jpg

    Gut das du nochmal auf den Stromverbrauch der GPIOs hingewiesen hast,
    hatte ich doch glatt vergessen,...

    Könnte es helfen, wenn man mit den GPIOs Optokoppler ansteuert,
    die auf einer Platine eine eigene Stromversorgung haben.
    Dann müßte ich nach deiner Stromversorgungs-Variante_1 bloß eine Webcam finden,
    die nicht mehr als 300mA, nach dem Motto "Glühen geht über Studieren" ;- )

    (Ich seh's schon kommen: Mein RPi-Helferlein schleppt 6-7 Akkupacks mit sich rum,
    ... kriegt er halt 'n Geh-Rollator mit Ladefläche...)

    Gruß mbot

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!