RegistrierenRegistrieren   LoginLogin   FAQFAQ    SuchenSuchen   
Beschleunigungssensor - Bewegung von Gravitation unterscheid
 
Neue Frage »
Antworten »
    Foren-Übersicht -> Mechanik
Autor Nachricht
boehmi1



Anmeldungsdatum: 14.06.2010
Beiträge: 1

Beitrag boehmi1 Verfasst am: 14. Jun 2010 10:51    Titel: Beschleunigungssensor - Bewegung von Gravitation unterscheid Antworten mit Zitat

Meine Frage:
Hallo Physiker ;)

ich beschäftige mich gerade mit Programmierung mit einem 3-Achsigen Beschleunigungssensor.
Dabei habe ich das Problem, dass ich auf einer Achse, je nachdem wie rum ich das Teil halte natürlich immer die Erdanziehungskraft wirken habe.
Das ist ansich erstmal kein Problem, weil sie ja konstant ist und somit weggerechnet werden kann,
wenn ich nun aber versuche eine Bewegung/Geste zu erkennen und während der Bewegung auch eine kleine Drehung des Geräts mache kann ich nicht unterscheiden ob, die gemessen Werte nun durch die Drehung, oder durch die Beschleunigung meiner Handbewegung zustande kommen.

Gibt es eine Möglichkeit die Werte zumindest einigermaßen auf die reine Handbewegung umzurechnen?

Meine Ideen:
Interessant sind für mich nur die Werte der X und Z Achse.
Normalerweise könnte man eine Belastung der X Achse durch die Erdanziehungskraft ja erkennen, weil gleichzeitig die Werte der Z Achse im gleichen Maß geändert werden.
Da ich aber beide Achsen auswerten muss, kann ich z.B. nicht unterscheiden ob es nun eine Neigung an der Y Achse nach links, oder eine Beschleunigung des Sensors nach unten rechts ist.
Einfallspinsel
Gast





Beitrag Einfallspinsel Verfasst am: 14. Jun 2010 12:47    Titel: Antworten mit Zitat

Ganz verstech ich eigentlich nicht was du nun genau machen willsd.

Aber du wirsd nicht darum herumkommen die Neigung einer Achse zu bestimmen, zum Beispiel die z-Achse.

So weit ich verstanden habe willsd du nur die translatorische Beschleunigung herausfinden.

Wenn du einen Körper um den Schwerpunkt drehst dann hast du keine translatorische Beschleunigung. Wenn du den Körper aber nicht um den Schwerpunkt drehst, dann hast du im Schwerpunkt beschleunigung und somit translatorische Beschleunigung, sowohl radiale wie auch tangentiale.

Wenn du das ausseinander halten willsd mußt du schon wissen um welchen Punkt sich das Gerät gedreht hat und wie schnell, weil davon hängt wiederum die Zentripetalkraft ab.
boehmi



Anmeldungsdatum: 14.06.2010
Beiträge: 8

Beitrag boehmi Verfasst am: 14. Jun 2010 12:52    Titel: Antworten mit Zitat

Einfallspinsel hat Folgendes geschrieben:
Wenn du das ausseinander halten willsd mußt du schon wissen um welchen Punkt sich das Gerät gedreht hat


Meine Frage ist ja wie ich das herausfinde, wenn ich nur die Werte für x,y,z zur Verfügung habe Augenzwinkern
Einfallspinsel
Gast





Beitrag Einfallspinsel Verfasst am: 15. Jun 2010 08:52    Titel: Antworten mit Zitat

Ähm wie willsd du eine Drehung eroieren mit nur einem Referenzpunkt.

Denk mal logisch nach wenn ich zu dir sage ein Objekt liegt mit Schwerpunkt auf x,y,z dann kann es dort liegen in all möglichen Drehvarianten.

Dazu benötigst du schon einen zweiten
dermarkus
Administrator


Anmeldungsdatum: 12.01.2006
Beiträge: 14788

Beitrag dermarkus Verfasst am: 15. Jun 2010 10:13    Titel: Re: Beschleunigungssensor - Bewegung von Gravitation untersc Antworten mit Zitat

boehmi1 hat Folgendes geschrieben:

wenn ich nun aber versuche eine Bewegung/Geste zu erkennen und während der Bewegung auch eine kleine Drehung des Geräts mache kann ich nicht unterscheiden ob, die gemessen Werte nun durch die Drehung, oder durch die Beschleunigung meiner Handbewegung zustande kommen.


Einverstanden, diese Unterscheidung stelle ich mir im allgemeinen ziemlich knifflig zu programmieren vor. Denn wenn man nur einen einzigen Beschleunigungssensor hat, überlagern sich die beiden Effekte tatsächlich.

(Am einfachsten zum Programmieren wäre es sicher, wenn man schlicht zwei Beschleunigungssensoren an dem Körper hätte, die nicht im selben Punkt liegen. Dann könnte man aus der Veränderung der Beschleunigungswerte zueinander die Drehung ausrechnen, und aus dem verbleibenden gemeinsamen Beschleunigungsanteil die Translationsbewegung. )

Bei nur einem einzigen 3D-Beschleunigungssensor hat man glaube ich eventuell nicht genügend Informationen, um eindeutig zu jedem Zeitpunkt sowohl die Drehung als auch die Translationsbeschleunigung auszurechnen.

Vielleicht hat man allerdings mit ausgeklügelten Algorithmen eine Chance, das für spezielle Anwendungen (typische, wiederkehrende Handbewegungen, etc. ) gut genug hinzubekommen, dass der Algorithmus die Drehkomponente mit guter Sicherheit erraten und rausfiltern kann.

Zum Beispiel wenn man Zeiten hat, in denen die Beschleunigung länger in eine Richtung zeigt und den Wert der Erdbeschleunigung hat, dann ist das wohl ein prima Indiz dafür, dass der Körper in Ruhe ist oder sich gleichförmig gerade fortbewegt, und die Richtung der Beschleunigung ist unten. Solche Phasen könnten dann zum Beispiel helfen, herauszufinden, um wieviel sich der Körper während einer vorangegangenen komplizierten Beschleunigungsphase insgesamt gedreht haben muss.

Oder, wenn der Körper nicht beschleunigt, aber gedreht wird, dann verändern sich ja die x-und die z-Komponente der Beschleunigung in dementsprechend koordinierter Weise. (die eine wächst mit dem Sinus des Neigungswinkels, die andere sinkt mit dem Kosinus des Neigungswinkels). Damit könnte man mit guter Wahrscheinlichkeit reine Drehphasen um den Schwerpunkt erkennen.

Solche Mustererkennung kann man sicher auch noch viel weiter treiben, bis hin zum allmählichen Erlernen der typischen Bewegungsabläufe des Körpers durch adaptive, lernende Softwarealgorithmen, was sicher um so einfacher gehen wird, je einfacher und je öfter in ähnlicher Weise wiederholt die typischen Bewegungen des Körpers ablaufen. Je weiter so etwas fortgeschritten ist, um so mehr hat so ein Algorithmus dann bestimmt die Chance, auch schon mit unvollständigen Informationen die tatsächlich erfolgte Bewegung in Drehung und Translation selbst mit einem einzigen 3D-Sensor schon meistens einigermaßen gut rekonstruieren zu können.

Aber brauchst du wirklich immer die vollständige Information über Drehwinkel und Beschleunigung, wenn das Hauptziel nur ist, zum Beispiel eine Geste zu erkennen? So ein Bewegungsmuster lässt sich sicher auch schon sehr leicht von anderen typischen Bewegungsmustern unterscheiden, wenn man nur einen Teil dieser Informationen hat, dafür aber weiß, was es für typische mögliche Gesten gibt. Dazu braucht man sicher nicht immer die komplette Information über Drehwinkel und Beschleunigung, sondern da reicht es, den typischen Fingerabdruck der Geste in den Beschleunigungssensordaten so weit zu erkennen, dass man ihn gut genug von den anderen möglichen zu erkennenden Gesten unterscheiden kann.
boehmi



