Please click on kickstarer page for more detail.
On-body sensing has been extensively explored by researches in the past decade. In this work, we present NecX, using neck as an input device. The system exploits surface Electromyography (sEMG) to detect the intensity of neck muscle. Our system captures the conducted current flowing through our sensor when the muscle is stressed, and uses the signal variations to identify a neck gesture. In our current prototype, we designed 5 neck gestures including rotation and tilt, etc. To evaluate the system, we conducted a controlled user study and collected data from 2 users, presenting an average classification accuracy of 94.1%. Furthermore, we implemented a real-time system to apply NecX in the gaming control.
For hardware part, to measure the sEMG on the neck, we use the OLIMEXINO-328 and two SHIELD-EKG-EMG boards, each of which collects sEMG data from one side of the neck. Electrode pads are attached on the user’s neck; the red pad (positive) and black pad (negative) are instrumented on the side of neck and white pad (ground) is attached on the back of the neck. Instrumenting the white pad behind the neck (i.e., at a neutral position) can reduce ambient noise. The Olimex-328 is an Arduino-based motherboard and has a 10-bit ADC on board. We sample the analog data at 256 Hz, which is sufficient for our use case as we expect a neck gesture should be relatively slow. Finally, the data are streamed to a laptop for gesture recognition through Bluetooth. To better understand the capability of Olimex-328, we simulated the circuit in MultiSim and verify that the board has a low pass filter with the cut-off frequency of 3.4 kHz. We also designed a 3D-printing case for this prototype.
For Neck Gesture Detection, any muscle movements on neck causes a current flowing through the electrode pads, which raises the output voltage from the Olimex-328 board. When muscle relaxes, the voltage drops to the baseline. Our first step is to identify signal variations, and to recognize an event of muscle excitation. Figure 7 shows the process of gesture segmentation. We first smooth the raw data to remove noises. We next applied the 1st derivative on both channels, after which we took the absolute value of both channels and summed them up (see the figure of Total Variation in Fig 7). To identify the data segment of a muscle movement, we next apply another 1st derivative on the curve and apply the thresholds on it (the figure of 1st Derivative in Fig 7). The intersection of the curve and the threshold line (marked as red dots in Fig 7) represents the start and end of a muscle movement event, which shows as the green segment in Fig 7.
« Back to Portfolio