2009-07-26 17 views
16

Ich habe einen XYZ-Beschleunigungsmesser und Magnetometer. Jetzt möchte ich die Ausrichtung des Geräts mit beiden bestimmen. Das Problem, das ich sehe, ist, dass ich abhängig von der Ausrichtung des Geräts die Sensoren in unterschiedlicher Reihenfolge verwenden muss.So ermitteln Sie absolute Orientierung

Lassen Sie mich ein Beispiel geben. Wenn ich das Gerät mir zugewandt habe, dann können Veränderungen sowohl der Roll- als auch der Nicklage mit dem Beschleunigungsmesser festgestellt werden. Zum Gieren verwende ich das Magnetometer.

Aber wenn ich das Gerät horizontal setze (dh es um 90º drehen, zur Decke zeigend), wird jede Änderung des Aufwärtsvektors (jetzt horizontal) nicht bemerkt, da der Beschleunigungsmesser keine Änderung erkennt. Dies kann jetzt mit dem Magnetometer erkannt werden.

Die Frage ist also, wie man bestimmt, wann man das eine oder das andere verwendet. Reicht das mit beiden Sensoren oder brauche ich etwas anderes?

Dank

Antwort

1

Ich denke, die Frage „wie wenn man verwenden, um zu bestimmen oder die anderen“ fehlgeleitet ist. Sie sollten immer beide Sensoren zur Orientierung verwenden. Es gibt Fälle, in denen einer von ihnen nutzlos ist. Dies sind jedoch Randfälle.

+0

Danke. Es sieht so aus, als wäre mir die Frage nicht klar. Ich bin mir bewusst, dass ich sowohl Beschleuniger als auch Magnetometer in allen Fällen verwenden muss, das Problem ist, dass dies in einigen Fällen nicht genug zu sein scheint. –

+0

Lassen Sie mich wieder ein ähnliches Beispiel verwenden: Angenommen, ich habe ein Mobiltelefon vertikal, mit dem Bildschirm mir zugewandt, der "nach oben" -Vektor zeigt auf die Ceil.Immer wenn ich kippe, erlaubt mir der Beschleunigungsmesser, die "oben" -Vektorinformation zu erhalten. Das Problem ist, dass, wenn ich das Gerät kippe und es horizontal platziere (Bildschirm jetzt nach ceil und "up" -Vektor auf das Gegenteil von wo ich bin), dann wird der up-Vektor nicht mehr aktualisiert, wenn ich das Telefon rotiere horizontal auf dem Tisch. Dies wird jetzt vom Magnetometer eindeutig erkannt. Also, die Frage ist, wann man acc oder mag für jeden Fall verwenden soll? –

1

Wenn ich Sie richtig verstanden habe, benötigen Sie etwas, um Neigung (Neigung) und Ausrichtung nach den Himmelsrichtungen (Norden, Osten, Süden und Westen) zu erkennen.

Die Tonhöhe kann vom Beschleunigungssensor abgelesen werden.

Die Ausrichtung nach den Himmelsrichtungen kann von einem Kompass abgelesen werden.

Wenn Sie die Ausgabe dieser beiden Sensoren richtig mit der richtigen Mathematik in Ihrer Software kombinieren, erhalten Sie höchstwahrscheinlich die absolute Orientierung.

Ich denke, dass es so machbar ist.

Viel Glück.

17

Der Schlüssel ist, das Kreuzprodukt der zwei Vektoren, Schwerkraft und Magnetometer zu verwenden. Das Kreuzprodukt gibt einen neuen Vektor senkrecht zu beiden. Das heißt, es ist horizontal (senkrecht nach unten) und 90 Grad von Norden entfernt. Jetzt haben Sie drei orthogonale Vektoren, die die Orientierung definieren. Es ist ein wenig hässlich, weil sie nicht alle senkrecht sind, aber das ist leicht zu beheben. Wenn Sie dann diesen neuen Vektor zurück mit dem Gravitationsvektor kreuzen, der einen dritten Vektor senkrecht zum Schwerkraftvektor und dem Magnetenebenenvektor gibt. Jetzt haben Sie drei senkrechte Vektoren, die Ihr 3D-Orientierungskoordinatensystem definieren. Der ursprüngliche Beschleunigungsmesservektor (Gravitationsvektor) definiert Z (auf/ab), und die zwei Kreuzproduktvektoren definieren die Ost/West- und Nord/Süd-Komponenten der Orientierung.

+0

Ich dachte über das Gleiche nach und überquerte den Beschleunigungsmesser (Z) und das Magnetometer (magnetisches X), um Y zu erhalten, und kreuzte Z und Y, um lokales X zu erhalten. Ich frage mich, warum niemand das tut; Stattdessen scheint sich jeder auf die Neigungskompensation in der X/Y-Ebene zu verlassen. – sunside

+1

weil das so verdammt komplex ist und ihr darüber redet und uns nicht sagt, warum das ein Grund sein könnte. zeig uns Code. – SpaceDog

0

Für den Fall, dass Sie immer noch absolute Orientierung brauchen, können Sie diese Breakout-Board von Adafruit überprüfen: https://www.adafruit.com/products/2472. Das Schöne an diesem Board ist, dass es einen ARM Cortex-M0 Prozessor hat, um alle Berechnungen für Sie durchzuführen.

Verwandte Themen