Anmeldungsdatum: 14.06.2010
Beiträge: 8

Beitrag boehmi Verfasst am: 21. Jun 2010 09:59    Titel: Antworten mit Zitat

Hallo,

danke für die ausführliche Antwort.
Ich bin ebenfalls zu dem Schluss gekommen, dass mit einem Sensor bestenfalls Gestenerkennung möglich ist,
jedoch keine 100%ige Nachvollziehung der Bewegung um z.B. den Mousecursor identisch zu bewegen... außer unter "Laborbedingungen".

Kannst du vielleicht nochmal wissenschaftlich ausführen "welche" Informationen mir konkret fehlen, ich habe leider nicht so viel Ahnung von physikalischen Begriffen Augenzwinkern
Dass mir welche fehlen ist mir schon klar, aber ich kann es irgendwie nicht so recht in Worte fassen.

Ich hätte theoretisch die Möglichkeit einen zweiten Beschleunigungssensor anzubringen, aber nur direkt hinter dem anderen. Die beiden hätten quasi die gleiche Y-Achse, somit könnte ich eine Neigung nach links & rechts ja wieder nicht von einer Bewegung unterscheiden, oder?

Gruß
VeryApe



Anmeldungsdatum: 10.02.2008
Beiträge: 3254

Beitrag VeryApe Verfasst am: 21. Jun 2010 21:24    Titel: Antworten mit Zitat

Wieso verwendest du nicht einfach einen Neigungssensor den do oben aufschraubst. Im drei dimensiolen Raum ist auch mit 2 Beschleunigungssensoren nicht alles bestimmt.

Auch mit dem Neigungssensor ist nicht alles bestimmt denn zum Beispiel drehungen in genau der Nullebene werden nicht erkannt, da du aber noch einen Beschleunigungssensor oben hast, muß die Drehung schon genau um den Nullpunkt des B Sensors passieren.

Du weißt aber sofort um welche Achsen des B Sensors die Schwerkraft gewirkt hat.
boehmi



Anmeldungsdatum: 14.06.2010
Beiträge: 8

Beitrag boehmi Verfasst am: 21. Jun 2010 23:02    Titel: Antworten mit Zitat

Mh okay... wie sieht es mit Gyroskopen aus?
Ich habe einen 2-Achsen und ein 1-Achsengyro-Sensor... würde das für ein Bewegungstracking ohne Verfälschung durch Gravitation ausreichen?
VeryApe



Anmeldungsdatum: 10.02.2008
Beiträge: 3254

Beitrag VeryApe Verfasst am: 22. Jun 2010 10:26    Titel: Antworten mit Zitat

2 Achsig klingt doch gut, jetzt brauchst du nur noch austesten ob die Reaktionszeit ausreicht für dein Vorhaben.
boehmi



Anmeldungsdatum: 14.06.2010
Beiträge: 8

Beitrag boehmi Verfasst am: 24. Jun 2010 21:34    Titel: Antworten mit Zitat

Jap klappt ansich schon ganz gut, aber ich habe das Gefühl, dass der Gyro etwas träger reagiert als der Beschleunigungssensor.
Somit beginnt seine "filternde" Wirkung etwas zu spät.

Kann das sein?

Wenn ja, wie kann man das mathematisch ausgleichen?
Muss doch in der Messtechnik öfter solche Probleme geben

Und noch eine Frage:
Verläuft die Erdbeschleunigung auf einer Achse linear zu deren Neigungswinkel?


Zuletzt bearbeitet von boehmi am 25. Jun 2010 11:21, insgesamt einmal bearbeitet
VeryApe



