The goal of this project is to extract 2 relevant measures stemming from an EMG or nerve signal, the peak cycle amplitude and cycle duration. These two measures as demonstrated in several academic papers in a variety of model organisms, are the measures most consistently correlating with a muscle response. An idealized nerve spike train signal appears as repeating spikes, whose amplitudes and frequencies vary according to the action at hand. However, this method has several issues with both execution and correlating to the physical model. Primarily, depending on the scenario at hand, there will be constant low level nerve activity corresponding to maintaining a given muscular contraction, this activity is extremely difficult to distinguish from noise.
The relevant measure will be quasi-linked in the code, with the program measuring nothing, peak amplitude, or amplitude and cycle duration depending on the magnitude of the signal from the EMG. However, prior to any signal extraction, the program will run a Fourier transform (due to software, hardware and time restrictions, this iteration will likely store data in bins and process after each bin, as opposed to continuous measurement), excise the largest and most common noise signals (such as 60Hz noise emanated by many electronic devices), and transform the spectrum back as a rectified signal. The system will not update (essentially being in a resting state), when there are no peaks above a noise threshold for a given duration. This first threshold, determined by measuring the mean peak magnitude of noise registered by the EMG that is not connected to a live test subject will provide a lower limit on the kinds of information that the program will save. Above this first threshold, the program will record the peak amplitudes of the EMG signal. This can be used to keep the robotic agent at some non-resting state, without any motion. A second threshold, determined by the difference of magnitude between 2 measured peaks, will incite contraction in the arm. Once this threshold is passed, the program will measure all peaks for the cycle, and the the cycle duration (start and finish determined by the difference between each contracting peak and the last pre-contraction peak). The cycle duration will control the length of the contraction as determined by a scale elsewhere in the project, and the highest peak will be used to set the speed of the robotic arm’s motion.
Each signal will correspond to a single robotic degree of freedom, such that this program will be repeated uniquely for each EMG channel. A major limitation at this initial stage of design is available processing time, as the time required to process each signal will likely exceed the time that the biological agent would execute the same motion. As such, this initial setup will have signals taken at a different time than processing. This iteration will be written in Matlab, although later versions of the code will likely be run elsewhere.
Timeline:
Week 1: Execute background research, create an architecture on paper to use as a blueprint for the actual program
Week 2: Write the code for the Fourier transform, bin size to be determined later, harvest the noise signal and find the lower threshold for the data acquisition program
Week 3: Write the code to gather the relevant signals and set the thresholds and bin sizes depending on processing time.
Week 4: Finish writing/modifying code, prepare presentation and write up report for the project.
Sources:
TBD (There are several from the thesis list, I just have to select which ones I am going to use and possibly gather a few others)
What is EMG? You may have defined it in earlier posts. You should probably remind your physics peers in each post of the bio terminology.
As you mentioned, I can see signal processing time as. For future projects one could envision an electronic bandpass filter for real time filtering.