Sensorhandschuh mit Gestik- und Positionserkennung

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche


Projektplan.JPG Sensorhandschuh full image2.jpg


Ziel unseres Projektes war es einen Handschuh zu konstruieren, der

- Fingerneigungen signalisiert und somit die Handgestik erkennt
- die x-y-Bewegungen der Hand wahrnimmt
- die PC-Maus-Eingaben ersetzen kann

EVA-Plan

Eingabe:

• geeigneter flexibler Handschuh mit
• Biegesensoren für jeden Finger (Klicken, Greifen, ...)
• Beschleunigungssensor (xy-Koordinaten + Geschwindigkeitsberechnung)


Verabeitung:

• µC/Dev.Board

• Software zur Umrechnung der Sensordaten


Ausgabe:

• USB-Verbindungskabel

• Windows-Maussteuerung / PC-Software


Gewählte Komponenten

Handschuh: Mizuno Bio Flex Allwetter Golfhandschuh

Biegesensoren: Sparkfun Flex Sensor 2.2

Beschleunigungssensor: Bosch Sensortec BMA280


Arbeitsaufteilung

Hardware

Die Konzipierung der Sensorhandschuhrealisierung ging in erster Linie allgemein um die technischen Möglichkeiten, die letztendlich der Handschuh umsetzen kann.


Handschuhkonstruktion

Es wurde ein Golfhandschuh ausgewählt, der flexibel und bequem ist, aber auch eine gute Lüftung durch die Fingerlöcher besitzt. Ein positiver Aspekt dieser Lüftungslöcher ist zusätzlich die Befestigungsmöglichkeit der Biegesensoren. Die Biegesensoren sind simpel mit Fäden durch die Löcher befestigt, was eine gewünschte Verschiebung der Sensoren begünstigt und somit eine einmalige Aufklebung der Sensoren erspart.

Mittig auf dem Handrücken sollte der Beschleunigungssensor befestigt werden, um eine zentrale Berechnung der Handposition bestimmen zu können.

Die Biegesensoren und der Beschleunigungssensor sind auf einer Zwischenplatine mit jeweiligen Zwischenschaltungen versehen. Diese Platine ist direkt auf das Arduinoboard montiert und verbunden.

Das Arduino I/O-Board wertet die aufgenommenen Daten letztendlich aus und sendet diese per USB-Verbindung zu einem PC. Die Befestigung des Arduinos sollte am Handgelenk/Unterarm am besten mit einem Klettverschluss-Band bewerkstelligt werden, sodass es dem Benutzer nicht bei der Bewegung einschränkt.


Beschleunigungssensorplatine

BMA280 layout.pngBma250 front.jpgBma250 back.jpg

Da der x-y-Sensor sehr klein ist, musste eine extra Platine in der TH hergestellt werden. Die Platine ermöglicht, dass alle Pins des Sensors mit der Zwischenplatine verbunden werden kann. Als Vorlage der Platine diente die die Platine des BMA250 aus dem Netz. Die Pin-Belegung des BMA280 gleicht der Belegung des BMA250.


Biegesensoren

Flex Sensor.jpgFlexsensor info.PNG

An jedem Finger des Handschuhs wird ein Flexsensor befestigt. Dadurch kann je nach Programmgebrauch jede mögliche Handgestik umgesetzt werden. Wir haben uns speziell auf den Zeigefinger (Linksklick-Funktion) und den Ringfinger (Rechtsklick-Funktion) festgelegt. Wie auf den Bildern zu erkennen, wird mithilfe einer Spannungsteilerschaltung ein gewisser Spannungswert mit den Fingerbewegungen generiert. Dieser Spannungsteiler ist auf der Zwischenplatine zu finden, die mit dem Arduinoboard verbunden ist. Der Spannungswert wird wiederum in der Software umgerechnet und entspricht, je nach Initialisierung, einer bestimmten Aktion. Weiteres hierzu ist in der Softwareumsetzung beschrieben.

Software

Fingeraktionen

Um die bereits dargestellten Funktionen (Klicken, Greifen, ...) für das Arduino erkennbar zu machen, ist eine Software nötig. Diese wurde bereits größtenteils implementiert und übernimmt das Auslesen der fünf Biegesensoren. Das Programm selbst ist in einer einfachen Klassenstruktur aufgebaut.

