Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
18. Mai 2012, 11:46:24
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: English and international Robotsupport now on Robot Forum. Also Supported by the Moderators of the roboterforum.de

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Kommunikation StereoKamera-Roboter 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Kommunikation StereoKamera-Roboter  (Gelesen 635 mal)
Ro_Ka_Sy
Neuling
*
Offline Offline

Beiträge: 6


« am: 02. Oktober 2011, 07:41:37 »

Hallo Leute,
ich versuche mit C++ unter MS VS 2010 ein Roboter(Kein mobil Roboter) und 2 Kameras zu programmieren.
Ziel ist es:
1- ein Rechteck vor den Kameras zu halten und zu kalibrieren (schon gemacht)
2- die position des Rechtecks an der Roboter zu schicken (1. problem)
3- der Roboter-Endeffektor soll sich dann bewegen, wenn ich mein Rechteck bewege. (gleiche Richtung) (2. Problem)
wie erstelle ich die Kommunikation zwischen Roboter und Kameras?
Mein Roboter ist mit Rapid Programmiert und über Ethernet-schnittstelle an PC verbunden. Beide Kamera stehen im Raum also nicht an Roboter montiert.
Danke im voraus.
Gruß merci
Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 785


« Antworten #1 am: 02. Oktober 2011, 10:22:51 »

Hallo und willkommen im Forum,

ich vermute mal, du willst etwas in dieser Art machen ?

<a href="http://www.youtube.com/v/N8LDXPkmluo&rel=0" target="_blank">http://www.youtube.com/v/N8LDXPkmluo&rel=0</a>

An dem Titel des Videos siehst du übrigens,  dass es dafür im Englischen einen Fachbegriff gibt: "Visual Servoing". Das könnte hilfreich sein, wenn du im Netz nach etwas suchst.

Wie du schon richtig erkannt hast, musst du mehrere Schritte ausführen, damit das geht.

1. Wichtig wäre es erstmal zu klären, wie man den Roboter über Ethernet ansteuert. Da müssen leider andere helfen, weil ich mich mit ABB nicht auskenne. Sinnvoll wäre es, wenn der Roboter über eine Echtzeitsteuerung verfügen würde (so wie Kuka RSI Xml, Mitsubishis Mxt- oder Stäublis alter-Befehl). Zum Testen sollte man die Kamera erstmal ganz weglassen und den Roboter erstmal über ein Testprogramm bewegen.

2. Roboter- und  Rechteck müssen sich im selben Koordinatensystem bewegen. Dazu ist PC-seitig etwas Mathematik erforderlich. Möglicherweise liegen die Positionsdaten von der Kamera in einem anderen Format (z.B. homogene Koordinaten) vor, als es der Roboter haben will (Vektor + Quaternionen ?). Zur ABB Seite müsste da auch ein Experte was sagen.

3. Abhängig davon, wie schnell sich der Roboter bewegen kann, müssen die Bewegungsbefehle für den Roboter über eine Filterung berechnet werden. Möglicherweise kann der Roboter einer ruckweisen Bewegung nicht schnell oder weit genug folgen und man muss die Verfolgung in sinnvolle Zwischenschritte zerlegen.

Hoffe das hilft schon etwas und ein ABB-Experte kann uns über den Rest aufklären.

Grüße

  Urmel


Nachtrag:
Wenn sich der Roboter nicht flüssig bewegen muss, sondern nur schrittweise, bleibt der Ablauf im Prinzip der gleiche. Punkt 1 wird dann halt nur einmal statt in einer Schleife ausgeführt, 2 bleibt gleich, 3 ist dann einfacher.



Gespeichert
Ro_Ka_Sy
Neuling
*
Offline Offline

Beiträge: 6


« Antworten #2 am: 02. Oktober 2011, 16:33:38 »

Danke!
 merci

das ist fast was ich machen will, einzige Unterschiede ist, meine 2 kameras sind nicht am roboter gebaut.

Die kommunikation PC- Roboter und PC-Kameras sind schon gemacht .Die Kamerakalibrierung auch habe ich schon fertig.

mir fehlt die kommunikation Roboter-Kameras bzw. mit welchen Befehlen (in C++) kann ich die Daten von Kameras am Roboter senden.

