Forum: Mikrocontroller und Digitale Elektronik Orientierungsbestimmung mit IMU


von Tobi C. (tobicon)


Lesenswert?

Hallo zusammen,

ich möchte in meinem Projekt mit einem IMU die Orientierung bestimmen.
Dafür verwende ich den LSM9DS0 Sensor.
Dieser liefert mir Beschleunigungs-, Gyroskop- und Magnet/Compasswerte..
Desweiteren werden die Euler Winkel berechnet womit ich eine 
Orientierungsänderung erkenne.
Ich möchte nun zu Beginn meiner Messung die absolute Orientierung mit 
Bezug auf das Erdkoordinatensystem bestimmen und die weiteren Werte dann 
in Relation dazu berechnen.
Jetzt ist die Frage: Wie bekomme ich diese absolute Position?
Wie kann ich aus den Magnetwerten die Orientierung bezüglich 
Himmelsrichtung erhalten?

Ich hoffe ihr könnt mir helfen:)

von Frankl (Gast)


Lesenswert?

GPS

von Tobi C. (tobicon)


Lesenswert?

Ein GPS System habe ich leider nicht zur Verfügung, es sollte 
ausschließlich mit IMUs funktionieren, da es auch indoor nutzbar sein 
sollte...

von Mirko W. (Gast)


Lesenswert?

Ich verstehe nicht ganz das Problem. Willst du sozusagen die 
Magnetometerwerte in "Kompasswerte" umrechnen?

von Horst (Gast)


Lesenswert?

Na ja, in NS-Richtung gibt es wohl ein Maximum
der Komponenten, oder ?

von Timmo H. (masterfx)


Lesenswert?


: Bearbeitet durch User
von Tobi C. (tobicon)


Lesenswert?

Mirko W. schrieb:
> Ich verstehe nicht ganz das Problem. Willst du sozusagen die
> Magnetometerwerte in "Kompasswerte" umrechnen?

Ich möchte im Prinzip Zu Beginn der Messung eine "Anfangsposition" 
bestimmen, auf die dann alle Werte bezogen werden.

Vielleicht zum Verständnis ein Beispiel:
Die Sensoren sind mit einekm Gurt an meiner Stirn befestigt. Ich stehe 
ruhig und schaue z.B. in Richtung Norden. Dann setze ich mein Yaw Winkel 
auf 0 und wenn ich jetzt gerade aus laufe bleibt der Yaw winkel bei 0, 
wenn ich mich drehe zeigt der yaw winkel z.B. 90° an. Das funktioniert 
auch alles schon. ich möchte eben nun die Orientierung der 
Anfangsposition erhalten/messen (bezogen aufs Erdkoordinatensystem)

Im Prinzip soll einfahc nur die Richtung bestimmt werden, in die ich am 
Anfang der Messung schaue..

: Bearbeitet durch User
von Tobi C. (tobicon)


Angehängte Dateien:

Lesenswert?

Zur Verdeutlichung ein kleines Bild. Der Sensor ist so wie auf dem Bild 
angeordnet, entscheident is der Yaw Winkel...Drehe ich den Sensor um die 
Z-Achse(Yaw), ändern sich die Magnetwerte von X und Y... kann ich daraus 
die Orientierung bestimmen?
Es ist vielleicht anzumerken dass der Sensor normal auf der großen Seite 
liegt, jedoch is es für die Anbringung am Körper sinnvoller ihn um 90° 
zu kippen

von 6a66 (Gast)


Lesenswert?

Tobi C. schrieb:
> (bezogen aufs Erdkoordinatensystem)

Was hälst Du von manueller Eingabe eines Wertes?
Den Wert bekommst Du aus Google.
Ansonsten fällt mir nur GPS ein.

BTW: die Fehler werden sich aufsummieren wenn Du nicht gelegentlich neue 
Absolutwerte angibst.

rgds

von micha (Gast)


Lesenswert?

