Approach 1 - Classify Gestures based on range of Wiimote acceleration values In this approach the acceleration values for X, Y, Z axis are read into the program and then gesture is classified as follows: if(x_accel > 0 && z_accel > 0 && (y_accel > -1 && y_accel < 1) )
| ![]() |
Approach 2 - Using Counter Propagation Neural Network for Gesture Recognition
In this approach the X,Y,Z wiimote acceleration values are recorded for 3 seconds at an interval of 1 second. The following graphs depict this:

These acceleration values are stored in the form of a 12 x 1 vector ( First 4 values - X acceleration, Next 4 - Y acceleration, Next 4 - Z acceleration).
This vector is then fed to the Counter Propogation Neural network as shown below, which is then trained with 3 samples (three 12x1 vectors) for each gesture.
It consists of :
Kohonen Layer - 5 neurons ( 1 for each gesture)
Grossberg Layer - 4 neurons ( Provides output for each getsure )

The Kohonen Layer is used for classification and then the Grossberg Layer is used to calculate the output (binary) for each gesture by comparing it with targets T1, T2, T3 and T4. So for example if I did a Pull up gesture, the output of the network should be 0001.
The following algorithm was used to train the network in accordance with the technique mentioned
in [3]:
1. Get all training data vectors Xi, i = 1,
2 ….L.
2. For each group of data vectors belonging to the same
class, Xi , i = 1, 2 …..N.
(a) Normalize each Xi, i = 1,
2,..N; X’i = Xi / sqrt(∑X2j)
(b) Compute the average
vector X = (∑X’j)/N
(c) Normalize the average
vector, X’ = X /sqrt(∑X2)
(d) Set corresponding
Kohonen Neuron's, Weights, Wk = X
(e) Set the Grossberg
weights, [W1k, W1k….W1k] to output vector Y.
Once the network is trained its ready for gesture recognition.
