- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 12

Thema: Fragen : Rotationsmatrix zwischen zwei 3D-systems ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2010
    Beiträge
    9

    Fragen : Rotationsmatrix zwischen zwei 3D-systems ?

    Hallo Leute ,

    Ich hab einer Roboter mit 3D-Scanner dabei . Am Anfang der Fahrt bleibt er im Koordinaten (x0,y0,z0) und im Zeitpunkt t1 bleibt er bei (x1,y1,z1) mit Punkt-wolke-1 und im Zeitpunkt t2 (hier ist aktuelle Position) bleibt er bei (x2,y2,z2) mit Punkt-wolke-2 . Der roboter hat eine sogenannte Odometrie, mit der der Roboter immer weisst, wo er jetzt steht.

    das heisst: x1,y1,z1,x2,y2,z2 durch Odometrie immer schon klar. alle werden in der Beziehung mit (x0,y0,z0) gerechnet. und die Winkeln von beide (x1,y1,z1)(x2,y2,z2)in der Beziehung mit (x0,y0,z0) auch klar.

    So .... Bild hier   Ich muss jetzt Punkt-wolke-1 im Koordinatensystem (x2,y2,z2) darstellen ! dass heisst: ich muss Suche einen Matrix ,damit kann ich alle Punkte in Punkt-wolke-1 bei dem Koordinatensystem (x2,y2,z2) bringen .Vorsicht: die Winkel-verschiebung schon gewusst!!!

    hat jemand hier eine wertvolle Idee für mich ???

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.02.2008
    Beiträge
    130
    Hallo

    Ich nehme an du möchtest beide Punktwolken (zwei Datensätze) in einen Datensatz zusammenführen?

    Da benötigst du neben dem jeweiligen Ursprung Xx, Yy, Zz noch die Orientierung des Scanners bei den beiden Messungen.

    Kannst du die Orientierung bestimmen?

    Grüße GeoBot

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2010
    Beiträge
    9
    Hi GeoBot

    Zitat Zitat von GeoBot Beitrag anzeigen

    Ich nehme an du möchtest beide Punktwolken (zwei Datensätze) in einen Datensatz zusammenführen?
    ja klar ! und die Orientierung wird in jeder Position (wo der Roboter steht) durch Odometrie bestimmen (in der Beziehung mit globale Position (x0,y0,z0). und zwar : in der Position (x2,y2,z2) hat der Roboter die Winkelverschiebungen (Delta-phi ,Delta-psi,Delta-rho) im Vergleich mit Position (x0,y0,z0) )

    Jetzt muss ich die Punktwolke von der Position(x1,y1,z1) in der aktueller Position(x2,y2,z2) darstellen .

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.03.2004
    Alter
    75
    Beiträge
    487
    Eine ganz gute Erklärung mit Transformationsmatrizen findest Du hier:
    http://www.slidefinder.net/t/transfo...udent/24122149
    (mit Downloadmöglichkeit der PowerPoint-Datei)

    Zitat Zitat von HBhannover Beitrag anzeigen
    Der roboter hat eine sogenannte Odometrie, mit der der Roboter immer weisst, wo er jetzt steht.
    Diese Annahme ist ein bisschen optimistisch, da Odometrie leicht zu Fehlern (z.B. durch Schlupf) führt, so dass nach einem etwas längeren Weg die Odometriedaten nicht mehr mit dem wirklichen Kurs übereinstimmen.

    Gruß, Günter
    Geändert von Günter49 (30.03.2011 um 14:05 Uhr)

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2010
    Beiträge
    9
    Danke Günter49 ! du hast recht :
    *** Mit Odometrie bekommen wir die Verzerrung von 3d-laserscann-daten, weil der Roboter fährt wenn der Scanner aufnimmt , also eine Verschiebung . Oder Schlupf wie du gesagt
    *** Und im Laufe der Fahrt , wenn der Weg schon zu weit von (x0,y0,z0) dann die Verschiebung immer grösser , das ist schlecht !

    Aber ..na ja ! das ist billig ^^ und ich bin jetzt schon "auf dem Weg" kann nicht mehr zurück gehen ^^

    Danke dir für die Schleife , jetzt lese ich , und hoffe , dass ich einen optimalen Matrix für die Transformation Punktwolke1 nach Punktwolke2 finden kann.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2010
    Beiträge
    9
    Hi Grünter49 ,

    Ich hab diese Schleife gelesen . aber ab seite 14 kann ich nicht mehr verstehen:

    - In Schleife 14 bekommen wir eine allgemeine Transformation zwischen 2 Koordinaten (ist das richtig ?) dann woher bekommen wir faktor s und auch wie werden R12 ,R13,R23 bei Seite 13 im matrix R gerechnet ? kennst du das ???

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.03.2004
    Alter
    75
    Beiträge
    487
    @HBhannover

    Ich bin kein Spezialist für 3D-Transformationen und für Matrizenrechnung schon gar nicht, deshalb alles Folgende ohne Gewähr:

    Ich gehe von folgenden Annahmen aus:
    - Du verwendest ein rechtsdrehendes Koordinatensystem
    (x-Achse in Fahrtrichtung des Roboters, y-Achse nach links, z-Achse nach oben)
    - Dein Roboter bewegt sich auf einer Ebene (= die z-Werte ändern sich von einer Position zur nächsten nicht.
    - Deinem Roboter sind folgende Bewegungungen möglich
    a) Translation T = der Roboter verändert seine Position in der xy-Ebene;
    b) Rotation R = Drehung um die z-Achse;
    c) Skalierung s = es findet keine Skalierung = Änderung des Größenmaßstabs statt,
    also: s =1

    Damit musst Du meiner Meinung nach nur bis Seite 12 etwas verstehen, denn die Bursa-Wolf -Transformation behandelt spezielle Fälle der Umrechnung von Geodäsie-Daten, also von einer Landkarten-Projektion in eine andere. Es sei denn, Dein Roboter verwendet GPS.

    Du willst die Daten von Position1 (x1,y1,z1) auf die Position2 (x2,y2,z3) transformieren.

    Wenn Du die Winkelabweichung der x-Richtung von einer Position1 zur Position2 aus den Odometriedaten kennst, drehst Du mit einer Rotationsmatrix für die Drehung um die z-Achse (siehe Seite 8 ) die x-Achse der Pos1 bis sie mit der x-Achse von Pos2 übereinstimmt.
    (Winkel kappa = Drehwinkel)

    Zu den nun gedrehten Werten addierst Du nun die Translationswerte Tx,Ty,Tz
    Tx = x2-x1, Ty = y2-y1, Tz =0, da der Roboter in einer Ebene fährt.

    In C# sieht das dann beispielsweise so aus:

    x2 = x1 * Math.Cos(kappa) + y1 * Math.Sin(kappa) + tx2);
    y2 = x1 * (-Math.Sin(kappa)) + y1 * Math.Cos(kappa) + ty2);
    z2 = z1;

    Viel Erfolg,
    Günter
    Geändert von Günter49 (30.03.2011 um 17:56 Uhr)

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.02.2008
    Beiträge
    130
    Da war ich gestern nicht ganz auf der Spur.

    Um die Verschiebung und die Rotation zusammenzufassen bedient man sich der homogenen Transformation. Die bietet auch elegant die Möglichkeit auch mehrere Operationen zusammenzufassen.

    Ich nehme mal diese Folien.

    http://www.informatik.hs-mannheim.de/~ihme/robotik_2004ws/05_Transformationen.pdf

    Fangen wir mit Folie 32 zweiter Punkt an. Dort findet sich die Gleichung welche die Koordinatenwerte zwischen zwei unterschiedlichen Koordinatensystemen transformiert.

    T(A,B) eine 4X4 Matrix, besteht aus der Rotationsmatrix R und dem Verschiebungsvektor T und einer 4 ten Zeile mit 0,0,0,1

    Die Bedeutung der letzten Zeile von T(A,B) findet sich auf Folie 29.

    Um vom Koordinatensystem K1 (x1,y1,z1) zum Koordinatensystem K2 (x2,y2,z2)
    zu kommen, must du zuerst ins Koordinatensystem K0 (x0,y0,z0) und von da aus ins Koordinatensystem K2.

    Das heißt du brauchst eine Matrix T(K1->K0) und eine weitere T(K0->K2). Diese lassen
    sich mit den vorhandenen Daten und den Folien 20-22 erstellen.

    Wenn du direkt von K1 nach K2 möchtest, multiplizerst du die beiden Matritzen und erhältst die die Matrix T(K1->K2) = T(K0->K2) * T(K1->K0) für die Gleichung auf
    Folie 32.

    Auf Folie 33 ist unten gezeigt wie die multiplizierte Matrix zusammengesetzt ist.

    Hoffentlich hilft das weiter.

    Wenn du mehrere Scanns nacheinander machst und diese zusammenführen möchtest, würde ich die Daten nur nach K0 transformieren und dort alle weiteren Berechnungen machen. Anschließend nur die benötigeten Daten ins aktuelle Koordinatensystem Kx
    transformieren. Sonst rechnet man sich zum Schluss zu Tode.

Ähnliche Themen

  1. Spannung zwischen zwei Punkten messen?
    Von Maxxtro im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 17.05.2009, 14:19
  2. Komunikation zwischen zwei Atmegas
    Von manhunt im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 29.09.2008, 16:02
  3. Zeitmessung zwischen zwei Signalflanken
    Von basti85 im Forum Sensoren / Sensorik
    Antworten: 7
    Letzter Beitrag: 20.06.2007, 15:34
  4. Unterschied zwischen zwei ATMega128
    Von Maverick83 im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 15.08.2006, 13:03
  5. Funkübertragung zwischen zwei Mega32 ?
    Von cyby im Forum Sensoren / Sensorik
    Antworten: 6
    Letzter Beitrag: 08.11.2005, 13:29

Berechtigungen

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

LiFePO4 Speicher Test