WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fahrzeug um Schwerpunkt drehen - Drehmatrix

 

MasterOsiris
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2014, 12:51     Titel: Fahrzeug um Schwerpunkt drehen - Drehmatrix
  Antworten mit Zitat      
Servus Leute!

ich sitz grad an meiner Studienarbeit und komme bei einem problem nicht weiter (grundsätzlich simuliere ich notbremssystem für pkw's in Matlab und Simulink).

Mein Fahrzeug fährt in einem Koordinatensystem und ich berechne kontinuierlich die x und y Koordinanten des Schwerpunktes S.
Jetzt möchte ich die Koordinaten der Fahrzeugecke vorne links P und vorne rechts U bekommen. Die absolut Abstände zum Schwerpunkt habe ich (im Prinzip die Fahrzeugabmessungen, als Bsp mal nach vorne 4m und zur Seite 2m bzw. -2m gewählt).

Da sich das Auto aber nicht immer in x-Richtung bewegt sonder auch Kurven fährt muss ich die Punkte P und U (in Abhängigkeit von S) immer wieder neu berechnen.
Dazu habe ich den Winkel alpha bestimmt der die Richtungsänderung zum Koordinatensystem angibt.

Meine Idee war es den Punkt P über eine Drehmatrix zu drehen (Drehmittelpunkt ist der Schwerpunkt des Fahrzeuges (für die Drehung quasi der Ursprung)) und dann die Koordinaten der Schwerpunkte dazu addieren und man sollte den neuen Punkt P' bekommen.

Für Winkel bis 90° funktioniert das tadellos (siehe Screenshot alpha 30°). Dreht das Fahrzeug aber nun weiter od in eine andere Richtung z.b. 270° kommt nur noch Unsinn dabei raus.

Muss ich die Drehmatrix anpassen je nachdem in Welchem Quadranten ich bin? Od wo liegt der Fehler?

Merci Beaucoup für eure Hilfe!!

01_Problemstellung.jpg
 Beschreibung:

Download
 Dateiname:  01_Problemstellung.jpg
 Dateigröße:  838.64 KB
 Heruntergeladen:  391 mal
02_x_y_Diagramm_alpha_30.jpg
 Beschreibung:

Download
 Dateiname:  02_x_y_Diagramm_alpha_30.jpg
 Dateigröße:  18.05 KB
 Heruntergeladen:  261 mal
03_x_y_Diagramm_alpha_270.jpg
 Beschreibung:

Download
 Dateiname:  03_x_y_Diagramm_alpha_270.jpg
 Dateigröße:  21.8 KB
 Heruntergeladen:  292 mal
04_alpha_zeitlicher_Verlauf.JPG
 Beschreibung:

Download
 Dateiname:  04_alpha_zeitlicher_Verlauf.JPG
 Dateigröße:  56.35 KB
 Heruntergeladen:  271 mal
Private Nachricht senden Benutzer-Profile anzeigen


PinkySan
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2014, 13:24     Titel:
  Antworten mit Zitat      
Moin,

wenn ich das richte verstehe, willst du immer den absoluten Punkt P im Koordinatensystem haben, oder?

Warum bestimmst du dir denn nicht den absoluten Punkt P von deinem absoluten Schwerpunkt S aus.
Du weißt den Schwerpunkt deines Autos und die Richtung in die es Fährt.

bsp.
S=(3|1) und fährt mit alpha=0 (entlang der x-Achse)

Der Punkt P ist im Verhältnis zu S ja immer fest. Die Form deines Autos ändert sich ja nicht. Weiterhin weißt du ja den Abstand und den Winkel von P zu S.
(in deinem Beispiel  r= \sqrt{4^2+2^2}  und phi=arctan(2/4))

Wenn du jetzt also S in deinem Koordinatensystem weißt, dann kannst du dir dort ja deinen neuen Punkt P' berechnen. Allerdings darfst du nicht vergessen, den Drehwinkel deines Fahrzeugs (die Fahrtrichtung) bei der Berechnung hinzuzunehmen.

Das wäre mein Ansatz, sofern ich dein Thema richtig verstanden habe Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
MasterOsiris
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2014, 15:37     Titel:
  Antworten mit Zitat      
danke für die schnelle antwort.

Das war auch mein erster Ansatz, aber leider stimmt das auch nur für den ersten Quadranten. Sobald der Winkel > 90° wird stimmen die Abstände nicht mehr (habe das mal mit good old Paint demonstriert)

Code:

clear all
s=[3; 1]
p=[4; 2]
u=[4; -2]
a=45*pi/180

p_norm=sqrt(p(1)^2+p(2)^2)
u_norm=sqrt(u(1)^2+u(2)^2)
phi_p=atan(p(2)/p(1))
phi_u=atan(u(2)/u(1))
beta_p=a+phi_p
beta_u=a+phi_u

px=s(1)+cos(beta_p)*p_norm
py=s(2)+sin(beta_p)*p_norm
ux=s(1)+cos(beta_u)*u_norm
uy=s(2)+sin(beta_u)*u_norm

clf
hold on
plot(s(1),s(2),'o',px,py,'*',ux,uy,'*')
hold off
 


alpha_135.jpg
 Beschreibung:
Die Schenkellängen zu der Geraden aus dem Schwerpunkt (im Winkel Alpha) sind unterschiedlich

Download
 Dateiname:  alpha_135.jpg
 Dateigröße:  32.49 KB
 Heruntergeladen:  296 mal
alpha_45.jpg
 Beschreibung:

Download
 Dateiname:  alpha_45.jpg
 Dateigröße:  9.88 KB
 Heruntergeladen:  290 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
sirs
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 31.07.14
Wohnort: :-)
Version: R2013b
     Beitrag Verfasst am: 31.07.2014, 16:00     Titel:
  Antworten mit Zitat      
