chris2091
08.06.2017, 13:18
Hallo zusammen,
ich habe eine IMU von Hillcrest FSM-9. Der Sensor beinhaltet auch einen Modus über den die Maus gesteuert werden kann.
Dabei werden Roll-Bewegung(Drehung um die x-Achse) natürlich nicht berücksichtigt.
Jetzt habe ich einen Cursor in mein Programm eingebaut, der auf die Roll-Bewegungen reagiert und sich entsprechend mitdreht.
Dafür wandelt ich die Quaternionen entsprechend der Formel um.https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
Dim A = daten_winkel.x 'Zwischenspeichern, damit Formel übersichtlicher
Dim B = daten_winkel.y
Dim C = daten_winkel.z
Dim D = daten_winkel.w
'Umrechnung von Quaternion-Form in die Eulerform (rad) Formel aus Wikipedia
Dim rollen = Atan2(2 * (A * B + C * D), 1 - 2 * (B * B + C * C))
Dim nicken = Asin(2 * (A * C - B * D))
Dim gieren = Atan2(2 * (A * D + C * B), 1 - 2 * (C * C + D * D))
Leider bekomme ich eigenartige Werte raus, die nur bedingt hinkommen. So drehe ich den Sensor um fast 90° um die x-Achse und es werden mir nur Werte zwischen 50-60° angezeigt.
Ich habe im Internet ein wenig geforscht und anscheinend sind Euler-Winkel nicht das Gelbe vom Ei (Gimbal-Lock..usw.)
Hat vielleicht jemand Erfahrung mit der Umrechnung zwischen Quaternionen und Euler-Winkeln und kann mir helfen?
Vielen Dank!
ich habe eine IMU von Hillcrest FSM-9. Der Sensor beinhaltet auch einen Modus über den die Maus gesteuert werden kann.
Dabei werden Roll-Bewegung(Drehung um die x-Achse) natürlich nicht berücksichtigt.
Jetzt habe ich einen Cursor in mein Programm eingebaut, der auf die Roll-Bewegungen reagiert und sich entsprechend mitdreht.
Dafür wandelt ich die Quaternionen entsprechend der Formel um.https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
Dim A = daten_winkel.x 'Zwischenspeichern, damit Formel übersichtlicher
Dim B = daten_winkel.y
Dim C = daten_winkel.z
Dim D = daten_winkel.w
'Umrechnung von Quaternion-Form in die Eulerform (rad) Formel aus Wikipedia
Dim rollen = Atan2(2 * (A * B + C * D), 1 - 2 * (B * B + C * C))
Dim nicken = Asin(2 * (A * C - B * D))
Dim gieren = Atan2(2 * (A * D + C * B), 1 - 2 * (C * C + D * D))
Leider bekomme ich eigenartige Werte raus, die nur bedingt hinkommen. So drehe ich den Sensor um fast 90° um die x-Achse und es werden mir nur Werte zwischen 50-60° angezeigt.
Ich habe im Internet ein wenig geforscht und anscheinend sind Euler-Winkel nicht das Gelbe vom Ei (Gimbal-Lock..usw.)
Hat vielleicht jemand Erfahrung mit der Umrechnung zwischen Quaternionen und Euler-Winkeln und kann mir helfen?
Vielen Dank!