Frage:
Umrechnung des dreiachsigen Magnetometers in Grad
Guilherme
2015-12-12 09:42:49 UTC
view on stackexchange narkive permalink

Ich weiß nicht, ob hier der beste Ort ist, um diese Frage zu stellen. Ich habe einen 9-DOF-Sensor (MPU 9150) und möchte sein Magnetometer verwenden, um den Drehwinkel von 0 bis 359 abzurufen Die Bibliothek gibt drei Werte zurück: x, y und z.

Ich weiß nicht, wie ich dies in einen einzelnen Wert umwandeln soll. Gibt es eine Möglichkeit, dies zu tun?

Es gibt Ihnen den Vektor, der entlang des lokalen Magnetfelds verläuft - idealerweise zeigt er auf den magnetischen Norden. Die Rotationsabbildung zwischen der Messung und dem magnetischen Norden sollte Ihnen Ihren Kurs geben.
Das Lesen des Datenblattes kann sehr aufschlussreich sein. Hast du es versucht?
@Majenko Ja, aber nichts wirklich Nützliches.
Drei antworten:
Edgar Bonet
2018-10-28 00:16:41 UTC
view on stackexchange narkive permalink

Die Antwort von Dave X,

  az = 90-atan (y / x) * 180 / pi  

, befindet sich rechts Spur. Es kann jedoch aus zwei Gründen nicht so funktionieren, wie es ist:

  1. Die Formel schlägt immer dann fehl, wenn x = 0,

  2. gleicher Azimut für x = y = 1 und für x = y = −1. Mit anderen Worten, es kann nicht zwischen Nordosten und Südwesten unterschieden werden.

  3. ol>

    Die Formel könnte durch Ersetzen von atan (y / x) festgelegt werden durch eine Funktion, die zurückgibt:

  • atan (y / x) wenn x> 0
  • π / 2 wenn x = 0 und y> 0
  • −π / 2 wenn x = 0 und y < 0
  • atan (y / x) + π wenn x < 0 und y ≥ 0
  • atan (y / x) - π wenn x < 0 und y < 0

Dies wäre im Wesentlichen eine "quadrantenbewusste" Version des Arkustangens mit zwei Argumenten, die zu (-π, π] anstelle von (- führt) π / 2, π / 2).

Glücklicherweise existiert eine solche Funktion bereits. Sie ist eine sehr standardmäßige Funktion der C-Bibliothek und heißt atan2 () . Somit ist die korrekte Formel ist

  az = 90 - atan2 (y, x) * 180 / M_PI;  

Nun, da atan (y / x) = π / 2 - atan (x / y) kann die obige Formel in

  az = atan2 (x, y) * 180 / M_PI;  

vereinfacht werden gibt die Richtung des (x, y) -Vektors an, der im Uhrzeigersinn von der y-Achse aus gezählt wird. Es ist wahrscheinlich, dass das OP stattdessen die Überschrift eines Fahrzeugs wissen möchte. Die richtige Formel hängt dann davon ab, wie das Magnetometer relativ zum Fahrzeug montiert wurde. Wenn wir annehmen, dass die x-Achse des Magnetometers nach vorne und die y-Achse nach links zeigt, dann:

  • fährt das Fahrzeug nach Norden (0 ° magnetischer Kurs), wenn die horizontale Komponente des Magnetfelds ist entlang + x
  • fährt das Fahrzeug nach Osten (90 ° magnetischer Kurs), wenn sich die horizontale Komponente des Magnetfelds entlang + y

befindet Fahrzeugkurs ist

  Kurs = atan2 (y, x) * 180 / M_PI;  

Offensichtlich muss die magnetische Deklination hinzugefügt werden, wenn man an der Überschrift true (statt magnetisch ) interessiert ist.

Dave X
2015-12-13 20:31:00 UTC
view on stackexchange narkive permalink

Dies ist ein grundlegendes mathematisches Problem.

  az = 90-atan (y / x) * 180 / pi  

"atan ()" ist arktangent und konvertiert von Koordinatenvariablen in Winkel im Bogenmaß, * 180 / pi konvertiert von Bogenmaß in Grad und 90- konvertiert von mathematischen Gradwinkeln (Grad CCW von der x-Achse) in Azimut (Grad CW von Norden).

Das Kalibrieren des Sensors ist ein schwierigeres Problem.

Anon Coward
2018-10-27 20:31:50 UTC
view on stackexchange narkive permalink

Sie müssen zuerst kalibrieren (entweder mit der Gerätekalibrierungsmethode oder durch Drehen in einem vollständigen Kreis, um die vollen Feldstärken zu ermitteln).

Sie können dann X, Y und Z verwenden Messwerte zur Berechnung der Position von "Norden" in Bezug auf die Richtung, in die Sie zeigen (wobei zu berücksichtigen ist, dass sich "Norden" je nach Standort auf der Erde um bis zu 30 Grad ändert (Deklination genannt - siehe http: // www .magnetic-decination.com /) und dass es auch nicht horizontal zum Boden ist (verwirrenderweise "Neigung" genannt - siehe https://physics.stackexchange.com/questions/283761/if- Wenn Sie sich das X, Y vorstellen, halten Sie eine Kompassnadel in der Vertikalen. Zeigen Sie nach unten oder nach oben. 283782)

, und Z-Werte bedeuten "wo auf einem imaginären Kreis die Richtung des Magnetismus ist - wo diese 3 Kreise auf 3 verschiedenen Ebenen liegen, können Sie die logische Position eines Vektors berechnen, der in 3 Dimensionen in Richtung magnetischer Norden zeigt.

Die schlechten Nachrichten - es gibt keinen einfachen Weg, w zu tun Was Sie genau wollen und definitiv nicht eines, das ohne Trigger-Mathematik bei allen drei Messwerten funktioniert (Sie können nicht einfach X und / oder Y allein verwenden).

Die guten Nachrichten - Sie tun es wahrscheinlich nicht. Es muss nicht wirklich eine tatsächliche "Überschrift" bekannt sein - die meisten Anwendungen benötigen nur eine lokale relative Richtung im Vergleich zu etwas, das Sie bereits kennen.

Beachten Sie, dass starke Magnete (wie sie in allen modernen Motoren vorhanden sind) ernsthaft in Konflikt geraten Messwerte aus großer Entfernung (sogar 10 oder mehr Fuß) - holen Sie sich eine App aus Ihrem Telefonladen, die die Messwerte Ihres Telefonmagnetometers anzeigt, und schwenken Sie einen Magneten herum, um dies leicht zu sehen!



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...