Danke.
Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 785


« Antworten #3 am: 02. Oktober 2011, 18:02:48 »

das ist fast was ich machen will, einzige Unterschiede ist, meine 2 kameras sind nicht am roboter gebaut.

Dafür konnte ich bei Youtube nichts passendes finden, aber immerhin ist der Roboter ein (alter) ABB.  zwink

Die kommunikation PC- Roboter und PC-Kameras sind schon gemacht .

Heißt das, dass du den Roboter schon bewegen kannst, aber noch nicht in Abhängigkeit von der Kamera ?

mit welchen Befehlen (in C++) kann ich die Daten von Kameras am Roboter senden.

Aber irgendwas sendest du schon jetzt oder ?
Und wie sehen die Daten denn aus, die du von den Kameras bekommst ?
Gespeichert
Ro_Ka_Sy
Neuling
*
Offline Offline

Beiträge: 6


« Antworten #4 am: 02. Oktober 2011, 23:03:43 »

--> Der Roboter kann ich schon bewegen, ohne Kamera, leider.
--> Ich habe die Kamerakalibrierung durchgeführt, also die Kameras erkennen mein Rechteck, berechnen die intrinsischen und extrinsischen Parameter, die Abstandsmessung.
--> Ich sollte jetzt irgendein C++-Programm schreiben, dass der Roboter über die 2 Kameras steuert.
Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 785


« Antworten #5 am: 03. Oktober 2011, 09:48:02 »

--> Ich sollte jetzt irgendein C++-Programm schreiben

Der Rest ist eigentlich ziemlich einfach. Da du uns nicht sagen willst, wie die Daten von der Kamera aussehen und in welchem Format die Steuerbefehle an den Roboter gesendet werden, kann man da nur etwas Pseudocode zeigen:

Htm robot_start = rob_pos_in_htm( Roboterstartposition );
Htm rechteck_start = kamera_pos_in_htm( StartpositionRechteck );

Htm letzte_pos = robot_start;

do
{
    Htm abstand = kamera_pos_in_htm( AktuellePositionRechteck ) * inverse_htm( rechteck_start );
    Htm roboter_ziel = robot_start * (abstand * transformation_kamera_zu_roboter);

    Htm roboter_soll = regler( roboter_ziel, letzte_pos );
    letzte_pos = roboter_soll;
    Sende_An_Roboter( htm_in_roboterformat(roboter_soll) );
} while ( steuerung_laeuft );


Die Name der Funktionen sollen andeuten, was sie machen. (D.h. Du musst diese Funktionen schreiben, falls du das noch nicht hast, es gibt sie nicht fertig.)

Htm steht für homogene Transformationsmatrix und ist durch den Matrizentyp der Mathebibliothek zu ersetzen, die du verwendest. (D.h. Du sollst Htm durch die Matrixklasse ersetzen, die du verwendest. Das kann entweder eine selbstgeschriebene sein, etwas vorgegebenes z.B. von der Uni, oder etwas aus dem Umfeld OpenGL/DirectX oder eine der gängigen Bibliotheken aus dem Netz (newmat, roboop, tnt, ublas, Armadillo, Eigen, ...)

transformation_kamera_zu_roboter ist die Verschiebung, Drehung und Skalierung zwischen Kamerakoordinatensystem und Roboterkoordinatensystem.

Die ganzen Funktionen mit einem _in_ im Namen, wandeln eine Positionsdarstellung in eine andere um.

Über die Implementierung von regler( ) gibt es in der gängigen Fachliteratur ganze Kapitel. Aber vielleicht reicht hier anfangs eine feste Schrittweite.

Mehr kann man da nicht helfen, wenn du nicht sagst, wie deine Mathebibliothek und die Positionsformate aussehen.
Gespeichert
Ro_Ka_Sy
Neuling
*
Offline Offline

Beiträge: 6


« Antworten #6 am: 08. Oktober 2011, 20:04:16 »

 gutidee
Danke für deine Hilfe.
Ich schaue mir das ganze noch an.
schönes we
 danke
Gespeichert
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Kommunikation StereoKamera-Roboter « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS