Gast
#1107344
Hallo, das Thema ist vielleicht etwas OT, aber nach dem Archiv zu urteilen, gibt es hier einige die sich mit so etwas beschäftigen. Mein Vorhaben: Ich möchte die Lage eines frei beweglichen Systems im Raum (x, y und z) bestimmen. Da das System z.T. beschleunigt und abgebremst wird, sich auf Kurverbahnen bewegt und auch Erschütterungen und Vibrationen ausgesetzt ist, ist eine Lagebestimmung mit Beschleunigungssensoren allein nicht ausreichend. Mein Ansatz: Ich plane drei orthogonale Beschleunigungssensoren drei orthogonale Drehratensensoren (Gyros) und drei Orthogonale Magnetfeldsensoren (z.B.ADIS 16350 oder ADIS16405). Die Integration der Daten der Gyros sollten die drei aktuellen Neigungswinkel (bezogen auf den Beginn der Integration, Initialisierung) ergeben. Da diese wegen verschiedenen Dreckeffekten mit der Zeit wegdriften werden, wollte ich ständig die vektorielle Summe der drei Beschleunigungssensoren bestimmen. Wenn diese 1g entspricht ist das System entweder in Ruhe, in einer gleichförmigen, unbeschleunigten Bewegung oder auf einer Kurvenbahn die eine Zentrifugalkraft von genau 1g entspricht (z. B. Looping mit den entsprechenden Parametern). In den ersten beiden Fällen kann man aus den Werten der Beschleunigungssensoren durch einfache Vektorrechnung leicht bestimmen „wo unten ist“ und die (Weggedrifteten) Integrationswerte der Gyros korrigieren. Im letzten Fall sollte der so errechtete Wert „für unten“ extrem von den Winkeln der Gyros abweichen und so erkannt und verworfen werden können. Mein Problem: Es gibt zwei unterschiedliche Koordinatensysteme: Das der „richtigen Welt“ (z als Senkrechte zum Erdmittelpunkt) und das des Systems. Liegt das System in Ruhe vor mir auf dem Tisch entsprechen gleichnamige Achsen beider Koordinatensysteme einander. Kippe ich es nun um die x-Achse um 90° nach oben (sagen wir mal die x-Achse meines Schreibtisches geht von rechts nach links, die y-Achse von dem vor mir stehenden Bildschirm zu meinem Bauch , integriert das x-Gyro auf +90°. Drehe ich nun das vor mir aufgestellte System um 90° nach rechts (also um die z-Achse der Weltkoordinaten die jetzt der y-Achse meines Systems entspricht!) integriert das y-Gyro auf +90°! Kippe ich nun das System wieder um 90° nach rechts (d.h. -90° um die x-Achse des Systems 90° um die y-Achse der Welt!) integriert das x-Gyro zurück auf 0°. Das System liegt wieder flach auf dem Tisch, nur um 90° um die z-Achse des Welt-Koordinatensystems (Senkrechte) nach rechst gedreht (also x: 0°, y : 0°, z: +90°). Die Integrationswerte der Gyros stehen aber auf: x:0°, y: +90°, z:0°! Wie löst man das Problem? Ich habe leider trotz intensiver Suche auch bei Google nichts Brauchbares gefunden. Das liegt sich auch daran, dass ich mein Problem nicht in treffende Suchbegriffe fassen kann. Auch hier bin ich für Tipps dankbar. Man könnte jetzt in jedem Integrationsschritt eine Transformation der System-Achsen in das Welt-Koordinatensystem durchführen. Im obigen Beispiel wird dann die die y-Achse des Systems bei der ersten Drehung in die z-Achse der Welt (und umgekehrt) überführt. Eine spätere Drehung um die (System-)y-Achse integriert dann nicht (oder nur z.T.) den y-Wert sondern (oder z.T.) den z-Wert. Das ist aber bei mehreren duzend oder hundert Messwerten pro Sekunde ein erheblicher Aufwand, ganz zu Schweigen von dem (realistischen) Fall, dass Drehungen simultan um mehrere Achsen erfolgen. Ich freue mich auf die Diskussion… Beste Grüße Steffen