Hi

für solche Sachen verwendet man normalerweise Quaternionen, also sowas wie komplexe Zahlen in 3D. Läuft natürlich auch in 2D. Anders als die Richtungskosinusmatrix oder Eulerwinkel hat diese Art der Koordinatentransformation aber keine Mehrdeutigkeiten bei 90°. Vielleicht kannst du dir die drei Darstellungen ja mal anschauen, sind alles Drehmatrizen, die sich sogar in einander umrechnen lassen Wink

lg
sirs
_________________

„Je einfacher eine Konstruktion ist, desto genialer ist sie. Kompliziert bauen kann jeder.“ (Koroljow, sowjetischer Raketen-Konstrukteur)
Private Nachricht senden Benutzer-Profile anzeigen
 
PinkySan
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2014, 16:05     Titel:
  Antworten mit Zitat      
Hey.

Wenn ich das richtig sehe, berechnest du die Länge nicht mit der Differenz von S und P sondern mit deren absoluten Werten.

Code:

%% Rotation des Autos

clear all
s_start=[3 1];       %Startposition des Autos


%Dimensionen des Autos vom Startpunkt
% x-Richtung = 4
x_dim=[4 0];
% y-Richtung = 2
y_dim=[0 2];
% Daraus folgt für p
p_start=s_start+x_dim+y_dim

%Abstand zwischen s und p
r=sqrt(x_dim(1).^2+y_dim(2)^2)
%winkel zwischen s und p
theta=atan(y_dim(2)/x_dim(1))

%% rotiere Autoschwerpunkt um 45 Grad
alpha=90*pi/180

p_x=s_start(1)+r.*cos(alpha+theta)
p_y=s_start(2)+r.*sin(alpha+theta)

alpha=180*pi/180

p_x=s_start(1)+r.*cos(alpha+theta)
p_y=s_start(2)+r.*sin(alpha+theta)

alpha=270*pi/180

p_x=s_start(1)+r.*cos(alpha+theta)
p_y=s_start(2)+r.*sin(alpha+theta)
 


ich habe das mal recht simpel nachgeschrieben, so wie ich das Problem sehe. Am Ende habe ich auch drei Testfälle beschrieben, die man recht leicht mit Zettel und Stift nachvollziehen kann.

Ich habe es auch erst einmal nur für den Punkt P berechnet, aber beim Punkt U ändert sich ja lediglich das Vorzeichen des Winkels theta. Die Berechnung läuft äquivalent.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.