Koordinatentransformation 2D

Neue Frage »

Hawkster Auf diesen Beitrag antworten »
Koordinatentransformation 2D
Hallo allesamt,

mich nervt derzeit ja ein Problem wo ich auch nicht so genau weiß wo ich anfangen soll...

Folgender Versuchsaufbau:
- 2-Achsen-Roboter
- Kamera-System welches am Roboter befestigt ist.

Nun möchte ich über ein Objekt fahren, eine Aufnahme machen und die Verschiebung für den Roboter in seinem Koordinatensystem erhalten.

Folgende Überlegung:
Ich fahre auf einen beliebigen Referenzpunkt und mache eine Aufnahme. Diese Aufnahme ist der Ursprung im Koordinatensystem des Roboters.
Dann Fahre ich vom Ursprung aus 3 cm in X-Richtung Positiv im Koordinatensystem des Roboters. Erneute Aufnahme.
Danach Fahre ich vom Ursprung aus 3 cm in Y-Richtung Positiv im Koordinatensystem des Roboters. Erneute Aufnahme.

Nun habe ich 3 Punkte erhalten. Urpsrung, X, Y. Dadruch lässt sich ja logischerweiße eine Art "Koordinatensystem" des Roboters zeichen.

Nun ist aber die Frage, wie wandel ich eine Koordinate der Kamera in eine Koordinate für den Roboter?! also, eigentlich möchte ich ja nur den Verschiebungswert für den Roboter erhalten.

Als Ansatz:

Edit (mY+):Externen Link durch Bildanhang ersetzt.

[attach]11509[/attach]

Folgende Feststellungen habe ich bisher gemacht:
1. Verdrehung: Um diese verdrehung in das neue KOS umzusetzen habe ich auf Wikipedia folgende Formel gefunden:
X' = x*cos(winkel)+y*sin(winkel)
Y' = -x*sin(winkel)+y*cos(winkel)

Um diesen Winkel zu ermitteln dachte ich mir "Einfach ma die Steigung ausrechnen zwischen Ursprung und X-Bewegung vom Roboter, weiß aber auch net ob das so ganz die richtige Lösung ist.

2. Verschiebung:
Um die Koordinate richtig zu erhalten dachte ich mir:
X'' = X' - X_Ursprung
Y'' = Y' - Y_Ursprung

Das klappt soweit auch ganz gut. und am Ende die Skalierung, aber da bin ich noch nicht wirklich.

Mein Problem ist nun, das da oben klappt ja soweit, solange ich keine Extremfälle mache. Aber ich suche nun einen Weg, um das für alle fälle zu erzeugen, egal wie viel grad verdrehung das Ziel-KOS oder ob es gespiegelt ist.

Kann mir da vielleicht einer helfen?!

Mit freundliche Grüßen,
Hawkster
Rechenschieber Auf diesen Beitrag antworten »

mir scheint, dass alles im zweidimensionalen Bereich abläuft; nämlich Referenzpunkt setzen, was gleichbedeutend mit dem UIrsprung eines KS (KOS) ist, und parallel zur Ebene(x-y) an x-beliebigen Punkten die Aufnahmen machen.
Was willst du aber wirklich berechnen?
Dein Roboter liegt in der z-Ebene und fährt (parallel) über die x-y- Ebene. Also besitzt die Kamera immer dieselben Koordinaten, die die Verschiebung auch hat.

Das Ganze klingt irgendwie interessant, aber die eigentliche Problemstellung ist noch nicht wirklich geklärt.

Einen Streckungsfaktor habe ich auch nicht aus der Aufgabe erkannt.

LGR
Hawkster Auf diesen Beitrag antworten »

Korrekt, alles spielt sich im 2 Dimensionalen Bereich ab. Der Roboter ändert seine Höhe nicht.

Die Skalierung spielt dann eine Rolle wenn man z.b. sagt ... 28 Pixel sind 1 mm für den Roboter.

Nein, die Kamera kann wie niemals 100%ig genau so montieren, das die gleich mit dem Roboter-Koordinaten-System ist, wie du ja auf dem bild siehst.

Ich will Berechnen, wenn die Kamera z.b. den Roten Punkt in dem Bild findet, wie ist dann der Rote Punkt im Koordinatensystem für den Roboter.