Hm, was willst Du denn? Suchst du eine absolute oder relative Position? 
Am Anfang ist die relative nun mal "0" und dann musst Du die Sensorwerte 
(mit ihren Fehlern und ihrer Drift) über die Zeit aufintegrieren. Die 
Absolute Position ergibt sich dann durch ein Offset ;-) Aber das 
funktioniert alles wahrscheinlich nur theoretisch oder für eine kurze 
Zeit, da die Ungenauigkeit und Drift dazukommt. In der Realität muss man 
immer wieder koppeln (GPS, bekannte Marken)

von Tobi C. (tobicon)


Lesenswert?

6a66 schrieb:
> Was hälst Du von manueller Eingabe eines Wertes?
> Den Wert bekommst Du aus Google.
> Ansonsten fällt mir nur GPS ein.
>
> BTW: die Fehler werden sich aufsummieren wenn Du nicht gelegentlich neue
> Absolutwerte angibst.
>
> rgds

Das Problem ist dass es kein Internet dabei gibt, wirklich rein mit 
IMUs..

Die Fehler werden denk ich kein großes Problem... Es sollen nur kurze 
messung (5-20s) gemacht werden und dabei nur einfache Bewegungsabläufe..
z.B. 3m geradeaus laufen und dann drehen und 4m nach rechts oder so, 
wirklich nichts kompliertes.. es muss eben nur die richtung für die 
ersten meter geradeaus bestimmt werden

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Tobi C. schrieb:
> Magnetwerte von X und Y... kann ich daraus
> die Orientierung bestimmen?

Suchst Du den "Arkustangens"?

von Tobi C. (tobicon)


Lesenswert?

micha schrieb:
> Hm, was willst Du denn? Suchst du eine absolute oder relative Position?
> Am Anfang ist die relative nun mal "0" und dann musst Du die Sensorwerte
> (mit ihren Fehlern und ihrer Drift) über die Zeit aufintegrieren. Die
> Absolute Position ergibt sich dann durch ein Offset ;-) Aber das
> funktioniert alles wahrscheinlich nur theoretisch oder für eine kurze
> Zeit, da die Ungenauigkeit und Drift dazukommt. In der Realität muss man
> immer wieder koppeln (GPS, bekannte Marken)

Genau das ist es, relativ gesehen ist die Anfangsposition für pitch roll 
und yaw 0.. auf diese werden dann alle werte bezogen. funktioniert auch 
alles super. nur möchte ich eben wissen wie dieses Anfangsposition zum 
Erdkoordinatensystem liegt.

Ja es werden nur Messungen im Sekundenbreich durchgeführt, und auch nur 
einfache Abläufe...

GPS gibt doch eigentlich nur die Position an und nicht die Orientierung, 
oder liege ich da falsch?

von hp-freund (Gast)


Lesenswert?

https://www.youtube.com/watch?v=HHJEaB1iS30

Unten gibts sogar das Prog dazu...

von Tobi C. (tobicon)


Lesenswert?

Torsten C. schrieb:
> Tobi C. schrieb:
>> Magnetwerte von X und Y... kann ich daraus
>> die Orientierung bestimmen?
>
> Suchst Du den "Arkustangens"?

Kann ich mit dem die orientierung bestimmen?

z.B habe ich Mag X: -30µT und Mag Y: -10µT, kann ich damit Berechnen in 
welche Himmelsrichtung der Sensor liegt?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Tobi C. schrieb:
> kann ich damit Berechnen in
> welche Himmelsrichtung der Sensor liegt?

Genau. Entweder musst Du mit "if / else" noch die Vorzeichen auswerten 
oder Du benutzt "atan2()":

http://www.cplusplus.com/reference/cmath/atan2/

von hp-freund (Gast)


Lesenswert?

Hier noch der link zum code vom video oben:

http://g6ejd.redirectme.net/computing/COMPASS_display.htm

Alles entscheidende spielt sich in der loop ab.
Das es ein anderer Sensor ist muss vermutlich das Auslesen der XYZ Werte 
angepasst werden.

von micha (Gast)


Lesenswert?

Torsten C. schrieb:
> Genau. Entweder musst Du mit "if / else" noch die Vorzeichen auswerten
> oder Du benutzt "atan2()":
>
> http://www.cplusplus.com/reference/cmath/atan2/

und dabei beachten, dass das mathematische Koordinatensystem und das 
"geographische" nicht übereinstimmen. Am einfachsten vertauscht man IMHO 
die X und Y Koordinaten im atan2 ;-)

von Pit S. (pitschu)


Lesenswert?

Wenn das Teil waagerecht liegt, sollten die X+Y Accels 0 liefern und der 
Z-Accel 1.0g (Erdbeschleunigung). Für die Drehachse um Z musst du einmal 
den Kompass mit einem 'echten Kompass' auf Norden kalibrieren und die 
Meswerte irgendwo abspeichern (EEPROM). Dannach kannst du nach dem 
einschalten immer ziemlich genau die Anfangsorientierung bestimmen.

von Tobi C. (tobicon)


Lesenswert?

Peter S. schrieb:
> Wenn das Teil waagerecht liegt, sollten die X+Y Accels 0 liefern und der
> Z-Accel 1.0g (Erdbeschleunigung). Für die Drehachse um Z musst du einmal
> den Kompass mit einem 'echten Kompass' auf Norden kalibrieren und die
> Meswerte irgendwo abspeichern (EEPROM). Dannach kannst du nach dem
> einschalten immer ziemlich genau die Anfangsorientierung bestimmen.

Der Sensor sollte aber so liegen das Accel X 1g ist und Y- und Z-Accel 0 
ist, quasi um 90 grad gedreht...
Ich werde dann wohl mal eure Antworten auswerten und eine rückmeldung 
geben:)
Danke

von Tobi C. (tobicon)


Lesenswert?

hp-freund schrieb:
> Hier noch der link zum code vom video oben:
>
> http://g6ejd.redirectme.net/computing/COMPASS_display.htm
>
> Alles entscheidende spielt sich in der loop ab.
> Das es ein anderer Sensor ist muss vermutlich das Auslesen der XYZ Werte
> angepasst werden.

Der Sensor sollte ziemlich ähnlich sein, nur dass der mein Sensor noch 
ein Gyroskop hat..
Im Prinzip brauche ich eine Funktion mit den Inputs Accelerometer und 
Magnetometer und als Output die Himmelsrichtung ( Wie auf dem Kompass 
Angezeigt z.B. 30° Nord). Das kann gerne auch offline passieren, da die 
Daten erst nach der Messung ausgewertet werden.

Das wird dann wohl diese Funktion sein:

angle= atan2((double)y + y_offset,(double)x + x_offset)* (180 / 
3.141592654) + 180;

Aber woher kommen die offset werte?

: Bearbeitet durch User
von hp-freund (Gast)


Lesenswert?

Tobi C. schrieb:
> Aber woher kommen die offset werte?

Das dürften die Korrekturwerte der Achsen bei der Nord-Orientierung 
sein.
Also erste Messung mit offset=0 und dann die ermittelten Werte (-) 
eintragen.

von Tobi C. (tobicon)


Lesenswert?

hp-freund schrieb:
> Tobi C. schrieb:
>> Aber woher kommen die offset werte?
>
> Das dürften die Korrekturwerte der Achsen bei der Nord-Orientierung
> sein.
> Also erste Messung mit offset=0 und dann die ermittelten Werte (-)
> eintragen.

Das heißt:
1. Ich richte den Sensor nach Norden aus und Messe die Werte?
Diese werden dann als Offset angenommen
2. ich implementiere die oben genannte Funktion und Berechne somit den 
Winkel

Welche Werte nehme ich dafür? Die Magnetwerte? Einheiten dürften dann ja 
aufgrund des Bruchstriches egal sein oder? (Magnetwerte sind in µT 
gemessen)

von hp-freund (Gast)


Lesenswert?

1. den Betrag der Werte -> positive als offset abziehen
2. ja

