Hallo,
ich möchte in einem 3-dimensionalen Raum die Schieflage eines Sensors
berechnen. Verwendet wird ein Beschleunigungssensor.
Für jede Achse einzeln ist es einfach, arcsin(X/Z) und arcsin(Y/Z)
ergeben die Schiefstellungen bezüglich der X und Y Achse, aber wie
erhalte ich nun eine resultierende Schieflage daraus?
Also meinetwegen habe ich 5° Schieflage zur X-Achse und 3° Schieflage
zur Y-Achse.
Wie schief steht nun das Gerät?
Philipp K. schrieb:> Nimmt man da nicht lieber einen 6 Achs Gyro, oder ist das da mit> drin?>> Ein Beschleunigungssensor misst im Prinzip ja nur Bewegung.
Ein "6 Achs Gyro" ist nichts anderes als ein Gyroskop (3 Achsen) und ein
Beschleunigungssensor (nochmal 3 Achsen). Durch den Vektor der
Erdbeschleunigung kann man sehr gut die Lage bestimmen, sofern das
Objekt nicht beschleunigt. Fall doch, kann man beide Sensoren
miteinander fusionieren.
Zur Lagebestimmung lauten die Stichwörter Rotationsmatrix und oder
Quaternionen.
Vermutlich kannst du es explizit ausrechnen, wenn es dir Spaß macht,
aber die einfache Variante bei der man nichts denken muss ist
Quaternionen zu benutzen.
Sensor schrieb:> Also meinetwegen habe ich 5° Schieflage zur X-Achse und 3° Schieflage> zur Y-Achse.> Wie schief steht nun das Gerät?
Na, 3 und 5 Grad. Nimm einen Klotz in die Hand, Male die Seiten x,y und
z an (die, wenn unten, 1g messen) und spiele damit.
Wenn Du ein anderes Maß willst (Roll Pitch jaw z.b.) dann nenne es.
Joe F. schrieb:> l=sqrt(x^2+y^2+z^2)
Bei ruhendem Accelerometer sollte das eigentlich im Rahmen der
Messgenauigkeit konstant sein, ausser die lokale Erdbeschleunigung
ändert sich (unwahrscheinlich).
Mit einem Beschleunigungssensor wird das nichts.
Außer:
1. Das Gerät wird nie ausgeschaltet.
2. Das eine Mal, wenn dann es angestellt wird ist es in einer supergenau
definierten Lage und hält dabei still.
3. Das Teil ist so Hypergenau, dass es "fast nicht" Beschleunigungen
genauestens registriert.
...
zu 1. Einschalten in welcher Lage?
zu 2. siehe 1.
zu 3. Du kannst mit fast nicht messbarer Beschleunigung eine fast nicht
messbare Rotationsgeschwindigkeit erreichen, nach einiger Zeit auch jede
beliebige, die dann irgendwann jede beliebige Ausrichtung ergibt.
In der Zwischenzeit kannst Du Dir aber die Nullen, am Display, ansehen.
Merke:
Auch wenn sich nichts tut, dreht sich Dein System, da irgendwer dafür
gesorgt hat, dass sich die "Plattform" (hier die Erdkugel) ständig
dreht.
Beschleunigung ist relativ.
Damit es nicht in Vergessenheit gerät.
Auf einem Auge sind nämlich Beschleunigungssensoren blind:
Eine Rotation ist keine Beschleunigung! Danach hat aber z.B. eine
Beschleunigung in X-Richtung, ein völlig andere Richtung. Uups!
Sebastian S. schrieb:> Mit einem Beschleunigungssensor wird das nichts.>> Außer:> 1. Das Gerät wird nie ausgeschaltet.
Quatsch, du kannst mit einer einzelnen Messung jeder Zeit die Lage
bestimmen, voraussgesetzt der Sensor erfährt keine Beschleunigung außer
der Erdbeschleunigung. Dafür kannst du den Sensor ein und ausschalten
wie du willst.
> 2. Das eine Mal, wenn dann es angestellt wird ist es in einer supergenau> definierten Lage und hält dabei still.> 3. Das Teil ist so Hypergenau, dass es "fast nicht" Beschleunigungen> genauestens registriert.> ...
Kann es sein, dass du die klassische Drift eines Gyroskops meinst?
Sebastian S. schrieb:> Mit einem Beschleunigungssensor wird das nichts.
Doch. Normale MEMS-Accelerometer messen die Beschleunigung relativ zu
einem inertialen Beobachter, also einem, der sich im freien Fall
befindet. Im freien Fall misst so ein Ding also in etwa 0m/s², wenn das
Ding auf dem Tisch liegt misst es einen Vektor mit Länge ca. 9,81m/s².
https://en.wikipedia.org/wiki/Proper_acceleration
Philipp K. schrieb:> Ein Beschleunigungssensor misst im Prinzip ja nur Bewegung.
Nein, die Erdbeschleunigung mit der genauso gut wie jede andere
Beschleunig. Was er nicht messen kann ist konstante Bewegung.
Frag mal I. Newton.
Weil Beschleunigungskraft messtechnisch nicht Von Gravitationskraft zu
unterscheiden ist, kann man einen Beschleunigungssensor sehr wohl als
Winkelmesser verwenden.
Vorausgesetzt, der Sensor erfährt keine Beschleunigungskräfte.
Das heisst er muss stillstehen (in Bezug auf die Erde) oder sich mit
konstanter Geschwindigkeit bewegen.
Manche Sensoren haben eine definierte Einbaulage und kompensieren die
Gravitationskraft, so dass x,y und z Beschleunigung in dieser
Einbauposition 0 sind.
Das müsste man halt kompensieren.
sqrt(x^2 + y^2 +z^2) muss 1 [g] ergeben dann passt das.
Der Rest besteht aus einer Umrechnung vom kartesischen (x,y,z)
Koordinatensystem in Kugelkoordinaten (r, Phi, Theta).
siehe Wikipedia - Polarkoordinaten
Klaus schrieb:> Joe F. schrieb:>> l=sqrt(x^2+y^2+z^2)>> alpha=arccos(z/l)>> Ist leider falsch.>> l=sqrt(x^2+y^2)> alpha=arccos(z/l)>> Ist richtig.
Wie kommst du drauf, dass das falsch sein sollte?
l ist die Gesamtlänge des Vektors und dient zur Normierung von z (-1 ...
+1), muss also aus allen 3 Komponenten errechnet werden.
Überlege mal, was in deinem Fall passiert, wenn der Sensor genau
horizontal liegt (x=0, y=0)...
Ja sorry ist natürlich doch richtig.
l=sqrt(x^2+y^2+z^2)
alpha=arccos(z/l)
Ich war bei einer Umrechnung mit dem arctan.
a=sqrt(x^2+y^2)
alpha=arctan(z/a)
Klaus
Sebastian S. schrieb:> Mit einem Beschleunigungssensor wird das nichts.>> Außer:> 1. Das Gerät wird nie ausgeschaltet.> 2. Das eine Mal, wenn dann es angestellt wird ist es in einer supergenau> definierten Lage und hält dabei still.
Nein. Wozu sollte sowas nötig sein?
> 3. Das Teil ist so Hypergenau, dass es "fast nicht" Beschleunigungen> genauestens registriert.> ...
1g ist mehr als "fast nicht".
> Merke:> Auch wenn sich nichts tut, dreht sich Dein System, da irgendwer dafür> gesorgt hat, dass sich die "Plattform" (hier die Erdkugel) ständig> dreht.
Es geht nicht um Drehraten, sondern um Beschleunigung.
> Beschleunigung ist relativ.
Nicht in einem Inertialsystem.
> Eine Rotation ist keine Beschleunigung!
Eben!
> Danach hat aber z.B. eine Beschleunigung in X-Richtung, ein völlig andere> Richtung. Uups!
Wieso "uups"? Das ist doch genau das, was ich messen will. Wenn die
Erdbeschleunigung z.B. aus meiner Sicht plötzlich nach oben zeigt, weiß
ich, dass ich auf dem Kopf stehe. Dazu muss das Ding weder "hypergenau"
sein, noch muss es beim Einschalten in einer "supergenau definierten"
Lage gewesen sein.
Wenn der Sensor gedreht wird und sich dabei nicht genau im Zentrum der
Drehung befindet, misst er allerdings zusätzlich zur Erdbeschleunigung
auch die auftretenden Zentrifugalkräfte...
Joe F. schrieb:> Wenn der Sensor gedreht wird und sich dabei nicht genau im Zentrum der> Drehung befindet, misst er allerdings zusätzlich zur Erdbeschleunigung> auch die auftretenden Zentrifugalkräfte...
Natürlich. Immer, wenn der Sensor irgendwie bewegt wird, mißt er
natürlich die Summe aller Beschleunigungsvektoren. Zum Glück liefert
aber die Informatik eine Möglichkeit, trotzdem zu einem Ergebnis zu
kommen.
Der erste Trick ist ein "preshared secret". Die Auswertung weiß also
vorab, dass in dem Messergebnis der drei Achsen irgendwo die als
konstant anzunehmende Erdbeschleunigung versteckt sein muss, deren
mögliche Änderung hat also eine Grenzfrequenz von 0. Auf dem Mond würde
man dieses Geheimnis natürlich auf die Mondschwerkraft anpassen müssen
usw., aber das ist trivial...
Der zweite Trick ist, die erste Ableitung aller Meßwerte auszuwerten
,also nicht den Messwert selber, sondern das Ausmaß seiner Änderung im
Vergleich zum jeweils vorigen.
Naturgemäß kann die konstante Erdbeschleunigung dann nix mehr bewirken,
da sie eben konstant ist. D.h.: wenn man den aus den ersten Ableitungen
berechneten Vektor vom gemessenen Vektor abzieht, verbleibt die
Erdbeschleunigung als Vektor.
Das Verfahren ist so trivial, dass es (zumindest in der naiven Form)
normalerweise jeder umsetzen können müsste, der die 10. Klasse
abgeschlossen hat. Alle nötige Mathematik ist hier lt. den Lehrplänen
sämtlicher deutschen Bundesländer bereits behandelt worden.
Was dann kitzlig ist, das erfordert allerdings akademische Bildung und
handwerkliche Fähigkeiten als Programmierer. Das sind die unschönen
Effekte des allgewaltigen Rauschens. Zum einen rauschen schon die
Sensoren selber, zum anderen rauscht die real implementierte Mathematik
durch die begrenzte Auflösung der ganzen Rechnerei. Das sinnvoll zu
kompensieren ist die eigentliche Kunst bei der ganzen Sache. Und das ist
leider nicht trivial. Denn: es gibt keine endgültige Lösung für dieses
Problem. Man kann sich ihr nur infinit nähern unter gleichzeitig über
alle Grenzen wachsendem Rechenaufwand. Der Trick ist also: mache es
gerade so gut, wie du es für die konkrete Anwendung tatsächlich
brauchst...
Joe F. schrieb:> Wenn der Sensor gedreht wird und sich dabei nicht genau im Zentrum der> Drehung befindet, misst er allerdings zusätzlich zur Erdbeschleunigung> auch die auftretenden Zentrifugalkräfte...
Es geht um ein stehendes Gerät. Da gibt es keine Zentrifugalkräfte.
Sensor schrieb:> Wie schief steht nun das Gerät?
c-hater schrieb:> Der erste Trick ist ein "preshared secret".
In der Physik kannst du sämtliche Naturgesetze als "preshared secrets"
betrachten. Das macht die Sache dann weniger geheimnisvoll und öffnet
Berechnungen anhand der Bewegungsgleichungen (rotatorisch und
translatorisch) Tür und Tor.
Der TO kennt Winkel bezüglich vorgegebener Achsen.
Und es ist klar, dass die Wahl bez. einer neuen anderen Richtung oder
Achse einen anderen Neigungswinkel ergibt.
Darüber hat sich Euler schon mal den Kopf zerbrochen und unter seinem
Namen findet man auch die entsprechende Transformationsmatrix.
Wolfgang schrieb:> In der Physik kannst du sämtliche Naturgesetze als "preshared secrets"> betrachten.
Das trifft nicht den Kern der Sache. Wie ich schon in meinem Posting
sinngemäß schrieb: für eine Anwendung auf der Mondoberfläche würde man
das anpassen müssen.
Es handelt sich hier tatsächlich, informatikmäßig betrachtet, um ein
"shared secret". Hat die Auswertung das falsche für die Umgebung,
liefert die Berechnung unbrauchbaren Müll.
Wolfgang schrieb:> Es geht um ein stehendes Gerät. Da gibt es keine Zentrifugalkräfte.
Wie geht das zusammen mit
Rolf M. schrieb:> Das ist doch genau das, was ich messen will. Wenn die> Erdbeschleunigung z.B. aus meiner Sicht plötzlich nach oben zeigt, weiß> ich, dass ich auf dem Kopf stehe.
?
Ein Gerät kann ja nicht plötzlich auf dem Kopf stehen, ohne dass es
vorher gedreht wird...?
Oder willst du einmalig (z.B. nach dem Einschalten) die Lage bestimmen,
die sich dann nicht mehr ändert?
Joe F. schrieb:> Ein Gerät kann ja nicht plötzlich auf dem Kopf stehen, ohne dass es> vorher gedreht wird...?>> Oder willst du einmalig (z.B. nach dem Einschalten) die Lage bestimmen,> die sich dann nicht mehr ändert?
Du gehst davon aus, dass sich das Gerät entweder immer dreht oder nie.
Man könnte aber auch einfach sicherstellen, dass nur dann gemessen wird,
wenn es sich gerade nicht dreht.
c-hater schrieb:> : für eine Anwendung auf der Mondoberfläche würde man das anpassen> müssen.
Dann skizziere doch Mal deine Rechnung oder Aufgabe, wo das alles nur
klappt, wenn man g kennt.
Rolf M. schrieb:> Wenn die> Erdbeschleunigung z.B. aus meiner Sicht plötzlich nach oben zeigt, weiß> ich, dass ich auf dem Kopf stehe.
Oder daß sich jemand der Steuerkontrolle bemächtigt und die
Schubrichtung umgekehrt hat während Du kurz auf dem Klo warst (ein ganz
übler Scherz). Vor allem wenn Du zuvor keine Drehung gespürt hast. Man
könnte noch zusätzlich einen Gyro hinzuziehen.
c-hater schrieb:> Hat die Auswertung das falsche für die Umgebung,> liefert die Berechnung unbrauchbaren Müll
Nur wenige von uns haben Gelegenheit, Geräte auf dem Mond zu testen.
Georg
Der 3d Sensor liefert einen Vektor G = (gx,gy,gz)
Man definiert was oben ist, als Vektor O = (ox, oy, oz).
von beiden berechnet man die Länge |G| und |O|.
und dann ist der Winkel:
phi = arccos ( G∘O / (|G|*|O|) );
'∘' ist skalarprodukt, hier also gx*ox+gy*oy+gz*oz
siehe: https://de.wikipedia.org/wiki/Skalarprodukt
Sebastian S. schrieb:> Auf einem Auge sind nämlich Beschleunigungssensoren blind:> Eine Rotation ist keine Beschleunigung!
Stellen wir uns einen Sensor vor, der auf einer Töpferscheibe geklebt
wurde. Die senkrechte Achse zeigt immer 1G an, wegen der Erdanziehung.
Die anderen beiden Achsen werden bei Rotation eine Beschleunigung nach
Außen anzeigen. Im Volksmund nennt man dies "Fliehkraft".
Diese Kraft ist nur im unendlich kleinen Zentrum der Rotation null. Aber
kein Sensor ist unendlich klein.