Nochma auf das Bild bezogen. der Rahmen außenherum ist die "Aufnahmefläche" der Kamera. und das eingezeichnete Koordinatensystem ist das des Roboters, wie es zur Kamera steht.
Rechenschieber Auf diesen Beitrag antworten »

Oh Himmel.
Ich kann bei bestem Willen keinen roten Punkt erkennen, nur ein rotes Kreuz mit schwarzem Rahmen und darin ein schwarzes Kreuz.
Ich hab auch mehrfach deine Beschreibung gelesen und versucht, sie zu analysieren.
Das einzige, was ich herauslesen konnte (was für eine Berechnung von Bedeutung sein könnte) ist, dass bei einer Verschiebung des Roboters von 1 mm in jeglicher Richtung immer 28 Pixel "aufgenommen" werden.
Die Kamera wird ja nicht am Roboter geschwenkt: richtig?
Prinzipiell haben wir es doch nur mit Strahlensatz und Verhältnisrechnung zutun, oder?
Selbst wenn der Abstand zur Ebene bekannt ist, lässt sich alles in Pixel ausdrücken (oder in mm).

Vielleicht lehne ich mich aber auch zu weit hinaus und verstehe dein Prinzip nicht so richtig.

Versuch's noch mal ganz simple mit einem alternativen Beispiel zu erklären.

LGR
Hawkster Auf diesen Beitrag antworten »

Ja, das Rote Teil mein ich ja als Punkt. Augenzwinkern

Nein, die Kamera wird nicht geschwenkt.

Ich montiere an den Roboter die Kamera. Da die Kamera sich ja in einem anderen Koordinatensystem befindet als der Roboter muss ich dafür sorgen, die Koordinaten, welche die Kamera meldet in die Koordinaten des Roboters zu wandeln. Soweit verständlich denke ich.

Montiere ich nun die Kamera etwas "verdreht", liegt das Koordinatensystem des Roboters verdreht zu dem Koordinatensystem der Kamera.

Nun möchte ich ein Programm schreiben, wo ich die Koordinaten von der Kamera in Koordinaten des Roboters übernehmen kann.
Gualtiero Auf diesen Beitrag antworten »
RE: Koordinatentransformation 2D
Wie der Titel schon sagt, ist es eine Koordinatentransformation, aber wenn hier jemand Hilfe geben soll, müssen die Zusammenhänge ganz klar sein.
Ich versuche mal, aus den gegebenen Informationen eine möglichst einfache Darstellung des Sachverhalts zu geben, so wie ich es verstehe.

Eine Kamera ist an einem beweglichen Arm (Roboter) über einem Bild montiert. Alle Bewegungen dieses Arms werden mit Hilfe eines fixen, hardwarebezogenen Koordinatensystems gesteuert, ich nenne es KS1.

Die Kamera kann über dem Bild bewegt werden, wobei der vertikale Abstand zum Bild immer gleich bleibt, sodass sie sich nur in einer Ebene bewegt.

Jede solche Standortveränderung der Kamera ist dem System sozusagen als x/y-Vektor bekannt (d. h. die Info wird von der Hardware an das Programm geliefert).

Der Punkt des Bildes, auf den die optische Achse der Kamera trifft (oder ein anderer fix definierter Punkt), ist der Nullpunkt des Kamera-Koordinatensystems, ich nenne es KS2.

Zudem kann die Kamera in der x/y-Ebene verschwenkt werden. Anders als bei der Verschiebung ist der Verschwenkungswinkel der Hardware und damit dem Programm nicht bekannt(?)

Aus dem letzten Satz folgt, dass Du mindestens zwei Punkte brauchst, die Du sowohl in KS1 als auch in KS2 identifizieren kannst, um eine Trafo zu rechnen.
Die Berechnung der Steigung ist eine gute Idee.

Wenn z. B. die Steigungen zwischen den Punkten A und B in KS1 und zwischen A' und B' in KS2 wären, wäre der
Verdrehwinkel

Hier musst Du wie bei jedem arctan auf den Spezialfall (xB - xA) = 0 aufpassen, also das Vorzeichen von (yB - yA) prüfen und entweder 90° oder 270° an das Programm weitergeben.

Zitat:
. . . egal wie viel grad verdrehung das Ziel-KOS oder ob es gespiegelt ist.

Die Formeln sind von der Größe des Winkels unabhängig. Und die Notwendigkeit einer Spiegelung sehe bei diesen Bewegungsabläufen nicht.
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »