The hardware schematics for the glove and PCB routing as well as the bill of material will shortly be made available on the svn
for people to be able to make their own glove. We use 4 PCB as a PCB supplier. For about 200$ you should be able to make your own glove.
This part of the hardware that is responsible to supply power to the glove hardware. The power is supplied by a 3.7V 1 cell Li-Po battery.
The hardware also have charging abilities.
We use a total of 10 sensors to recognize the movements of the human hand. We have a tri-axis accelerometer, a dual-axis gyrometer as well a a single-axis gyrometer as well as 4 flexible resistors for the fingers.
The microcontroller on the glove is a PIC18F from Microchip. The source code of the PIC microcontroller will soon be made available on svn.
The wireless link is realized with Bluetooth using the Serial Port Profile sub-protocol.
Data acquisition interface
This is the module that reads data from the bluetooth glove.
Data acquisition system
This is the layer that reads data from the glove. We used the bridge design pattern to decouple the type of the source from the signal processing code. This was done to make unit testing available on the source code.
Move definition interface
This is the user interface that allows the user to define moves and train the system to recognize them.
Move matching system
We implemented a Kalman Filter to compensate for the poor quality of the sensor used. Using the Kalman filters we can get non-drifting pitch and roll from the glove.
This module prepares the signal before it can be processed by a neural network. We downsample it and extract somes features manually.
Artificial neural network
We use an artificial neural network to do the move recognition. We use the librairy FANN (fast artificial neural networks) and the Cascade Correlation topology.
System control modules
This is the user interface that allows the user to assign movements to MIDI notes or hotkeys.
Computer control interface
This is the module that can send hotkeys when movements are recognized
This is the module that can send MIDI notes when movements are recognized. We use the RtMidi library.