-         

Ergebnis 1 bis 5 von 5

Thema: Koordianten aus Video auf Servos übertragen

  1. #1

    Frage Koordianten aus Video auf Servos übertragen

    Anzeige

    Hi,

    Vorweg: Ich war mir nicht sicher in welches Forum ich das posten soll, also bitte den Post einfach verschieben falls ihr meint das er anderswo besser passt...Danke .

    B2T:

    Ich bastle gerade an einer Auto-Pan-Tilt Geschichte. Ich will eine Kamera mit 2 Servos steuern. Die Servos sollen wiederum durch eine andere Kamera gesteuert werden, die sich bewegende Objekte erkennt und deren Koordinaten an die Servos weiter gibt. Im Endefekt soll die Kamera also den Dingen die sie aufnimmt folgen. Warum das Ganze mit Kameras ? Damit man auch andere Sachen als eine Kamera draufstecken kann. Taschenlampe, Mikrophone oder sonstiges.

    Ich habe folgendes Setup:

    1x Webcam, 75° FOV, 640x480 Pixel
    2x Servo, 180°
    1x Pololu Micro Maestro 6 Kanal USB-Servocontroller

    Das Ansteuern der Servos funktioniert derzeit über ein kleines Stück Software, das ich in Python geschrieben habe. Ich kann den Servos Werte von 0-255 senden, was die 180° abdecken sollte (nehm ich mal an)
    Ein derzeit noch seperates Stück Software, das auch in Python geschriegen ist (nicht von mir), erkennt sich bewegende Objekte und errechnet deren Mittelpunkt, von welchem ich dann die Koordinaten habe.

    Mein Problem ist jetzt, das ich keinen Plan habe wie ich diese Koordinaten umrechne in Werte zwischen 0-255 die ich dann an meine Servos schicken kann.

    Angenommen der Mittelpunkt liegt by 320x100. Was würde ich dann an meine Servos für x und y schicken ?

    Ich hoffe ihr könnt und wollt mir helfen

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hi,

    also wenns nur um die Koordinaten geht, ist es wohl denkbar einfach. Dein Bild hat eine Auflösung von 640x480 (X-Y). Ein Pan-Servo-Wert(X) von 0 lässt also die Kamera in X-Richtung auf den X-Wert von 0 blicken, ein Wert von 255 lässt die Kamera auf den X-Wert 640 blicken. Das selbe gilt auch für die Y-Richtung, nur mit anderen Werten.
    Somit erhält man eine einfache Formel:
    ServoX = (MittelpunktX/AuflösungX)*AuflösungServo
    ServoY = (MittelpunktY/AuflösungY)*AuflösungServo

    Bei deinem Beispiel:
    ServoX = (320/640)*255 = 127.5
    ServoY = (100/480)*255 = 53.125

    Hoffe das hilft dir.
    Gruß
    Chris

    EDIT:
    Hab gerade gesehen, dass die Kamera ja nur einen Bereich von 75° abdeckt. Da du keine Angabe gemacht hast, wie sich die Winkel der Servos und der Kamera zueinander verhalten, kann ich dir leider keine Antwort darauf geben.
    Ergo ist obiges zwar nicht falsch, aber für deine Situation nicht zutreffend.
    Geändert von Che Guevara (03.12.2012 um 02:09 Uhr)

  3. #3
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Hab gerade gesehen, dass die Kamera ja nur einen Bereich von 75° abdeckt. Da du keine Angabe gemacht hast, wie sich die Winkel der Servos und der Kamera zueinander verhalten, kann ich dir leider keine Antwort darauf geben.
    Ergo ist obiges zwar nicht falsch, aber für deine Situation nicht zutreffend.
    Danke für deine Antwort, das hilft schon weiter. Hast recht, soweit ist es denkbar einfach . Ich bin normalerweise zwar ein ganz anständiger Entwickler aber bei solchen Sachen stellt mein Hirn auf stur ^^. Die Auflösung die du angenommen hast, hatte ich übrigens eh in meinem Post angegeben
    Ich bin mir nicht sicher ob es das ist was du wissen willst, aber der Winkel der Servos umschließt im Prinzip den Winkel der Kamera. Sprich der Servo hätte rechts, links, oben und unten noch mehr "Platz" bzw könnte sich noch weiter Bewegen. Ich müsste also den Bewegungsbereich irgendwie einschränken. Bin mir wieder nicht sicher wie ich das in die Formel oben einbauen soll O_o

    Hier meine Theorie:

    Für x:
    180/255 = 0,7 Dann weis ich wie viel Grad in einem "Schritt" stecken.
    75 / 0,7 = 107 Dann sollte ich die Schritte zur verfügung haben die ich innerhlab der 75° gehen kann. Dann muss ich noch fixe Anfangnswert, also praktisch ein neues 0 festlegen, ab dem ich dann 107 Schritte gehen kann.

    Macht das irgendwie Sinn ?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    30
    Beiträge
    1.937
    Ja, das macht Sinn. So in der Art wäre ich wohl auch vorgegangen. Am besten wird es wohl sein, wenn du wir irgendeine Möglichkeit überlegst, wie du testen kannst, ob alles richtig eingestellt ist und auch, um deinen Nullpunkt zu finden.
    Was mir noch zu denken gibt: du sagst, du hast eine Kamera auf dem Gestell und eine, die das Beld zur Referenz der Lage aufzeichnet, richtig? Dadurch wird die zweite Kamera wohl außerhalb des Drehpunkts deines Gestells sein und somit werden sich wohl auch keine Koordinaten direkt auf eine Servostellung zuordnen lassen, da es im Raum unter einem Winkel steht. Wenn eine Kamera eh auf dem Gestell montiert ist, wieso machst du das dann nicht so, dass diese das Bild aufnimmt und abhängig davon, wie weit der Mittelpunkt des Objekts vom Bildmittelpunkt entfernt ist, werden die Servos entsprechend nachgestellt? Sowas hätte ich da jedenfalls im Sinn.

  5. #5
    Zitat Zitat von Geistesblitz Beitrag anzeigen
    Ja, das macht Sinn. So in der Art wäre ich wohl auch vorgegangen. Am besten wird es wohl sein, wenn du wir irgendeine Möglichkeit überlegst, wie du testen kannst, ob alles richtig eingestellt ist und auch, um deinen Nullpunkt zu finden.
    Was mir noch zu denken gibt: du sagst, du hast eine Kamera auf dem Gestell und eine, die das Beld zur Referenz der Lage aufzeichnet, richtig? Dadurch wird die zweite Kamera wohl außerhalb des Drehpunkts deines Gestells sein und somit werden sich wohl auch keine Koordinaten direkt auf eine Servostellung zuordnen lassen, da es im Raum unter einem Winkel steht. Wenn eine Kamera eh auf dem Gestell montiert ist, wieso machst du das dann nicht so, dass diese das Bild aufnimmt und abhängig davon, wie weit der Mittelpunkt des Objekts vom Bildmittelpunkt entfernt ist, werden die Servos entsprechend nachgestellt? Sowas hätte ich da jedenfalls im Sinn.
    Wenn es wirklich nur darum ginge 1 Kamera dazuzubringen einem Object zu folgen, würde ich natürlich gleich diese Kamera verwenden. Nachdem es aber möglich sein soll alles mögliche draufzustecken brauch ich eine 2te Kamera. Natürlich macht es für das Beispiel mit der Kamera wirklich wenig Sinn. Vor allem sollte hier die Kamera die für die Bewegungserkennung verwendet wird einen größeren Winkel haben.

    Ich bin gerade am überlegen ob meine Webcam wirklich horizontal und vertikal den gleichen Winkel hat. Finde leider keine Specs dazu...weis das zufällig jemand für das PS3 Eye ?

    Vielen Dank auf jeden Fall für die Hilfe, jetzt kann ich mal versuchen das Ganze zum Laufen zu kriegen.

Ähnliche Themen

  1. Composite - Video per atmega übertragen
    Von Thegon im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 13
    Letzter Beitrag: 26.01.2011, 20:00
  2. Video per Bluetooth oder WLAN an Pocket-PC übertragen
    Von exaware im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 21.03.2010, 21:59
  3. Einzelbilder aus Video
    Von jeffrey im Forum Software, Algorithmen und KI
    Antworten: 5
    Letzter Beitrag: 18.06.2009, 14:34
  4. Byte aus Single at Overlay übertragen
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 19.07.2008, 16:36
  5. Berechnung von 3D Koordianten aus 2 Bildern
    Von MrNiemand im Forum Software, Algorithmen und KI
    Antworten: 53
    Letzter Beitrag: 06.01.2007, 19:15

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •