Hallo, ich lese einen Magnetometer aus. Auflösung ist 16Bit. Measurementrange = +-1200µT Die Werte die ich auslese sehen in etwa so aus: X -576 Y -1012 Z -410 daraus möchte ich das heading berechnen. Ohne Tilt kompensation sollte es so aussehen: float heading = atan2( Y,X); heading = heading * 180.0 / M_PI; Wie müssen die ausgelesenen Werte umgerechnet werden, bevor diese mit atan2 berechnet werden können? Gruß
Josef schrieb: > Wie müssen die ausgelesenen Werte umgerechnet werden, bevor diese mit > atan2 berechnet werden können? Gar nicht. atan2 normiert sich die selber auf einen Vektor der Einheitslänge.
Wenn ich das aus deinen Rohwerten richtig schließe hast du die "Hard-Iron" noch nicht kompensiert hast und/oder keinene Offsetkorrektur gemacht. Das solltest du natürlich machen bevor du anfängst irgendwelche Winkel zu berechnen. Am einfachsten geht es so: 1. Min und Max einer jeden Achse erfassen (Magnetsensor in alle Richtungen drehen bis min und max einer jeden Achse sich nicht mehr ändert) 2. Offset_Achse = (mag_max_achse - mag_min_achse)/2+mag_min_achse (je nach Sensor kann es auch bereits im Chip integriert sein)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.