die Euler-Winkel ( engl. yaw, pitch, roll) tun doch genau das, oder nicht...?
- bzw. was willst du außerdem wissen oder zusätzlich berechnen?
https://de.wikipedia.org/wiki/Eulersche_Winkel
Hallo,
ich möchte mit Hilfe eines 3-Achsen-Beschleunigungssensor (MPU6050) die Winkeländerung mit Hilfe des Gravitationsvektors berechnen.
Wenn der Sensor auf dem Tisch liegt zeigt er (0,0,g) an, die z-Achse steht vertikal nach oben.
Drehe ich den Sensor in die X-Achse um 90 Grad werden Werte von (0,g,0) angezeigt, da nun die Y-Achse in Richtung des Gravitationsvektors zeigt.
Ich habe mir jetzt überlegt, dass ich durch die Euler Drehwinkelmatrix die Winkeländerung zeigen kann.
Für die x-Achse wäre das:
1 0 0
0 cos a sin a
0 - sin a cos a
Diese Matrix mit dem Ausgangsvektor (0,0,g) multipliziert, zeigt mir die Anteile von g in den drei Achsen.
Bei 0Grad als der Ausgangslage wäre das (0, sin 0 * g, cos 0 *g) = (0,0,g)
Bei 90 Grad also Ende der Drehung (0, sind 90 *g, cos 90 * g) = (0,g,0)
Die Vektoren werden also richtig angezeigt.
Mir ist jedoch nicht ganz klar, wie das ganze funktioniert wenn der Sensor eine Schräglage hat, so dass theoretisch alle 3-Achsen einen g-Anteil zeigen müssten. In meinem Beispiel hat die X-Achse ja keinen g-Anteil, weil um diese gedreht wird.
Bei meinem Beispiel weiß ich demtensprechend nur dass eine 90 Grad Drehung des gesamten Systems um die X-Achse stattgefunden hat.
Wird der Sensor jedoch auch in der X-Achse gekippt, würde eine komplette Schräglage im Raum entsteht.
Welche Möglichkeit gibt es diese Schräglage im Raum als absolute Winkeländerung in allen drei Koordinatenachsen mit dem Werten des Beschleunigungssensors zu berechnen?
Wird dafür zusätzlich ein Magnetometer benötigt um einen zusätzlichen "Referenzpunkt" zu erzeugen und damit die absolute Winkeländerung zu berechnen?
Vielen Dank schonmal für eure Hilfe!
die Euler-Winkel ( engl. yaw, pitch, roll) tun doch genau das, oder nicht...?
- bzw. was willst du außerdem wissen oder zusätzlich berechnen?
https://de.wikipedia.org/wiki/Eulersche_Winkel
Ich möchte die absolute Winkeländerung im Raum haben und nicht nur für eine Achse?
Ziel soll es sein, den Sensor an einem Profil zu befestigen und damit die Verformungen zu messen. Dafür brauche ich ja dann die absolute Winkeländerung in allen drei Achsen und nicht nur die Ausrichtung des Erdbeschleunigungsvektors.
und was geben deiner Meinung nach dann die Eulerwinkel wieder?
(ps,
ich diskutiere nicht gerne mit anonymen Unregistrierten - melde dich doch bitte unter deinem Nutzernamen an!)
pps,
ich glaube, ich verstehe was du willst .. die Eulerwinkel als ERGEBNIS aus den diskreten g-Werten, also quasi die Rückrechnung aus ihren senkrechten Projektionen auf die senkrechte "g-Achse" (z-Achse) des Bezugssystem...
ich bin mir nicht sicher, ob das eine Funktion ist, ich vermute, sie ist eher eine Relation, d.h. sie könnte mehrere (also keine eindeutigen) Lösungen haben statt nur 1...
der interne 3D Gyro im MPU könnte das Problem lösen, da er die absoluten Drehungen in allen 3 Achsen misst.
Es gibt dazu diverse Libs, der MPU berechnet die Euler-Winkel i.P. sogar bereits intern, viele verrechnen diese aber zusätzlich mit einem Kalman-Filter (z.B. für Arduinos: https://github.com/TKJElectronics/KalmanFilter, wobei ich mit dieser lib noch nicht persönlich gerechnet habe).
Geändert von HaWe (20.07.2016 um 23:03 Uhr)
Hi HaWe,
genau diese Anforderung habe ich auch. Ich benötige die exakten Winkel. ...oder ich verstehe das noch nicht
Ich habe einen Raspberry Pi mit einem MPU6050 (GY-521) Sensor. Wenn ich die Programme starte, die ich gefunden und modifiziert habe, kann ich die Neigungen in X und Y sehen. Was ist mit Z?
Was hab ich vor:
ich möchte, wenn ich das Modul auf den Tisch lege und um die eigene Achse drehe, dass am Display diese Drehung in Grad angezeigt wird. Künftig habe ich vor, über eine Motorsteuerung den Roboter so lange zu drehen, bis der vorgegebene Winkel erreicht ist.
Beispiel:
ich habe einen Bot mit 2 Motoren. Ich gehe davon aus, dass der Bot weiss, wo er steht. Ich gehe mal von Null Grad aus. Ich gebe jetzt die Gradzahl ein, z.B. 245 grad, dann soll der Motor so lange drehen, bis dies erreicht wurde.
Ausblicke:
ich möchte eine Unterscheidung einbauen, ob es geschickter ist nach links oder rechts zu drehen, damit dieser Winkel am schnellsten erreicht werden kann.
Zu meiner Person: Ich kann weder C noch Python richtig gut. Ich kann Skripte lesen und daran basteln. Ich bastle gerade an einem Bot und versuche diesen per Python anzusprechen. Ich habe ein Buch, doch in diesem Buch werden sehr teure Bauteile verwendet. Es muss doch möglich sein, das Teil ohne das Sense Hat und ohne den teuren Ultraschall Sensoren SRF08 zum Laufen zu bekommen.
Ich habe mir überlegt, das über die günstigen HCSR04 und einem MPU6050 aufzubauen. Ich merkte gleich, dass ich an meine Grenzen gestoßen bin.
Als Grundlage liegt mir ein Script vor. ich bin auf die folgende Seite gestoßen:https://github.com/brennoflavio
Ich komme also nicht so richtig weiter.
Wer kann mir in dieser Sache weiter helfen?
Vielen Dank.
Grüße
V
Um ein Objekt im Raum auszurichten, werden zwei Winkel gebraucht. Und zu den zwei Winkeln gehören auch zwei Referenzen, die Null-Werte. Der Winkel, in dem die Schwerkraft wirkt, könnte einer sein. Den kann ein Beschleunigungssensor messen. Jetzt braucht man noch eine zweite Referenz. Das kann z.B. das Erdmagnetfeld sein.
Die Sache wird ein wenig einfacher, wenn sich das ganze nicht frei im Raum sondern nur in einer Ebene abspielt. Dann braucht man nur einen Winkel. Der muß aber dann auch in derselben Ebene liegen. Wenn dein Modul flach auf dem Tisch liegt, brauchst du eine Winkelreferenz die ebenfalls in dieser Ebene liegt. Dazu ist die Schwerkraft ungeeignet, da sie senkrecht zu dieser Ebene steht. Ein Kompass würde da passen. Dessen Vektor ist zwar nicht wirklich horizontal, er hat aber einen horizontalen Anteil, der ungleich Null ist und den man verwenden kann. Für dein Vorhaben brauchst du eigentlich nur einen Kompass, die Messung der Erdbeschleunigung ist überflüssig. Das hast du aber schon selber bemerkt
MfG KlebwaxIch habe einen Raspberry Pi mit einem MPU6050 (GY-521) Sensor. Wenn ich die Programme starte, die ich gefunden und modifiziert habe, kann ich die Neigungen in X und Y sehen. Was ist mit Z?
Strom fließt auch durch krumme Drähte !
Lesezeichen