der Sensor gibt nur mag Werte, also diese in die Gleichung einsetzen.
Der Faktor ergibt sich nach der Konfiguration. Lässt sich aber auch 
leicht mit einer 90° oder 180° Drehung kontrollieren.

von Tobi C. (tobicon)


Lesenswert?

hp-freund schrieb:
> 1. den Betrag der Werte -> positive als offset abziehen
> 2. ja
>
> der Sensor gibt nur mag Werte, also diese in die Gleichung einsetzen.
> Der Faktor ergibt sich nach der Konfiguration. Lässt sich aber auch
> leicht mit einer 90° oder 180° Drehung kontrollieren.

Wieso nur den Betrag?

Meinst du es reicht den sensor bei der ersten Messung nach einem 
smartphone kompass auszurichten oder ist das zu ungenau?

Und wie soll ich ihn ausrichten? Quasi dass die Achse die von der stirn 
gerade nach vorne zeigt richtung Norden zeigt?

Man muss immer n bisschen umdenken weil ich den sensor ja um 90° gekippt 
verwende:D

von Timmo H. (masterfx)


Lesenswert?

Tobi C. schrieb:
> Das heißt:
> 1. Ich richte den Sensor nach Norden aus und Messe die Werte?
> Diese werden dann als Offset angenommen
Nein, du musst für jede Achse den Min und Max wert bestimmen. Also 
Messung starten und den Sensor in alle erdenklichen Richtungen 360° 
drehen. Die Min und Max werte addierst du und das teilst du durch 2.

Also

X_mag_offset = (X_mag_min + X_mag_max)/2
X_mag_compensated = X_mag_raw - X_mag_offset.

von Tobi C. (tobicon)


Lesenswert?

Timmo H. schrieb:
> Tobi C. schrieb:
>> Das heißt:
>> 1. Ich richte den Sensor nach Norden aus und Messe die Werte?
>> Diese werden dann als Offset angenommen
> Nein, du musst für jede Achse den Min und Max wert bestimmen. Also
> Messung starten und den Sensor in alle erdenklichen Richtungen 360°
> drehen. Die Min und Max werte addierst du und das teilst du durch 2.
>
> Also
>
> X_mag_offset = (X_mag_min + X_mag_max)/2
> X_mag_compensated = X_mag_raw - X_mag_offset.

Und dann:
angle= atan2((double)X_mag_compensated ,(double)Y_mag_compensated )* 
(180 / M_PI) + 180;

oder wie?

Das Min/Max bestimmen hört sich nicht sooo genau an... Ich drehe in 
quasi um alle 3 Achsen jeweils um 360° und schreib mir die Werte auf, 
wie oft muss ich das denn dann machen?
Sorry für die dummen fragen...

von hp-freund (Gast)


Lesenswert?

https://www.youtube.com/results?search_query=LSM9DS0+calibraton

Schau dir erst mal die videos für deinen chip an.
Das erklärt sicher schon einiges.

von Karl H. (kbuchegg)


Lesenswert?

Tobi C. schrieb:

> Das Min/Max bestimmen hört sich nicht sooo genau an... Ich drehe in
> quasi um alle 3 Achsen jeweils um 360°

aber nicht gleichzeitig!

eine Achse nach der anderen!

> und schreib mir die Werte auf,
> wie oft muss ich das denn dann machen?

So oft bis du einigermassen reproduzierbare Werte hast.

