Hallo,
ich entwickle zur Zeit einen 3D-Sensor. Der Sensor besteht aus einem 3-Achs Drehratensensor und einem 3-Achse-Beschleunigungssensor.
Ich habe das ganze so aufgezogen, dass es 2 Koordinatensysteme gibt: Eins das relativ zum Sensor liegt und eines, welches den realen Raum darstellt. Zu Beginn des Programms wird anhand der Erdbeschleunigung die Nulllage des Sensors ausgerechnet. Dies funktioniert ganz gut, die Achsen werden (soweit man das beurteilen kann) richtig berechnet.
Den Sensor habe ich als Objekt definiert, welches aus 3 Arrays besteht, die die jeweiligen Koordinaten bezüglich des Realsystems beinhalten. (siehe Bild)
Nun soll mit jedem Schleifendurchlauf die Sensorlage korrigiert werden. Hierzu verwende ich das "3D-Cartesian-Coordinate-Rotation (Euler)(Array)" VI.
Folgendes Bild zeigt die entsprechende Methode:
Ich übergebe je ein Array[3] mit den jeweiligen Koordinaten einer Achse meines Sensorkoordinatensystems.
Nun ist es allerdings so, dass das VI keine wirklich sinnvollen Ergebnisse liefert. Das Koordinatensystem welches zu Beginn des Programms errechnet wird passt soweit. Sobald das VI aber einmal durchgelaufen ist, werden die Koordinaten der X-Achse umgedreht, so dass die X-Achse jetzt in z richtung zeigt. die anderen beiden Achsen werden nicht verändert.
Hat jemand schon einmal mit diesem VI gearbeitet und kann mir sagen, was ich falsch mache? Bin für jede Hilfe dankbar.
Edit: Ich sollte vielleicht noch erwähnen, dass die Winkel richtig übergeben werden.