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?
Nimmt man da nicht lieber einen 6 Achs Gyro, oder ist das da mit drin? Ein Beschleunigungssensor misst im Prinzip ja nur Bewegung.
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.
:
Bearbeitet durch User
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.
Du kannst die Länge des Vektors in x/y Ebene mit Pythagoras ausrechnen. Dann einmal deine Winkelfunktion. Klaus
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. Klaus
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!
:
Bearbeitet durch User
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)...
:
Bearbeitet durch User
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.
Rolf M. schrieb: > Man könnte aber auch einfach sicherstellen, dass nur dann gemessen wird, > wenn es sich gerade nicht dreht. Fair enough.
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.
:
Bearbeitet durch User
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
Philipp K. schrieb: > Ein Beschleunigungssensor misst im Prinzip ja nur Bewegung. Die Erdanziehung ist eine Beschleunigung nach unten.
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.
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.