Frage

Ich habe ein Beschleunigungsmesser und Magnetometer jede Herstellung roh X, Y und Z Ablesungen. Von diesem Ich brauche die magnetische Richtung eines Objekts zu bestimmen.

Ich bin nicht so toll an trig, aber ich habe eine Formel zusammen, die reagiert ziemlich gut auf die Drehung des Gerätes, sondern reagiert auch auf Bewegung, dass man nicht denken, ist relevant, wie das Gerät Angeln in einer Weise, die keine Auswirkung auf die Richtung hat, wird darauf hingewiesen. Wie es flach und „Rollen“ das Gerät legen.

Ich denke, die Formel I für die magnetische Richtung der Berechnung ist in Ordnung, aber ich glaube, mein Nick- und Roll Radiant für die Eingabe ist falsch.

Also habe ich den Kern meiner Frage erraten (es sei denn, jemand tatsächlich eine Formel um, dass dies der Fall ist), ist, wie Sie Winkel zu berechnen, in Radiant, einen Beschleunigungsmesser für Nick- und Roll verwendet wird.

Dann zweitens, alle Infos auf der Überschrift Formel selbst wären toll.

War es hilfreich?

Lösung

Je nach Genauigkeit Ihre Anwendung erfordert, müssen Sie möglicherweise mehrere Probleme lösen:

  1. Sind die Beschleunigungs-Achsen kalibriert? Ich habe MEMs Beschleunigungsmessern, die Achsen gesehen hatten, die nicht zueinander senkrechten waren und hatten signifikant unterschiedliche Ansprecheigenschaften für jede Achse (typischerweise X und Y entsprechen würde, und Z unterscheiden würde). Sie müssen ideal XYZ-Achsen aus synthetisieren, was auch immer physikalischen Ihr Gerät bietet zu lesen. (Google 'Beschleunigungs-Kalibrierung').

  2. Sind kalibriert die Magnetometer Achsen? Ein ähnliches Problem wie oben, nur härter viel zu überprüfen: Es ist sehr schwierig einheitlich kalibriert Magnetfelder zu erzeugen. Wenn Sie die Umgebungs Erdmagnetfeld verwenden, müssen Sie sorgfältig den lokalen Magnetismus Ihrer Arbeitsumgebung und Ihre Werkzeuge steuern. (Google 'Magnetometer-Kalibrierung').

  3. Nach dem Beschleunigungsmesser und Magnetometer sind individuell kalibriert wurden, müssen ihre Achsen zueinander kalibriert relativ werden. Da beide Geräte in der Regel auf eine Leiterplatte gelötet werden, wird es fast sein, erhebliche Fehlausrichtung garantiert. In vielen Fällen können die Leiterplatten-Layout und Geräteparameter erlauben nicht einmal die XYZ-Achsen zu einander entsprechen! Dies kann der schwierigste Teil sein, von einem Labor Perspektive zu tun, so würde ich empfehle Sie einen direkten Vergleich mit anderer Hardware zu tun, die beiden Arten von Sensoren und ist bereits kalibriert (wie ein iPhone oder Android-Handy - aber überprüfen Sie das Gerät vor verwenden). Normalerweise wird dies erreicht, indem die beiden vorherigen Kalibrierungsmatrizen Einstellung, bis sie Vektoren erzeugt, die korrekt relativ zueinander ausgerichtet sind.

  4. Erst nachdem Sie generieren für beide Seiten kalibriert magnetischen und Beschleunigungsmesser Vektoren können Sie die Lösungen gelten die von den anderen Befragten vorgeschlagen.

Ich habe beschrieben nur die statische Lösung, bei der sowohl das Magnetometer und Beschleunigungsmesser sind bewegungslos relativ zu den lokalen Gravitations- und magnetischen Feldern. Wenn Sie Antworten in Echtzeit generieren müssen, während das System schnell bewegt, müssen Sie für das Zeitverhalten jeden Sensor berücksichtigen. Es gibt zwei grundlegende Möglichkeiten, dies zu tun: 1) Anwenden Zeitbereichsfilter für jeden Sensor, so dass ihre Ausgangssignale eine gemeinsame Zeitdomäne teilen (in der Regel eine gewisse Verzögerung hinzufügen). 2) Verwendung prädiktive Modellierung zu modifizieren, um die Sensorausgangssignale in Echtzeit (weniger Verzögerung, aber mehr Rauschen).

Ich habe für solche Anwendungen verwendeten Kalman Filter gesehen, aber sie in einer Vektor Domäne Anwendung erfordert Quaternionen anstelle von Euler Matrizen. Quaternionen sind einfacher rechnerisch zu verwenden (weniger Operationen benötigt, um Matrizen im Vergleich), aber ich fand sie sehr viel schwieriger zu sein Recht zu verstehen und erhalten.

Oder Sie können einen ganz anderen Weg wählen und Statistiken und Daten verwenden, passend für alle die oben genannten Arbeiten in einem großen Schritt zu tun. Betrachten Sie das Problem wie folgt: Gegeben 6 Eingabewerte (XYZ jeweils aus unkalibrierten Magnetometer und Beschleunigungsmesser) und einen Bezug auf das Gerät (vorausgesetzt, es wird von Hand gehalten, und es gibt einen Pfeil auf dem Gehäuse lackierte), Ausgang einen einziger Winkel repräsentiert die Magnetlager, auf das der Pfeil auf den Fall gerichtet ist, und die Höhe des Pfeils zu dem Schwerkraftvektor (Neigung der Fall) relativ.

eine kalibrierte Referenzvorrichtung (wie oben erwähnt), koppeln sie mit dem Gerät kalibriert werden, und nimmt ein mehr hundert Datenpunkte, wobei die Vorrichtung in unterschiedlichen Ausrichtungen. Verwenden Sie dann eine leistungsfähige mathematische Paket eine solche Matlab, MathCAD, R oder SciPy einzurichten und zu lösen, die nichtlinearen Gleichungen, die die Transformationsmatrizen zu erstellen.

Andere Tipps

Ich möchte darauf hinweisen Euler-Winkel und Rollen Pich Yaw .

Sie sind nicht genug, um Dimensionen zu denken. Dies würde die Antwort in nur zwei Dimensionen, und es funktioniert gut, wenn Sie einen Weg finden können „Z“ immer ausrichtet mit der Schwerkraft zu gewährleisten.

int heading=180-atan2(mag_datX, mag_datY)/0.0174532925; // 0/359=N, 90=E, 180=S, 270=W 

(wenn Sie lesen direkt das Gerät bilden - Vorsicht, dass es wahrscheinlich gibt X, Z, Y - nicht X, Y, Z)

Allerdings - dies ist kein Problem, Kompass 2D - stellen Sie sich die Nadel nehmen aus des Kompasses, es auszugleichen, so dass die Schwerkraft keine Rolle spielt darin „Niveau“ zu halten, und Sie werden feststellen, dass „Nord“ wird ein wenig nach oben oder unten zeigen -. je nachdem, wo auf der Erde Sie sind (! oder, wenn an dem Polen, direkt nach oben oder unten)

Sie müssen also die dreidimensionale Vektor von allen drei Werten versuchen und zu berechnen, -., Die eine Matrixoperation ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top