Frage:
Wie kann ich Winkelbewegungen erkennen und seitliche Bewegungen ignorieren?
Bill
2013-01-22 07:55:57 UTC
view on stackexchange narkive permalink

Ich arbeite an einem Projekt mit einer flachen Plattform, die ein Benutzer von einer Seite zur anderen sowie vorwärts und rückwärts neigen kann. Ich hätte gerne einen Sensor, der die Winkeldifferenz zwischen der ursprünglichen Position der Plattform und ihrer aktuellen Ausrichtung überwachen kann.

Möchte ich einen Neigungssensor, einen Beschleunigungsmesser, einen Kreisel oder eine IMU?

Um ein wenig mehr Hintergrund zu bieten, sollte dies ein Spiel sein, das der Benutzer spielt, indem er das Flugzeug mit beiden Händen hält und es in die beiden Achsen kippt. Ich würde nicht erwarten, dass es sich viel bewegt, aber der Benutzer könnte die Plattform bewegen, wenn er herumläuft (Übersetzung statt Rotation). Kann eines der oben genannten Geräte zwischen seitlicher Bewegung und Kippen unterscheiden? Ich kümmere mich nur um Rotation und möchte jede zufällige Übersetzung ignorieren.

Um Ihre Frage zu beantworten, müssen wir die Entität der Querbeschleunigungen kennen und wissen, wie genau das Ding sein sollte. Wenn die Querbeschleunigung im Vergleich zur Gravitationsbeschleunigung gering ist, reicht ein 3-Achsen-Beschleunigungsmesser aus. Wenn Sie der Meinung sind, dass der Benutzer stärker ist, oder wenn Sie Ihre Schnittstelle eines Tages aktualisieren möchten, benötigen Sie eine 3-Achsen-Beschleunigung Giroskop auch.
@Vladimir - Können Sie Ihre Gründe für die Verfolgung von 6 Freiheitsgraden (3 linear, 3 rotierend) erläutern, um nur 2 Bewegungsachsen zu isolieren? Wenn alles, was passiert, "in zwei Achsen kippen" ist, enthalten 4 Ihrer Sensorkanäle keine Informationen oder redundante Informationen. Was bedeutet "Upgrade Ihrer Schnittstelle"? Entschuldigung für mein Missverständnis ...
Der Punkt ist, dass das, was passiert, das Ding in allen 6dof bewegt. Was er wissen will, ist eine andere Geschichte. und alles zu verfolgen könnte helfen, genauer zu sein, was er wissen will. Mit Upgrade meine ich zum Beispiel, dass er eines Tages beschließt, auch Übersetzungsbewegungen zu verfolgen.
Zwei antworten:
DrFriedParts
2013-01-22 08:37:38 UTC
view on stackexchange narkive permalink

Sie können ein Beschleunigungsmessersignal tiefpassfiltern. Der Schwerkraftvektor liegt bei DC. Die Verwendung eines 2-Achsen-Beschleunigungsmessers wie des Analog Devices ADXL202 sollte für ein Flugzeug ausreichen.

Hier ist ein ausgezeichneter Artikel über die gesamte Mathematik.

Was passiert, wenn der Benutzer die Platte plötzlich nach vorne bewegt?

Sie verwechseln das Konzept der Übersetzung (Positionsänderung) mit der Einstellung (Orientierung). Wenn sich die Platte plötzlich vorwärts bewegt (reine Übersetzung), möchten Sie im Idealfall keine Änderung der Ausgabe sehen (die Einstellung hat sich nicht geändert).

Wenn der Benutzer die Platte plötzlich nach vorne kippt , spiegelt der Gleichstromwert nach einer unendlichen Zeitspanne diese Änderung ebenfalls korrekt und ausschließlich wider.

