Tilt Kompensation für einen Kompass (HMC5883L)

OP #3809260
Lesenswert?

Hallo,

Ich weiß, dass diese Frage schon oft gestellt wurde, aber ich habe nach 
einigen Suche bis jetzt nichts gefunden.
(Ich habe auch schon einige Formeln, welche ich im Internet gefunden 
habe getestet. Leider hat keine bisher funktioniert.)

Ich baue eine Quadrokopter.
Ich verwende einen Gyro und eine Beschleunigungssensor um Roll (X) und 
Pitch (Y) zu erhalten.
Nun möchte ich auch Yaw (Z) erhalten. Darum brauche ich zuerst einmal 
einen Winkel vom Kompass, damit ich diesen anschließend mit dem Gyro 
vereinigen kann.
Ich habe schon ein Programm geschrieben mit welchen ich den Winkel aus 
den Raw - Daten des Kompasses berechnen kann.
Ich verwende dafür die Formel: winkel = atan2(y,x)
Jedoch habe ich nun das Problem, dass der Kompass keinen sinnvollen 
Winkel liefert, wenn ich in nicht gerade halte. (Was logischer weiß bei 
einem Quadrokopter sehr oft der Fall ist.)

Weiß jemand Formeln, mit welchen ich mittels Roll und Pitch und den Raw 
Daten (x y z) des Kompasses den richtigen Yaw Winkel erhalte?

Danke für eure Hilfe
Marcel
OP #3809331
Lesenswert?

Ich wollte den Kompass verwenden um dessen Winkel mit den Winkel des 
Gyro's zu verbinden. (Da der Gyro über die Zeit auch fehlerhaft wird.)
Aber nach meinen Wissen ist es nicht möglich aus den Daten des ACC den Z 
Winkel zu berechnen bzw. ich habe nie dafür eine passende Formel 
gefunden.
Gast #3809343
Lesenswert?

Was du da machen willst - nennt man Sensorfusion. Und das ist alles 
andere als einfach und mit ein paar Formeln erledigt. Du solltest dir 
vorhandene Projekte anschauen und abkupfern.

Gruß Jonas
#3809578
Lesenswert?

http://cache.freescale.com/files/sensors/doc/app_note/AN4248.pdf

Funktioniert bei mir aber leider nicht wie gewünscht, ich bin nicht 
sicher woran es liegt. Die Formeln habe ich grob nachgerechnet, das 
scheint zu stimmen -- vielleicht ist an meiner Kalibration was falsch. 
Sag' Bescheid, wenn es bei dir geht, würde mich interessieren!

Natürlich ist es nicht möglich aus den Daten des Beschleunigungssensors 
den z-Winkel zu berechnen, denn welche physikalische Gegebenheit soll 
denn dafür sorgen, dass das Ding merkt in welche Richtung es gedreht 
ist. Ist doch alles komplett symmetrisch um diese Achse.
Gast #3809642
Lesenswert?

Marcel D. V. schrieb:
> (Ich habe auch schon einige Formeln, welche ich im Internet gefunden
> habe getestet. Leider hat keine bisher funktioniert.)

In welchem Bereich? Bei uns ist das Erdmagnetfeld schon rund 45 Grad 
geneigt, da gibt es also Orientierungen, in denen das Feld senkrecht 
durch den Sensor geht und also keine Richtung gemessen werden kann, 
ungenau wird sie natürlich schon lange vorher. Ergo braucht man mehr als 
einen Magnetfeldsensor.

Georg
#3809682
Lesenswert?

Georg schrieb:
> In welchem Bereich? Bei uns ist das Erdmagnetfeld schon rund 45 Grad
> geneigt, da gibt es also Orientierungen, in denen das Feld senkrecht
> durch den Sensor geht und also keine Richtung gemessen werden kann,
Man braucht für diesen Zweck ohnehin einen 3-Achsen-Magnetfeldsensor 
und einen 3-Achsen-Beschleunigungssensor, und dann sollte das in jeder 
Orientierung funktionieren -- egal wie das Feld durch den Sensor geht.

> Also wenn ich dich richtig verstehe funktioniert halt der Kompass
> schlecht/gar nicht, wenn er leicht gekippt ist. Was willst du denn da
> rechnen, wenn er nicht funktioniert. Das ist halt bei einem Kompass so
> Prinzipbedingt.
Wenn du einen Beschleunigungssensor hast, kannst du die Kippung 
rausrechnen.
Gast #3809683
Lesenswert?

uwe schrieb:
> Deshal werden solche sachen schon immer kKardanisch
> aufgehängt.

Quatsch. Man braucht einen magnetischen Sensor mit 3 Achsen und einen 
Lagesensor mit ebenfalls 3 Achsen, dann lässt sich die waagrechte 
Komponente des Magnetfelds, vulgo die Himmelsrichtung, eindeutig 
bestimmen.

Georg
Gast #3809684
Lesenswert?

uwe schrieb:
> Also wenn ich dich richtig verstehe funktioniert halt der Kompass
> schlecht/gar nicht, wenn er leicht gekippt ist.

Das funktioniert sehr wohl, wenn man die Daten verschiedener Sensoren 
(mit jeweils 3 Achsen) kombiniert. Genau darum geht es hier ja ...
OP #3809727
Lesenswert?

Also ich habe einen 3 Achsen Gyro, ein 3 Achsen Beschleunigungssensor 
und einen 3 Achsen Kompass.

Und wie kann ich nun mit den Beschleunigungssensor bzw. Gyro die Neigung 
des Kompasses ausbessern?

Und wenn ich den Kompass auf dem Tisch im Kreis drehe ändert sich der 
Winkel genau so, wie er sich ändern soll.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren