Berechnung des magnetischen Kurses mit rohen Beschleunigungsmessern und Magnetometerdaten

8

Ich habe einen Beschleunigungsmesser und ein Magnetometer, die jeweils X-, Y- und Z-Auslesungen erzeugen. Daraus muss ich den magnetischen Kurs eines Objekts bestimmen.

Ich bin bei trig nicht so toll, aber ich habe eine Formel zusammengestellt, die ziemlich gut auf die Rotation des Geräts reagiert, aber auch auf Bewegungen reagiert, die man für nicht relevant hält, wie zum Beispiel das Angeln des Geräts so dass es keinen Einfluss auf die Richtung gibt, in die es zeigt. So wie es flachlegen und das Gerät "rollen".

Ich denke, dass die Formel, die ich für die Berechnung des magnetischen Kurses habe, in Ordnung ist, aber ich denke, dass mein Pitch-and-Roll-Bogen für die Eingabe falsch ist.

Also ich denke der Kern meiner Frage (es sei denn, jemand hat tatsächlich eine Formel, die dies tut), wie berechnen Sie Winkel, im Bogenmaß, mit einem Beschleunigungsmesser für Pitch und Roll.

Dann wäre zweitens jede Information über die Kursformel selbst großartig.

    
M. Ryan 25.06.2010, 19:47
quelle

2 Antworten

2

Abhängig von der Genauigkeit, die Ihre Anwendung erfordert, müssen Sie möglicherweise mehrere Probleme lösen:

  1. Sind die Beschleunigungsmesserachsen kalibriert? Ich habe MEMs Beschleunigungsmesser gesehen, die Achsen hatten, die nicht senkrecht zueinander standen, und hatten signifikant unterschiedliche Ansprechcharakteristiken für jede Achse (typischerweise würden X und Y übereinstimmen und Z würde sich unterscheiden). Sie müssen ideale XYZ-Achsen synthetisieren, unabhängig davon, welche physischen Lesungen Ihr Gerät bietet. (Google 'Beschleunigungsmesser Kalibrierung'.)

  2. Sind die Magnetometerachsen kalibriert? Ähnliches Problem wie oben, außer viel schwieriger zu überprüfen: Es ist sehr schwierig, einheitliche kalibrierte Magnetfelder zu erzeugen. Wenn Sie das umgebende Erdmagnetfeld verwenden, müssen Sie den lokalen Magnetismus Ihrer Arbeitsumgebung und Ihrer Werkzeuge sorgfältig kontrollieren. (Google 'Magnetometer-Kalibrierung'.)

  3. Nachdem der Beschleunigungssensor und das Magnetometer einzeln kalibriert wurden, müssen ihre Achsen relativ zueinander kalibriert werden. Da beide dieser Vorrichtungen typischerweise an eine PCB gelötet sind, ist fast garantiert, dass eine signifikante Fehlausrichtung vorliegt. In vielen Fällen erlauben das Platinenlayout und die Geräteparameter nicht einmal, dass die XYZ-Achsen miteinander übereinstimmen! Dies ist unter Laborbedingungen möglicherweise die schwierigste Aufgabe. Daher würde ich Ihnen einen direkten Vergleich mit anderer Hardware empfehlen, die beide Arten von Sensoren enthält und bereits kalibriert ist (z. B. ein iPhone oder ein Android-Telefon) benutzen). Normalerweise wird dies erreicht, indem die zwei vorherigen Kalibrierungsmatrizen angepasst werden, bis sie Vektoren erzeugen, die korrekt zueinander ausgerichtet sind.

  4. Erst nachdem Sie gegenseitig kalibrierte Magnet- und Beschleunigungsmesser-Vektoren erstellt haben, können Sie die von den anderen Befragten vorgeschlagenen Lösungen anwenden.

Ich habe nur die statische Lösung beschrieben, bei der sowohl das Magnetometer als auch der Beschleunigungsmesser relativ zu den lokalen Gravitations- und Magnetfeldern bewegungslos sind. Wenn Sie Reaktionen in Echtzeit generieren müssen, während sich das System schnell bewegt, müssen Sie das Zeitverhalten jedes Sensors berücksichtigen. Es gibt zwei grundlegende Möglichkeiten, dies zu tun: 1) Anwenden von Zeitbereichsfiltern auf jeden Sensor, so dass ihre Ausgänge eine gemeinsame Zeitdomäne teilen (im Allgemeinen eine gewisse Verzögerung hinzufügend). 2) Verwenden Sie Predictive Modeling, um die Sensorausgänge in Echtzeit zu modifizieren (weniger Verzögerung, aber mehr Rauschen).

Ich habe Kalman-Filter gesehen, die für solche Anwendungen verwendet werden, aber die Anwendung in einer Vektor-Domäne kann die Verwendung von Quaternionen anstelle von Euler-Matrizen erfordern. Quaternionen sind einfacher zu verwenden (weniger Operationen im Vergleich zu Matrizen), aber ich fand sie viel schwieriger zu verstehen und richtig zu machen.

Oder Sie wählen einen völlig anderen Pfad und verwenden Statistiken und Daten, um alle oben genannten Arbeiten in einem einzigen Schritt auszuführen. Betrachten Sie das Problem wie folgt: Gegeben 6 eingegebene Werte (XYZ jeder von unkalibriertem Magnetometer und Beschleunigungsmesser) und eine Referenz auf das Gerät (vorausgesetzt, es ist in der Hand, und es gibt einen Pfeil auf dem Gehäuse gemalt), geben Sie einen einzigen Winkel, der die darstellt Magnetlager, auf das der Pfeil auf dem Gehäuse zeigt, und die Elevation des Pfeils relativ zum Gravitationsvektor (Neigung des Gehäuses).

Verwenden Sie ein kalibriertes Referenzgerät (wie oben erwähnt), paaren Sie es mit dem zu kalibrierenden Gerät und nehmen Sie einige hundert Datenpunkte mit dem Gerät in verschiedenen Orientierungen. Verwenden Sie dann ein leistungsfähiges Mathe-Paket wie Matlab, MathCAD, R oder SciPy, um die nichtlinearen Gleichungen zu erstellen und zu lösen, um die Transformationsmatrizen zu erstellen.

    
BobC 30.08.2010, 06:14
quelle
0

Ich würde auf Euler-Winkel und Rollen Pich Yaw .

    
ja72 18.08.2010 17:22
quelle