Ein Beschleunigungsmesser misst Beschleunigung. Die Beschleunigung wird durch Gewalt verursacht. Die Schwerkraft ist eine Kraft. Die Schwerkraft basiert auf Massenbeziehungen, Trennungsabstand und dem Winkel zwischen den Vektoren. Da sich weder die Masse der Platte noch die Masse der Erde ändert, ist der Abstand (in jeder Hinsicht unverändert) für einen bestimmten Winkel (Neigung) die Schwerkraft eine konstante Kraft. Dinge, die konstant sind, haben eine Frequenz von 0 (z. B. "DC").

Jeder gegebene Neigungswinkel entspricht einem (und nur einem) Kraftvektor auf der Platte um 180 Grad.

enter image description here

Das Problem in a Praktisches System ist, dass Sie nicht unendlich lange warten können, um zu bemerken, dass sich die Einstellung geändert hat. Sie müssen also, wie alles in der Technik, Kompromisse zwischen den Anforderungen eingehen. Deshalb habe ich den Ansatz eines Tiefpassfilters vorgeschlagen. Wo Sie den Filter in die Enge treiben, bestimmt der Filter (kurzfristig) den Kompromiss zwischen Selektivität und Genauigkeit.

In praktischen Systemen können Sie irgendwo um 10 Hz in die Enge treiben und normalerweise in Ordnung sein (die meisten Handys verwenden diesen Ansatz) Der von Ihnen bereitgestellte

-Link setzt einen dreiachsigen Beschleunigungsmesser

voraus

Die dritte Achse ist nur dann unbedingt erforderlich, wenn Sie das Gieren (über den Kreisel) erkennen oder die Fluglage durch beide Hemisphären (über den Beschleunigungsmesser) eindeutig bestimmen müssen, was die ursprüngliche Frage explizit als unerwünschte Bewegung zu ignorieren scheint. Wenn diese Annahme meinerseits falsch ist, kann das OP je nach Wunsch einen 3-Achsen-Beschleunigungsmesser oder einen 2-Achsen + 1-Achsen-Kreisel verwenden. Deshalb habe ich gesagt, "sollte ausreichen".

Ich würde mit einem Kreisel fahren ...

Wenn Sie versuchen, die Kosten zu minimieren / Leistung, dann ist die Verwendung eines Gyroskops für sich genommen eine schlechte Wahl in Bezug auf den vorgeschlagenen Beschleunigungsmesser. In der von Ihnen beschriebenen Neigungserfassungsanwendung entwickelt der Kreisel einen Neigungsfehler, der ohne Bindung weiter zunimmt, da er nur Rotationsbeschleunigungen misst, die Sie integrieren müssen, um die Position zu finden ( Neigung).

Wenn Sie den Kreisel neigen, sehen Sie eine Änderung der Ausgangsspannung, die jedoch schnell auf den Ruhepegel zurückkehrt, wenn die neue Einstellung (Neigung) beibehalten wird. Dies führt zu zwei unerwünschten Problemen:

  1. Es wird extrem empfindlich gegen Erschütterungen (Schütteln und andere vorübergehende Störungen).
  2. Fehler häufen sich sehr schnell und müssen Setzen Sie sich daher von Zeit zu Zeit auf einen bekannten Wert zurück, indem Sie ihn mit einer anderen Datenquelle (wie dem vorgeschlagenen Beschleunigungsmesser) korrelieren.
  3. ol>

    Hier sind Daten aus einem von David Anderson durchgeführten Experiment auf seinem selbstausgleichenden Roboter:

    enter image description here

    Beachten Sie, wie der Fehler (Unterschied zwischen der blauen und der roten Linie) schnell von der Grundwahrheit.

    Im Gegensatz dazu misst der Beschleunigungsmesser die Neigung direkt , sodass sich kein Fehler ansammelt. Im Kreisel ist jede Neigungsschätzung eine Funktion aller vorherigen Messungen (Fehler häufen sich). Im Beschleunigungsmesser basiert jede Schätzung der Neigung nur auf dem aktuellen Messwert (in erster Ordnung).