Anmeldungsdatum: 10.02.2008
Beiträge: 3254

Beitrag VeryApe Verfasst am: 25. Jun 2010 10:04    Titel: Antworten mit Zitat

sicher kann das sein.

du mußt halt versuchen die Bewegung hoch zu rechnen, also zum aktuellen gelieferten Wert bedenken das der tatsächliche zu diesem Zeitpunkt anders ist, weil dieser zu spät geliefert wird.

Dazu würde ich den Verlauf der Werte betrachten, also die Veränderung und von daraus zu schließen wie wohl der aktuelle Wert wirklich ausschauen könnte.

Also gelieferter Wert.. vergleich mit vorigen Werten und daraus Schluss auf tatsächlichen aktuellen Wert

Wenn zum Beispiel ein Verlauf:

0GRad 3, 7 und aktueller Wert 12 dann kann ich daraus schließen das die Winkelveränderung immer größer wird und zum aktuellen Wert 12 winkelbeschleunigung * reaktionszeit hinzu schließen.
boehmi



Anmeldungsdatum: 14.06.2010
Beiträge: 8

Beitrag boehmi Verfasst am: 25. Jun 2010 11:00    Titel: Antworten mit Zitat

Hallo,

der Gyrosensor gibt mir die Geschwindigkeit einer Neigung in Grad pro Sekunde an. Daraus kann ich nun die Neigung berechnen.
Hier mal ein Diagramm der Messwerte der Neigung einer Achse um 90 Grad und wieder zurück:
http://img534.imageshack.us/img534/8206/bildschirmfoto3yg.png

Blau = verfälschte Beschl.
Rot = korrigierte Beschl.
Gelb = Neigung *

Ich ziehe in meiner Berechnung quasi die gelbe von der blauen Kurve ab und erhalte die Rote Kurve, die im Idealfall die ganze Zeit etwa bei 0 liegen sollte.

Die gelbe Linie sollte im Idealfall genau auf der blauen liegen, aber die fällt & steigt etwas flacher, wodurch in der Roten unsinnige Täler entstehen.

An einer Trägheit des Sensors scheint es also nicht zu liegen
VeryApe



Anmeldungsdatum: 10.02.2008
Beiträge: 3254

Beitrag VeryApe Verfasst am: 25. Jun 2010 12:19    Titel: Antworten mit Zitat

wie kommt man auf diese Formel?

Gelb = Neigung *
boehmi



Anmeldungsdatum: 14.06.2010
Beiträge: 8

Beitrag boehmi Verfasst am: 30. Jun 2010 10:51    Titel: Antworten mit Zitat

Hallo, okay vergiss die Formel.. da habe ich mal wieder viel zu einfach & eindimensional gedacht Augenzwinkern

Also ich habe nun die Neigung an jeder Achse des Gyros, wie kann ich daraus den Vektor der Erdbeschleunigung bestimmen?

Ich habe es mit einer Transformationsmatrix aus den 3-Rotationsmatrizen um die Achsen probiert... allerdings ist da die Reihenfolge der Drehungen an den Achsen entscheidend.
In der Praxis drehe ich ja aber alle Achsen gleichzeitig bzw. kenne zu einem Zeitpunkt die Reihenfolge nicht mehr.

Und außerdem:
Wenn der Betrag des Vektors der 3 Werte für den Beschleunigungssensor g beträgt, kann ich davon ausgehen, dass das System gerade nicht beschleunigt wird.

Kann ich in diesem Zustand die Neigung an den Achsen aus dem Vektor der Erdbeschleunigung berechnen und wenn ja, wie?
Einschränkend kann man davon ausgehen dass die Winkel maximal 90° betragen dürfen.
Die Berechnung ist nötig, weil man den Gyro ab und an korrigieren muss, weil er mit der Zeit etwas abweicht.

Bitte helft mir smile
Neue Frage »
Antworten »
    Foren-Übersicht -> Mechanik