WEnn beim Drehen um die Z Achse der X-Wert zwischen +300 und -200 
schwankt, dann hast du offenbar einen Offset im Sensor von +50. Denn da 
sich die äusseren Einflüsse ja nicht ändern, sollte ein idealer Sensor 
ja beim Drehen denselben Wert rauskriegen, wenn seine Messachse in 
Richtung der Quelle zeigt und wenn sie von ihm wegzeigt. EIn Messer wird 
ja auch nicht kürzer, wenn es auf dem Tisch liegt und du es um 180° 
drehst. Genau das sagen dir aber deine Messwerte: in der einen Richtung 
misst der Sensor +300 und wenn du das Messer (samt Sensor) um 180° 
drehst, dann misst er -200. Das - ist klar, schliesslich hast du um 180° 
gedreht. Aber die Zahlenwerte stimmen nicht überein. Eigentlich hätte er 
in der einen Richtung +250 ausgeben sollen und nach einer Drehung um 
180° hätte das Ergebnis -250 lauten sollen. D.h. wenn der Sensor 
eigentlich 0 messen sollte, misst er nicht 0, sondern +50. Und diese 
ziehst du in weiterer Folge dann immer von deinen Messwerten ab, da hier 
ganz offensichtlich der Sensor einen Offsetfehler von +50 hat.
Wenn der Sensor also einen Messwert von +300 auswirft, dann sind das in 
Wirklichkeit +250. Und wenn er -200 auswirft, dann sind das in 
Wirklichkeit -250. Drehst du nach dieser Korrektur den Sensor erneut, 
dann zeigt er bei einer Drehung um 180° denselben Zahlenwert, aber mit 
umgekehrten Vorzeichen an. Genau so wie es sein soll. Zeigt er zb (nach 
Korrektur) +78 und drehst du den Sensor um 180°, dann müssten -78 am 
Display stehen.



> Sorry für die dummen fragen...

Schön langsam wirds allerdings wirklich Zeit, dass du selber auch mal 
ein bisschen mitdenkst und dir nicht alles vorkauen lässt. Dein Projekt 
klingt eigentlich recht anspruchsvoll. Im Gegensatz dazu bist du 
ziemlich blauäugig unterwegs.
Recht viel mehr als ein bischen Hausverstand und Grundkentnisse in 
Trigonometrie aus der Schule braucht man dazu nicht. (im 2D, im 3D wirds 
ein wenig schwieriger.) Und natürlich muss man sich mal von der 
Vorstellung lösen, dass alle Sensoren immer absolut und immer 100% genau 
sind und ideale Messwerte liefern. Das wird in der Theorie (im 
Physikunterricht) so vermittelt, hat aber nichts mit der Realität zu 
tun.

: Bearbeitet durch User
von Tobi C. (tobicon)


Lesenswert?

hp-freund schrieb:
> https://www.youtube.com/results?search_query=LSM9DS0+calibraton
>
> Schau dir erst mal die videos für deinen chip an.
> Das erklärt sicher schon einiges.

So wirklich gute Videos wie für den LSM303 gibts dort irgendwie garnicht 
so.. Ich denke der Code aus dem anderen Video wird auch schon der 
richtige Weg sein... Nur die Offsetwerte erhalten seh ich noch als 
Problem...

von Tobi C. (tobicon)


Lesenswert?

Karl H. schrieb:
> Schön langsam wirds allerdings wirklich Zeit, dass du selber auch mal
> ein bisschen mitdenkst und dir nicht alles vorkauen lässt. Dein Projekt
> klingt eigentlich recht anspruchsvoll. Im Gegensatz dazu bist du
> ziemlich blauäugig unterwegs.

Ich werde mir das ganze jetzt nochmal in Ruhe durchlesen und testen... 
Aber es sollte ja nicht soo schwer sein einen Kompass zu bauen...

von Karl H. (kbuchegg)


Lesenswert?

Tobi C. schrieb:

> Ich werde mir das ganze jetzt nochmal in Ruhe durchlesen und testen...
> Aber es sollte ja nicht soo schwer sein einen Kompass zu bauen...

Ist es auch nicht. Zumindest nicht auf diesem Niveau.

Nur musst du dich halt mal von der Vorstellung lösen, dass dir dein 
Sensor ideale Messwerte rauswirft, die du nur noch aufs Display geben 
brauchst.

Was es mit dem Offset auf sich hat, hätte dir allerdings auch auffallen 
müssen, wenn du dir den X Wert einfach mal ausgeben lässt, den Sensor am 
Tisch liegen hast und dann den Sensor einfach mal am Tisch liegend 
drehst. Dann muss dir das auffallen, dass er in den absoluten 
Maximalwerten mgl. bei 180° unterschiedliche Werte bringt.

