07-15-2010 02:17 PM
hello all,
I am still fairly new to labview and this is my first time posting on this board so please bear with me.
I am working on getting the EMG signals from the arm to control a simple robotic arm with servos being the joints.
first off, i am using Labview 8.0 along with a Clevemed bio radio and an FPGA from Servocenter v3.1usb servo board.
I am acquiring EMG data from the bicep, tricep, wrist flexors, and several other places. but for now, lets just stick to the bicep muscle.
the signal which i get is extremely variant. my problem is that when there is muscle contraction, the signal is Very unsteady which causes the servo motor to shake and move around the desired position.
as you hold the position flxed with the arm, the amplitude of the signal will start fading down as well.
if anybody could help me with some suggestions on how i can control the motor smoothly with my EMG signals i would Really appreciate it. this is the only thing that i have been stuck on for the past week or so.
thank you all!
-Yuri
07-15-2010 02:51 PM
Yuri,
Many researchers are working on that problem or very similar ones. From what I have read in the literature, I do not believe that any established standard protocol for this exists yet.
Variation is one of the most difficult things for researchers working on biological signals. Many articles have been published on filters, adaptive filters, curve fitting, modeling, transformations, and other techniques.
I think physiologists have reported on the "fading down" phenomenon as well.
Now to your problems: Rather than trying to track the EMG signal directly, use the signal to estimate where the arm should go and send it there. Without seeing your data I can only make some guesses. Suppose that a 10% increase in amplitude for 50 ms usually results in a 30 degree arm motion and 20% for 80 ms give 90 degrees. If you measure 15% for 70 ms, you might move the robot 60 degrees.
Lynn
07-16-2010 11:03 AM
Thank you, i will kep this for a later project.
for now i will just give it stages using threshold values, even then though the signal is very noisy and fluctuates. it will pass the threshold and then jump higher and below the threshold value.
To try and smooth this out, i have taken the abs value of the signal, then evaluated the pt by pt RMS then sent That signal into the threshold peak detector pt by pt. using the boolean signal from that, i activate a switch for 2 positions using a Select.
this gives me a very big delay, even when the muscle is held contracted, the RMS will fade down below my threshold and may go back up once the contraction is released.
i need a steady and concrete method for determining on/off for my 2 stages using the EMG signal from muscle.
if anyone has any ideas i would love to hear them.
Thank you!
-Yuri
attached is the process that i have described, please keep in mind this is with Labview 8.0
07-16-2010 12:02 PM
If your primary interest in in servo motor contol, maybe you could consider using the Wii MotionPlus remote with the drivers found here instead of the CleveLabs hardware.
You might be able to use data from the CleveLabs device together with the MotionPlus data...
07-16-2010 01:59 PM
unfortunately i dont have access to wii controllers...
this is for school so i have to work with what i am given.
but that is a neat concept of using the Wii remote to control objects
07-16-2010 02:46 PM
You may also want to post this question on our Biomedical User Group located HERE
10-13-2012 09:34 AM - edited 10-13-2012 09:36 AM
Many researchers are working on that problem or very similar ones. From what I have read in the literature, I do not believe that any established standard protocol for this exists yet.
Variation is one of the most difficult things for researchers working on biological signals. Many articles have been published on filters, adaptive filters, curve fitting, modeling, transformations, and other techniques.
I think physiologists have reported on the "fading down" phenomenon as well.
Now to your problems: Rather than trying to track the EMG signal directly, use the signal to estimate where the arm should go and send it there. Without seeing your data I can only make some guesses. Suppose that a 10% increase in amplitude for 50 ms usually results in a 30 degree arm motion and 20% for 80 ms give 90 degrees. If you measure 15% for 70 ms, you might move the robot 60 degrees.
Lynn
can u please tell me some tips on how to do this as i am trying to do the exact same thing on labview....i think i need to use fuzzy logic... not sure of this though
any piece of advice on this topic is welcome
thanks