Hi folks. My 8 bit unit finally arrived today so I can start to experiment. I was wondering if anyone has any advice on using this for EMG based applications, specifically EMG of the facial muscles.
Dave, see the EOG pdf on this thread, shows how to derive eye movement info from EOG. EOG is basically EMG in facial area; but of eye movement alone. Not including facial expression muscles. You'd need to switch off the EOG detection when facial expression engages.
That EOG algorithm may be too compute intensive for the 8 bit unit to handle alone. But if the 8 bit streams to something like a Raspberry PI, would be sufficient.
There's a lot of fun to be had with EMG and OpenBCI.
First, if you are not planning to store data locally to an SD card, you can remove the library inclusion in the code, and the SD code tab in order to access more program space on the Arduino chip.
Also, you should look at the signal quality with and without using the BIAS inclusion. EMG is so bright, that the BIAS may be more trouble than it's worth. You can also compare using the BIAS to just using the AGND as your driven connection.
Next is SRB. The board is setup to connect the SRB2 pin to all of the P inputs, so the idea then is to use the N inputs as electrodes. So, in the GUI, you can remove the P inputs from SRB2, and use each channel's P and N input as a differential. I don't know much about the best way to gather EMG from multiple close electrode locations, but that might help. The other option would be to create 'Y' connector(s) to gang the P inputs together in groups for specific reference points...
Hi Biomurph. Many thanks for your advice. I am still setting up my workbench for doing experiments (So many projects.. so little space )
Not sure about the acronym SRB?. I am planning to use the P and N as differential so to reduce crosstalk.
if you talking 'Y' connectors to physically group the electrodes then I have already covered that in another post. Once I have the locations worked out I will be embedding the electrodes into a light weight silicone prosthesis that be worn. I estimate 3 pieces - the first for eyebrows, eyes and other EOG. Second smile and lip lifts, and the third for the chin and bottom lip. I already have the muscles I want mapped out but it was easier to list them like above than to type long latin
Ok I finally got the time to set up the test system (as described by the docs) and was able to see EKG and EMG.
One thing that puzzled me re the EMG was that I could see the signal when I clenched my arm, but the signal then died off even though my arm was still clenched. Is that normal?
I was able to see a difference in amplitude on the strength of the clench but not the duration.
If so then this be an issue as I need to know for how long the muscle is active so I can do propotional control.
It is normal to see a slight drop-off after the initial EMG spike, especially if you flex really quickly at first. That being said, it should not trail off completely while you are continuing to flex.
For my EMG-powered projects I like to target the forearm muscle group. I usually put 1 electrode on each end of the muscle and then use those 2 electrodes as the N and P inputs of a single channel # (pin 3 for instance). Then I connect the BIAS or GND pin to my elbow (relatively electrically neutral) to establish a common ground between the OpenBCI board and my body.
You must remember to remove the selected channel from SRB2 (and BIAS if you plan on simultaneously using the BIAS with other EEG channels). You can do this in the CHAN SETTINGS tab of the Processing GUI's EEG Montage.
Also, if you're going to be doing a lot of work with EMG, try out this modified GUI branch that gives you a nice visualizer for EMG through channel 3. Note: you'll want to comment out the following line in the EEG_Processing.pde file, so that it doesn't try to write the data to the other Serial Out:
Many many thanks for that Conor. I brought the board primarily for the EMG capabilities, and it's good to see others are doing the same.
Do you know what happens when the muscle is static but tensed? I am in the midst of another project and so won't have the chance to get back to the OpenBCI board until the weekend. But I can still think of designs if I know the parameters I am working to.
For example - you lift a weight with your arm, hold it, and then set it down again slowly. Whats happens with the holding where the muscle is still active, and then the reduction as the muscle is slowly relaxed.
Again many thanks for all of your help. I'll definately try the new version of the GUI. Dave
Comments
Many thanks for your advice. I am still setting up my workbench for doing experiments (So many projects.. so little space
Not sure about the acronym SRB?. I am planning to use the P and N as differential so to reduce crosstalk.
if you talking 'Y' connectors to physically group the electrodes then I have already covered that in another post. Once I have the locations worked out I will be embedding the electrodes into a light weight silicone prosthesis that be worn. I estimate 3 pieces - the first for eyebrows, eyes and other EOG. Second smile and lip lifts, and the third for the chin and bottom lip. I already have the muscles I want mapped out but it was easier to list them like above than to type long latin
Many thanks for your help
Dave
Hi Biomurph.
Ok I finally got the time to set up the test system (as described by the docs) and was able to see EKG and EMG.
One thing that puzzled me re the EMG was that I could see the signal when I clenched my arm, but the signal then died off even though my arm was still clenched. Is that normal?
I was able to see a difference in amplitude on the strength of the clench but not the duration.
If so then this be an issue as I need to know for how long the muscle is active so I can do propotional control.
Many thanks for any advice you can provide.
Dave
Conor
I brought the board primarily for the EMG capabilities, and it's good to see others are doing the same.
Do you know what happens when the muscle is static but tensed? I am in the midst of another project and so won't have the chance to get back to the OpenBCI board until the weekend. But I can still think of designs if I know the parameters I am working to.
For example - you lift a weight with your arm, hold it, and then set it down again slowly. Whats happens with the holding where the muscle is still active, and then the reduction as the muscle is slowly relaxed.
Again many thanks for all of your help. I'll definately try the new version of the GUI.
Dave