Hallo, ich hab mir vor langer Zeit eine EZ430-Chronos gekauft, die nun schon seit einigen Monaten unbenutzt in einer Schublade liegt. Das soll sich nun aber ändern. Und zwar würde ich gerne mit dem eingebauten 3-Achsen Accelerometer Bewegungen/Gesten erkennen. Ich hab zwar schon ein bisschen im Internet recherchiert, bin aber doch noch etwas planlos wie ich das am besten angehen soll. Die wichtigste Frage mal gleich zu Beginn: Kann man alleine durch das Auswerten eines 3-Achsen Accelerometers Bewegungen (zuverlässig) erkennen? Mal angenommen die Erkennung und Auswertung ist möglich: Wie würdet ihr so eine Aufgabenstellung angehen? Mein Ansatz wäre: Ich zeichne zu jeder Bewegung/Geste einige Datensätze auf, übertrage diese in ein Diagramm und schau mir die Abhängigkeiten und Gemeinsamkeiten zwischen den Datensätzen an. Und dann versuche ich dazu eine mathematische Funktion zu finden, die möglichst gut "passt". Kann das funktionieren oder würdet ihr es anders machen? Welches Programm würdet ihr zum Analysieren der Datensätze verwenden? Ich habs die letzten Tage mit Excel versucht, bin damit aber nicht so ganz zufrieden damit. Das Plotten der Daten funktioniert mit Excel ja ganz gut, aber wenn es darum geht Daten zu filtern und glätten, dann stößt man mit dem Programm meines Erachtens an seine Grenzen (oder ich kenn mich damit einfach zu wenig aus).
Selbst was schreiben ? In der Programmiersprache deiner wahl.
Wie meinst du das? Das ich das dann mal in einem Sourcecode packen muss, ist mir klar. Aber mir gehts im Moment eher darum, wie ich die Daten am besten analyisiere und aufbereite.
Ich hab mich die letzten Tage wieder etwas mehr in dieses Thema eingelesen und bin nun zu dem Schluss gekommen, dass mein Ansatz wohl doch nicht so praktisch ist. Schließlich soll die Geste unabhängig von der Geschwindigkeit/Größe der Bewegung erkannt werden. Das heißt, es soll egal sein ob ich einen großen oder einen kleinen Kreis in die Luft male. Ich hab mir gedacht, dass ich das anfangs mal auf dem PC (Matlab, C) realisiere, doch ehrlich gesagt bin ich im Moment ein wenig ratlos wie ich das am besten angehe. Mir wäre schon enorm geholfen, wenn mir jemand sagen könnte welche Algorithmen üblicherweise für diese Art von Problemstellung verwendet werden. Dann hab ich mal ein paar Stichworte für weitere Recherchen.
Hallo, informiere dich mal über Mustererkennung. Gehört nicht unbedingt zu den einfachen Fachgebieten. Ein Kreis ist ein Kreis ist ein Kreis - ob du ihn nun auf Papier malst oder in die Luft. Gruss Reinhard
Mit einem Beschleunigungssensor alleine kann man keine Bewegungspfade im 3D-Raum berechnen. Damit könnte man allenfalls bestimmte Eigenschaften von einem begrenzten Satz möglicher Bewegungen erkennen. Es gibt vom Hersteller Invensense z.B. den MPU6000 (motion processing unit) http://invensense.com/mems/gyro/mpu6000.html Der hat einen integrierten Prozessor zur Bewegungsschätzung durch Datenfusion aus Beschleunigungen und Drehraten sowie optional einem 3D-Kompass. Unter Applications steht auf der Website unter anderem auch "Gesture Short Cuts". Vielleicht ist das ja ein möglicher Anfangspunkt für eine Rechersche nach Bewegungsmustererkennung. Ein weiteres Stichwort wäre: Inertial measurement unit. Grüße, Peter
Zusaetzlich zum 3D Beschleunigungssensor benoetigt man auch noch einen Drehratensensor. Dann sollte es gehen. Zu den Algorithmen. Es geht darum Muster zu vergleichen. Das nennt sich dann Kreuzkorrelationen. Man korreliert dabei gemessene Daten mit bereits Vorhandenen, oder gelernten Daten. Und bekommt eine Uebereinstimmung in %. Der Datensatz mit der groessten Uebereinstimmung ist dann der Passende, sofern eine Schwelle ueberschritten wird.
Danke, die Algorithmen und Prinzipien die ihr mir genannt habt, helfen mir schon mal enorm weiter! Ihr meint ja alle, dass man für eine Bewegungspfaderkennung im Raum mehr als einen 3D Beschleunigungssensor braucht. Nur wie macht die WiiMote das dann? Die hat ja auch nur einen eingebauten 3D-Beschleunigungssensor?! Sicher, die WiiMote nutzt auch Infrarot zur Positionserkennung, aber soweit ich informiert bin, wird bei Spielen wie WiiSports nur der 3D-Beschleunigungsssensor verwendet.
Bernhard schrieb: > Sicher, die WiiMote nutzt auch Infrarot zur Positionserkennung, aber > soweit ich informiert bin, wird bei Spielen wie WiiSports nur der > 3D-Beschleunigungsssensor verwendet. Hallo, das kann man schon machen, aber dann darfst du das Gerät während der Gesten nicht verdrehen - damit würdest du ja das Koordinatensystem, das fest mit dem Sensor und damit mit dem Gerät verbunden ist, im Raum drehen, das ergäbe falsche Bewegungsdaten. Das schränkt die Bedienung aber deutlich ein. Möglicherweise kann man die Ausrichtung herausrechenen, wenn man ein konstantes Schwerefeld von 1 g voraussetzt, das habe ich mir noch nicht näher überlegt. Im Prinzip zeigt der Sensor die Vektorsumme an aus Schwerefeld der Erde und Beschleunigung des Geräts. Man weiss die Grösse des Schwerefelds, aber nicht die Richtung. Mein mathematisches Bauchgefühl sagt, dass es da keine eindeutige Lösung gibt, aber vielleicht kann man aus den vorhergehenden Daten eine wahrscheinlichste Lösung bestimmen. Gruss Reinhard
Die WiiMote hat einen optionalen Gyro (Motion+ attachment) zum anstecken. "The angular_velocity_zeroed shows the Motion+ gyroscope reading. These values are valid only if the Motion+ attachment is plugged into the Wiimote." http://www.ros.org/wiki/wiimote Nur dann ist es eine IMU und kann Bewegungspfade berechnen. Grüße, Peter
Wenn man nur einige Gesten erkennen will und keinen beliebigen 3D-Pfad, dann sehe ich keinen Grund wieso ein Drehratensensor unbedingt nötig sein sollte. Als Lösungsansatz würde ich eine Vorverarbeitung der Beschleunigungsdaten zur Normalisierung der Skalierung durch z.B. verschieden schnelle Bewegungen oder Startwinkel und dann eine Auswertung per HMM vorschlagen. Aber das ist sicherlich nichts was man mal an einem Wochenende macht.
Wenn man keinen Drehratensensor hat, kann man minimale Drehungen nicht nicht von Beschleunigungsvorgängen unterscheiden. Angenommen ein 3-Achs Beschleunigungssensor ist so ausgerichtet: X - Westen Y - Norden Z - Erdkern Das Kippen des Sensors um die Y-Achse um einige Grad sogt dafür, dass der Gravitationsvektor starke Messwertveränderung (Sin(0 +- h)) in X hervorruft. Das kann man im Messwert Y nicht sehen und der Messwert Z ändert sich nur ganz minimal (Cos(0 +- h)). Das kann man von einer linearen Beschleunigung in X-Richtung erst unterscheiden, wenn man die vorangegangene Drehung kennt. Grüße, Peter
Wie gesagt, das müsste man eben irgendwie normalisieren. Genügend Redundanz in den Gesten sollte natürlich vorhanden sein.
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.