Entschuldigung, aber was Sie sagen, ist nicht richtig. Das Ignorieren einer Komponente des g-Vektors, wie Sie vorschlagen, führt zu völlig unzuverlässigen Daten. Hinweis: Was passiert, wenn der Benutzer die Platte plötzlich nach vorne bewegt? Für den von Ihnen bereitgestellten Link wird ein dreiachsiger Beschleunigungsmesser vorausgesetzt.
@Vladimir - Das ist technisch nicht korrekt. Wenn Sie eine * Achse * weglassen, wird eine * Komponente * des g-Vektors nicht ausgelassen. Jede Achse des Beschleunigungsmessers misst Pitch, Roll, Yaw ** (** nicht wirklich, tatsächlich liefert es eine vollständige sphärische Disambiguierung). Auf der dritten Achse gibt es keine eindeutigen Einstellungsinformationen (es sei denn, Sie müssen die umgedrehte Platte abstützen), sodass durch das Einschließen keine Informationen hinzugefügt werden. Ich habe meine Antwort erweitert, um zu versuchen, es zu erklären. Danke für die Bewertung.
Sie haben Recht mit der Sache mit der Achsenkomponente. Angenommen, ich habe von einem Koordinatensystem gesprochen, das mit dem g-Vektor solidal ist. Der Punkt ist, dass, wenn der Tisch parallel zur Erde beschleunigt wird, unter Berücksichtigung von gz dies helfen könnte, dies zu beseitigen. Ich lese gerade Ihre Antwort!
Ok, ich habe es gelesen und es ist sehr gut. Der Punkt ist jedoch, dass, wenn Sie die Tabelle beschleunigen, der gemessene Vektorbeschleunigungsvektor nicht mehr auf Masse zeigt. Eine "wahre" (oder präzisere) Einstellung kann sowohl mit einem Beschleunigungsmesser als auch mit einem Kreisel erreicht werden, wobei letzterer nur verwendet wird, wenn der erste sehr schnelle Transienten ergibt.
@Vladimir - Danke. Ja, die Sensorfusion vom Kreisel kann die * vorübergehende * Verfolgung des Beschleunigungsmessers verbessern. Ich erwähne das in meiner Antwort. Wenn Sie jedoch nur ein Gerät auswählen mussten (wie aus der ursprünglichen Frage hervorgeht), ist der Beschleunigungsmesser der * weitaus * überlegene Ansatz.
Ich korrigiere dich noch einmal: Der Beschleunigungsmesser ist der EINZIGE mögliche Ansatz;) Ich dachte nur, deine Antwort müsste erweitert werden, und du hast es perfekt gemacht. Vielen Dank!
Scott Seidman
2013-01-22 22:43:23 UTC
view on stackexchange narkive permalink

Richtiges Werkzeug für den richtigen Job. Wenn die Natur Ihres Tieres so ist, dass die Tiefpassfilterung die Aufgabe erfüllt, ist der Beschleunigungsmesser möglicherweise richtig. Wenn Sie jedoch versuchen, die Dynamik zu verfolgen, muss sich dieser Sensor im Rotationszentrum befinden, oder Sie müssen sich Gedanken darüber machen, was mit zentripetalen Beschleunigungen zu tun ist.

Wenn Sie jedoch eine Winkelgeschwindigkeit und keine Winkelposition benötigen, würde ich einen Kreisel verwenden. Wenn Sie eine Winkelposition benötigen, müssen Sie sich Gedanken darüber machen, wie Sie mit akkumulierten Integrationsfehlern umgehen, die sich (per Definition) im Laufe der Zeit summieren. Verwenden Sie möglicherweise einen tiefpassgefilterten Beschleunigungsmesser, um akkumulierte Fehler zu entfernen?

So funktionieren Balancierroboter wie Segway. Siehe [nBot] (http://www.geology.smu.edu/~dpa-www/robo/nbot/).
Die Leute haben auch einen eingebauten 3D-Beschleunigungsmesser und einen 3D-Kreisel und können sich immer noch nicht perfekt auflösen. Viele Argumente darüber, wie wir nicht die ganze Zeit hinfallen, aber ich bin in der Schule "Low-Freq-> Neuorientierung, High-Freq-> Übersetzung".


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...