Ich finds immer wieder erstaunlich, dass Leute Projekte bauen, und nie 
mit ihren Bauteilen im Vorfeld "gespielt" haben um rauszufinden, wie sie 
sich verhalten und wie die Werte aussehen, die sie zb von Sensoren 
kriegen.

: Bearbeitet durch User
von Tobi C. (tobicon)


Angehängte Dateien:

Lesenswert?

Eine Frage wäre da allerdings noch:
Ich habe jetzt mal die Offsetmessung für jede Achse durchgeführt...
Jetzt erhalte ich aber pro Achse 2 Offset Werte, müssen die noch 
miteinader verrechnet werden oder tausch ich die einfach je nach 
Orientierung aus?

Die Messung habe ich auch mal angehängt...
Ich denke die Ungenauigkeiten bei der Werte der Drehachse kommen von den 
Sensorungenauigkeiten und von meiner Bewegung?

von Karl H. (kbuchegg)


Lesenswert?

Tobi C. schrieb:
> Eine Frage wäre da allerdings noch:
> Ich habe jetzt mal die Offsetmessung für jede Achse durchgeführt...
> Jetzt erhalte ich aber pro Achse 2 Offset Werte,

Ich würd den jeweils betragsmässig grösseren nehmen.

Was du hier siehst, dass ist das das Erdmagnetfeld nicht parallel zu 
deinem Sensor (und wenn der am Tisch liegt damit nicht horizontal) 
verläuft, sondern geneigt ist.
Idealerweise würdest du eine schiefe Ebene so anpassen, dass sich der 
Wert in der Achse, um die du drehst, nicht ändert. Diese schiefe Ebene 
liegt dann in der Ebene der Magnetfeldlinien an deinem Ort.
Aber: so genau braucht das für einen Wald und Wiesen Kompass dann auch 
wieder nicht sein. Denn in der Praxis hast du sowieso je nach Umgebung 
noch Missweisungen. Magnetfelder, hervorgerufen durch Metalle, 
Elektromotore, Kabel in der Wand, etc. die sich mit dem Erdmagnetfeld 
überlagern. D.h. der Wert, den dein Kompass dann letzten Endes ergibt 
ist sowieso fehlerbehaftet.

: Bearbeitet durch User
von Tobi C. (tobicon)


Lesenswert?

Karl H. schrieb:
> Ich würd den jeweils betragsmässig grösseren nehmen.
>
> Was du hier siehst, dass ist das das Erdmagnetfeld nicht parallel zu
> deinem Sensor (und wenn der am Tisch liegt damit nicht horizontal)
> verläuft, sondern geneigt ist.
> Idealerweise würdest du eine schiefe Ebene so anpassen, dass sich der
> Wert in der Achse, um die du drehst, nicht ändert. Diese schiefe Ebene
> liegt dann in der Ebene der Magnetfeldlinien an deinem Ort.
> Aber: so genau braucht das für einen Wald und Wiesen Kompass dann auch
> wieder nicht sein. Denn in der Praxis hast du sowieso je nach Umgebung
> noch Missweisungen. Magnetfelder, hervorgerufen durch Metalle,
> Elektromotore, Kabel in der Wand, etc. die sich mit dem Erdmagnetfeld
> überlagern. D.h. der Wert, den dein Kompass dann letzten Endes ergibt
> ist sowieso fehlerbehaftet.

Ja ich denke das wird von der Genauigkeit genügen... ich habe die 
Min/Max Werte mit einer Beispiel GUI für diesen sensor ermittelt da sind 
die Werte im Bereich von -40 bis +40 in meinem eigenen Programm nutze 
ich die Rohdaten und habe Werte von -1000 bis +1000, da wird wohl noch 
irgend eine Umrechnung enthalten sein, die muss ich noch implementieren 
und dann kann das ganze mal getestet werden:)
Danke für die Hilfe

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Ein paar Gedanken zur Rechnerei.

