This project achieves virtual arm control by human EMG signal. An Arduino microcontroller is used. The Python modules used include including pySerial, matplotlib, NumPy, and pygame.
Our hardware collects EMG signals from the bicep and tricep performing a pulling, pushing, and resting motion (2CH_EMG_filt.ino). The sampled data is under the directory “/(name)_Sample_data/”.
The raw voltage data is sampled by electrodes on the arm, then processed into an analog voltage by the Biopill EXG device. This signal is sent to a microcontroller which converts it into an ADU which is filtered with a [74.5,149.5] bandpass to produce EMG signals (emgMath). The data is communicated to the PC with PySerial (/Experiment_pipeline/), after which the EMG signal is rectified, cropped, and a rolling average taken. We calibrate each individual’s EMG data by analyzing their resting state data and setting an offset and gain multiplier for each individual (emgMath).
The data is then imported into dynamics simulation module, where the force is estimated by the magnitude of the EMG signal . The force direction is determined by the differential between the bicep and tricep EMG data. This force data is then fed into a dynamics simulation which calculates the motion of the arm (emgMath).
The resultant dynamic simulation is then plotted by matplotlib (plotUtils) or visualized by the virtual arm in pyGame (Experiment_pipeline/armtest_withSignal_both.py). The software parameters that correlate the virtual arm's motion with the EMG signal input and real life motion in multiple datasets is then found.

Log in or sign up for Devpost to join the conversation.