Autor
Ermittlung einer Rotationsmatrix mittels eines Vektors und Winkeln
Uebe
Neu Dabei seit: 03.08.2020 Mitteilungen: 2
Hallo Zusammen,
Ich stecke gerade Beruflich in einem Projekt , in dem es darum geht die Position eines Fahrzeugs zu bestimmen.
Ich bin leider kein Mathematiker und komme zu keiner wirklichen Erkenntnis.
Das Fahrzeug besitzt ein Lokales Koordinaten-System nach DIN70000.
Darin existiert eine Vorwärts-Kinematik aus verschiedensten Gelenken.
Nun geht es darum das erste Gelenk richtig zu rotieren und zu positionieren.
Auf dem Fahrzeug sitzen quer zur Fahrtrichtung 2-Positionssensoren.
Diese geben die Position in Weltkoordinaten an. Weiterhin besitzt das Fahrzeug einen Neigungssensor der den Winkel in Y (Pitch) und X( Roll) misst.
Also gegeben:
( Pos1:[x0,y0,z0] , Pos2:[x1,y1,z1] , Pitch:p , Roll:r )
Ich bin zuerst davon ausgegangen man könnte den tangens von dx /dy nehmen . Das funktioniert aber nur wenn das Fahrzeug auf einer Geraden Ebene steht.
Normalerweise bilde ich meine Rotationsmatrizen folgendermaßen:
copy sin_y = sinf(yaw);
cos_y = cosf(yaw);
sin_p = sinf(pitch);
cos_p = cosf(pitch);
sin_r = sinf(roll);
cos_r = cosf(roll);
m11 = cos_y * cos_p;
m12 = (cos_y * sin_p * sin_r) - (sin_y * cos_r);
m13 = (cos_y * sin_p * cos_r) + (sin_y * sin_r);
m21 = sin_y * cos_p;
m22 = (sin_y * sin_p * sin_r) + (cos_y * cos_r);
m23 = (sin_y * sin_p * cos_r) - (cos_y * sin_r);
m31 = -sin_p;
m32 = cos_p * sin_r;
m33 = cos_p * cos_r;
Mein aktuelle Stand:
copy VGnns.x = Pos[0].World_x - Pos[1].World_x;
VGnns.y = Pos[0].World_y - Pos[1].World_y;
VGnns.z = Pos[0].World_z - Pos[1].World_z;
Vector3_normalize(&VGnns,&VGnns);
cos_r = cosf(vehicle_roll)
sin_r = sinf(vehicle_roll)
cos_p = cosf(vehicle_pitch)
sin_p = sinf(vehicle_pitch)
m11 = ???
m12 = VGnns.x
m13 = ???
m21 = ???
m22 = VGnns.y
m23 = ???
m31 = -sin_p
m32 = sin_r * cos_p
m33 = cos_p * cos_r
Aktuell weiss ich nicht wie ich auf das Ergebnis von m11,m13,m21 und m23 komme.
In allen Beispielen die ich dazu gefunden habe wird immer ein zweiter Vektor benötigt. Leider weiss ich auch nicht wie ich diesen bilden könnten.
Ich hoffe ihr könnt mir weiterhelfen.
Für Uebe bei den Matheplanet-Awards stimmen Notiz Profil
Quote
Link
Uebe
Neu Dabei seit: 03.08.2020 Mitteilungen: 2
Beitrag No.1, vom Themenstarter, eingetragen 2020-08-04
Zur Hilfe nochmal ein paar Zahlen
Hier der Input:
Vektor VGnns nach der Normierung:
VGnns.x = 0.595062
VGnns.y = 0.677053
VGnns.z = 0.751123
cos_r = 0.89187
sin_r = -0.452292
cos_p = 0.957375
sin_p = -0.288849
Das erwartete Ergebnis:
M11 = 0.80311615965521999
M12 = 0.59506231747820471
M13 = 0.030087745314606423
M21 = -0.52112464975812001
M22 = 0.6770530517906278
M23 = 0.51964243906312291
M31 = 0.28884863426217577
M32 = -0.43301270579333395
M33 = 0.85385388861702249
Für Uebe bei den Matheplanet-Awards stimmen Notiz Profil
Quote
Link
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license .
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen ,
die Distanzierung ,
die Datenschutzerklärung und das Impressum .
[Seitenanfang]