Und nicht vergessen: In einem Computer kriegst du Winkel aus atan2 in 
Radianten raus und nicht in Grad. Generell: Bei Winkelfunktionen werden 
Winkel immer in Radianten angegeben.

von Tobi C. (tobicon)


Lesenswert?

Karl H. schrieb:
> Ein paar Gedanken zur Rechnerei.
>
> Und nicht vergessen: In einem Computer kriegst du Winkel aus atan2 in
> Radianten raus und nicht in Grad. Generell: Bei Winkelfunktionen werden
> Winkel immer in Radianten angegeben.

Danke für die Datei.. ja die Winkel werden mit pi und 180° in grad 
umgerechnet... jetzt muss ich mal schauen dass auch wirklich nur winkel 
zwischen 0 und 360° rauskommen...

Wenn der Winkel= Arctan(x/y) ist dann müsste im Prinzip wenn die y-Achse 
nach Nordne zeigt die Magnetwerte X=0 y=1 sein und Z ist egal weil das 
die Drehachse ist...Seh ich das richtig?

von Karl H. (kbuchegg)


Lesenswert?

Tobi C. schrieb:
> Karl H. schrieb:
>> Ein paar Gedanken zur Rechnerei.
>>
>> Und nicht vergessen: In einem Computer kriegst du Winkel aus atan2 in
>> Radianten raus und nicht in Grad. Generell: Bei Winkelfunktionen werden
>> Winkel immer in Radianten angegeben.
>
> Danke für die Datei.. ja die Winkel werden mit pi und 180° in grad
> umgerechnet... jetzt muss ich mal schauen dass auch wirklich nur winkel
> zwischen 0 und 360° rauskommen...
>
> Wenn der Winkel= Arctan(x/y) ist dann müsste im Prinzip wenn die y-Achse
> nach Nordne zeigt die Magnetwerte X=0 y=1 sein und Z ist egal weil das
> die Drehachse ist...Seh ich das richtig?

Im Prinzip.

Aber: das schöne am atan2 ist, dass du dir darüber keinen Kopf zu machen 
brauchst. denn der normiert die Dinge schon so, wie man das braucht. Und 
er bestimmt auch den Quadranten, in dem das Ergebnis liegen muss. Man 
könnte das alles auch mit sin/cos (bzw. eigentlich asin bzw. acos) 
ausrechnen, müsste dann aber selber normieren und auch selber den 
Quadranten bestimmen. Dem atan2 wirfst du einfach die Längen der 
Katheten im rechtwinkeligen Dreieck rein und den Rest macht er.

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Was ist denn das schon wieder, Karl-Heinz?

"Sie Bastler in ihrer Bastlerwelt! Wir sind Angestellte, von uns wird 
Qualität verlangt! Wir müssen unsere Aufgaben termingerecht erfüllen, 
spezifikations- und kostengerecht!
Wir sind Profis! Profis spielen nicht, sondern da sitzt schon jeder 
erste Handschlag!
Wenn wir die Aufgabenpakete kriegen, dann sind die schon zu 100% 
durchkalkuliert, da ist keine einzige Minute für den Spieltrieb üblich. 
Den schminken sie sich mal ab!
Sie brauchen nicht zu spielen, Karl-Heinz. Halten sie sich einfach an 
das Datenblatt. Der Hersteller ist ja auch DIN-ISO akkredidiert, darauf 
kann man sich verlassen! Abtreten!"

[Zorn aus]

Hach ja, wie waren die Bastelzeiten noch schön, als man das im 
Datenblatt wohlweislich verschwiegenen Phänomene der magnetischen 
Inklination und des Einflusses durch das Stahlgeflecht im Beton noch 
ausprobieren durfte! (Aber nach der Inklination wurde mein Auftrag nicht 
verlängert, weil ich "so kompliziert denke" - oder weil die Ergebnisse 
den rRoduktmanager so erschreckt haben.)


Ciao
Wolfgang Horn

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
Noch kein Account? Hier anmelden.