Klassendiagramm.JPG

Innerhalb der zusätzlichen Funktion "initial_bendsens()", werden dann genau fünf Instanzten der Klasse "Bend_sens" angelegt. Jede dieser Instanzen steht für einen der Finger der Handschuhes. Anschließend wird der Handschuh vom Benutzer initialisiert (Sensorwerte im gebogenen und ungebogenen Zustand werden aufgenommen). Die erhaltenen Werte "bend" und "unbend" werden anschließend verwendet um eine Hysteresekurve zu erstellen. Die aktuellen Werte der Biegesensoren "current" werden dann dauerhaft mit dieser Hysterese verglichen um zu bestimmen ob die Sensoren gebogen oder ungebogen sind.

400

Hierbei steht "1" für einen ungebogenen Finger und "0" für einen gebogenen Finger. (Alle Werte werden in der "Serial.print" Ausgabe des Arduino-Studios angezeigt)

Positionsauswertung

- Beschleunigung wird in die Strecke umgerechnet
- Strecke wird als Positionsdifferenz des Mauszeigers an PC gesendet

Nenndaten:

- Beschleunigungssensor wird über SPI-Schnittstelle angesteuert
- Beschleunigung ±2G, Auflösung 0,244mg/LSB
- Messfrequenz 500Hz (2ms)

Momentaner Stand für die Fortführung dieses Projektes

Die grobe Hardwarerealisierung wurde größtenteils abgeschlossen. Des weiteren muss für diese Projekt hauptsächlich eine funktionierende Softwareprogrammierung für Gestik- und Positionserkennung bearbeitet werden. Leider haben wir es nicht geschafft, den Softwareteil ausreichend zu entwickeln um unser Ziel, eine Maussteuerung mit dem Handschuh zu ersetzen, zu erreichen. Es hat leider unseren zeitlichen Rahmen für das Projekt gesprengt. Die nächste interessierte Projektgruppe kann sich demnach hauptsächlich um eine funktionierende Softwareumsetzung kümmern.

Softwarerealisierung

Die Software ist komplett mit einer Arduino Programmiersoftware realisierbar (ARDUINO 1.6.7).

Flexsensorensoftware

Eine Testversion der Gestikerkennung ist bereits vorhanden. Dieses Programm kann noch weitergeführt und verfeinert werden. Das Programm sollte so erweitert werden, dass beispielsweise ein gebogener Zeigefinger einen Mausklick ausführt. Hierfür stellt Arduino bereits forgefertigte Funktionen zur Verfügung. (Ansatz dieser Lösung bereits im Programm eingebaut)

Positionssensorensoftware

Die bisherige Software für den Beschleunigungssensor hat bisher leider noch keine zufriedenstellige Auswertung und ist noch fehlerhaft. Jedoch findet man in unserer Datensammlung und im Netz viele verschiedene Code-Beispiele, die Basiswissen über einen Beschleunigssensor-Code gut übermitteln können.


Boardbefestigung am Arm

Das Arduinoboard und die darauf befestigte Zwischenkreisplatine ist noch nicht an einem Armband befestigt und liegt bei jetziger Testphase noch neben dem Arm. Für eine verbesserte und bequemere Handhabung sollte eine Armbefestigung des Arduinos noch konstruiert werden.


Anwendungsvorschlag

Der Ursprungsgedanke für dieses Projekt war es, ein Computerspiel namens Black and White mit dem Sensorhandschuh zu steuern. Das Spiel wird tatsächlich im Spiel mit einer optisch sichtbaren "Gotteshand" gesteuert und könnte sehr schön mit den verschiedenen Handgestiken vom Handschuh ausgehend durchgeführt werden.

Blackandwhite hand.jpg


Datensammlung/Dokumentation

Projektdaten incl. Software

Bilder - Copyrights ©

Beschleunigungssensor :

http://dsscircuits.com/media/com_hikashop/upload/3-axis_digital_accelerometer_pcb_-_bma250_-_front.jpg
http://dsscircuits.com/media/com_hikashop/upload/3-axis_digital_accelerometer_pcb_-_bma250_-_back.jpg

Screenshot - Black and White 2 :

https://www.lionhead.com/media/3389/20050302_CowHandFlicking.jpg