controlling prosthetic arm using EMG signals (2022)


  • Human arms are a primary organ that is not only used for sensing and touching objects but also controlling and communication. There are many reasons that a limb can’t be cured and has to be amputated as war, accidental trauma and congenital anomalies. Transradial amputation is the most common one (a surgical procedure in which the radius and bones of the lower arm are cut removed from the body). Transplant or prosthesis are the only options in this case.
controlling prosthetic arm using EMG signals (1)
  • Recently Human interface machines became a part of solving this problem which reads the bio-signals like EOG, EMG, and EEG, and controls an actuator to perform the same tasks of the lost part.
  • Because I don’t have any background on the prosthetics the first step in my project was to do a large literature review to see, what is prosthetics? How they are controlled? What normally researchers do in this project? Who are the lead companies in that industry and how do their projects look like?

literature review

  • In my project, I will be using the EMG signal. which is generated when the muscles are flexed. Its amplitude depends on the muscle stimulation in a direct proportion way. When the muscle is contracted, the amplitude of the EMG signal on that muscle is high. And when the muscle is relaxed, the amplitude of that signal is low.
controlling prosthetic arm using EMG signals (2)
  • There are two main reasons for choosing the EMG signal. Firstly, it can be easily detected and processed to remove any noise from it as its frequency is about 500Hz. Secondly, it can be detected with some external electrodes so there will be any need to place any electrodes or needles inside the human body.
  • The main concept of the project is to create a robotic arm that can be used as a prosthetic arm for an amputee. Any prosthetic has to be able to perform some if not all the functions of the normal organ. Also, it needs to has a low cost.
  • For the hand, the main functions are controlling, sensing and communicating. In my project, like most of the prosthetic hand, I will be focusing on controlling the hand Because the human hand has a complex control with many degrees of freedom.
  • I found that most companies and researches are trying to do it to provide a robotic arm that is able to perform different types of motions. A better hand is the hand with the higher number of motions that it can perform (but the industrial companies seeks both aesthetics and functionality of the hand here my main concern will be more about controlling the hand).
  • What it is usually done in these projects is to place more than one sensor on different body muscles. So, they have many readings from different sensors. And depending on each different reading pattern they make the controller on the hand perform a different motion. This means that more sensors you get. More motions you will have.
  • For example in this project, a Bachelor thesis from Metropolia University of Applied Sciences in 2018, they placed three sensors on three different muscles: the forearm muscle, the biceps and the triceps. Depending on those readings, the robotic arm will move. By giving a diverse motion with each different pattern, the arm makes different motions. This process is shown in the below figures.
controlling prosthetic arm using EMG signals (3)


  • My project will be mainly focusing on introducing some controlling ways that never existed before. It can be considered more as lab research than to provide a final product that an amputee can use. Also, it is a proof of concept that with only one cheap sensor I can make an arm that does many motions without the need of many sensors on the arm muscles.
  • In my project Iwill not use this way of determining the motion for two reasons. First itrequires more than one sensor which means more money as the muscle senor is themost expensive thing in that project and I want my project to be as much cheapas possible. The second reason is that the arm still cannot perform manymotions as it still depends on the number of sensors and the way the readingsare took.
  • In my project I want it to be as much simple as it could for the person who will use the hand, low cost and support infinite number of motions. What I will do is that I will make the arm itself take the decision on what motion to take. The patient will only flex one muscle (I choose that it will be the forearm muscle) and the machine itself determine what is the suitable motion to take at that time object classification algorithms.
  • To simplify myproject, I will divide it into two stages. The first one is the simple one. Inthis step I will use an Arduino connected to the muscle sensor and from thereading of the sensor the Arduino will control the motion of the arm. Thepurpose of that step is to get used to the sensor and the motion of thefingers.
  • The second stage which is the advanced stage is that I will use an object classification model and connect a camera to the arm. To let the machine itself determine what is the suitable grip to hold the object in front of it. with that we can increase the number of grips that the hand can perform as we can as the grip now depends on the code we write not the sensors we place.

The sensor I choose to work with is called MyoWare muscle sensor for many reasons. It’s cheap compared to any other sensor and I want the arm to be as much cheap as possible, small in size and this is an important thing because it will be suck on a patient’s hand and The most important that I am not concentrating on determining the EMG pattern and classifying it, I just need something to give me a value when the muscle is flexed because like I said before the machine itself in the project will determine the required motion.

(Video) Update: Controlling the Dextrus Hand with EMG signals.

controlling prosthetic arm using EMG signals (4)
  • The arm that Iwill use to simulate the motion is called inmoov hand. It is an open source handthat can be 3D printed. My college Arwa Hesham will be the responsible ofprinting and the assembly of the arm. And when the arm is ready I will beresponsible of controlling it.
controlling prosthetic arm using EMG signals (5)
  • When I received the sensor the first step was to test it to know its readings. It first required to solder some male pins to it so it can be used with the Arduino(image of the pins).
  • Then I used the Arduino analog inputs to know the range of its readings. I stuck it on my forearm and found that the range of the readings when i flex my muscle is about 220 in the analog readings this means that in average my hand produce about 1.2v during the flexing. so in my code i thought about setting a threshold value that the sensor readings can be compared to.
  • After knowingthe range that my sensor reads and how the analog input is received I startedto work in the first stage of my project.

First stage of my project:

  • The Arduino codethat I will write will do more than one motion. That motion will be determinedby the person from his body flexing.
  • I will make thehand do three motions from the Arduino code. Those three motions will be asfollow relax the hand, do a fest and pointing (will be made by the hand whenthe arm is ready for controlling meanwhile I will use three LEDs to simulate themotion of the hand).
controlling prosthetic arm using EMG signals (6)
  • The required motion will be determined from the number of flexes that will happen in a period of time. What will happen is that the muscle sensor will be connected to the forearm muscles. And from the number of flexing that the forearm muscle will do it will get the required motion.
  • So for example thenormal position of the arm will be relaxed. If the person flexed his arm onetime the arm will do a fist. But if he flexed his arm for two times fast itwill point. And when the arm is creating a fist or pointing, and he flexed themuscle again it will relax.
  • The below figure shows what i mean in a given period of time if it was flexed one time it will make a motion if it was flexed two times in a period of time it will do another motion. When the person does the first flex the microcontroller will wait for a time (t) to receive another flex. If he received another flex this means that it requires doing a fist. But if he didn’t receive another thing this means that the arm will point.
controlling prosthetic arm using EMG signals (7)
  • And after doingany of these motions. When the person flex his muscle again the hand returns tothe zero position.
  • The feast willalso be used as a grip to hold objects.

After many trials, removing errors from the codeand testing the code this was the final code I got

controlling prosthetic arm using EMG signals (8)
controlling prosthetic arm using EMG signals (9)
(Video) DAUST Freshman Engineering students use EMG signals to control Robot Arm -
#define sensorPin A3 // select the input pin for the sensor signal#define threshold 170 //the muscle is moving#define relax 8#define fist 9#define point 10void setup() { Serial.begin(9600); //starting serial commnication pinMode(relax,OUTPUT); pinMode(fist,OUTPUT); pinMode(point,OUTPUT);}void loop() {int state=0; //shows the number of the signals (the state of the arm)int val1 = 0; // variable to store the value coming from the sensorint val2 = 0; // variable to store the value coming from the sensorint val3 = 0; // variable to store the value coming from the sensor digitalWrite(relax,HIGH); Serial.println("motion 0"); //prints that the arm is now relaxingval1 = analogRead(sensorPin); // read the value from the sensorSerial.print("the value =");Serial.println(val1); // print the amplitude of the signal on the serial monitorif (val1 >= threshold){ //is the value > the shreshoulf value(the muscle moved) state=1;} //we recived the first signaldelay(1000); //wait a secondif (state ==1){ //only go through this loop if it reived an initial signal for(int i=0;i<500;i++) //this loop will see if another signal is recived through two seconds { val2 = analogRead(sensorPin); //start reading from the sensor again quickly if (val2 >= threshold){ //if it recived a signal then set the state =2 state=2; //get out of the loop i=499;} delay(5);} }delay(1000); //wait a secondSerial.print ("state =");Serial.println(state);if(state ==1 ){ digitalWrite(relax,LOW); digitalWrite(fist,HIGH); Serial.println("motion 1");int dummy_comdition=0; //this condtion see if another signal is recieved returnswhile (dummy_comdition ==0){ val3= analogRead(sensorPin); // read the value from the sensor if (val3 >= threshold){ //reamin in the loop till another flex is made dummy_comdition =1;}}} //set dc to true to do out of the loop if(state ==2 ){Serial.println("motion 2");digitalWrite(relax,LOW); digitalWrite(point,HIGH); int dummy_comdition=0;while (dummy_comdition ==0){ val3= analogRead(sensorPin); // read the value from the sensor if (val3 >= threshold){ dummy_comdition =1;}}} //now we will write a code for each stateSerial.println("code end");delay(1000); //wait a second}
  • I will discussthe main parts of the code
  • At the beginningthere’s a threshold value that is set to 170. This threshold value will becompared to the readings of the sensor. So, it will determines when the muscleis flexed when the sensor reading is more than 170.
  • Like I saidbefore there will be three motions that the hand will do. Now the hand that Iwill test on it isn’t ready so instead I will use three LEDs when each LEDilluminate this means that this particular motion is achieved.
  • There is avariable named state which will determine the motion that the hand willperform. And there are three loops in the code. Those are the main parts of thecode.
  • At the beginningof the code the state is set to zero which means that the hand is in the relaxstate. the void loop will keep running. In each run it will take the reading ofthe sensor (line 27) and compare it with the threshold value that I set before(line 31).
  • When the valueis more than the threshold value this means that the person flexed the muscle.And this will set state to 1(line 32).
  • When state isset to 1 the code will run the first loop (line 36). This loop will run 500time this will take two seconds because of the delay that is inside the code(line 41). in each loop it will read the sensor value if it exceeded thethreshold again (this means that the person flexed his muscle again) it willset the state to 2(line 40). If the person didn’t flex the muscle again thestate will remain 1 and the two seconds will just pass.
  • After those twoloops. Depending on the value of the state the code will run the second or thethird loop (line 52 and line 66).
  • Both loops havethe same sequence, they are just having different outputs.
  • For example, thewhat the first loop do is it set the lap that indicates the fist on (later thiswill change to the motion of the hand to the fist position). Then it will enteranother nested loop. This second loop will run infinitely. In each iteration itwill read the sensor signal again till the person flex his muscles again itwill break put of the loop and make the hand relax again and set everything tothe beginning and start the code all over again.
  • the below video shows the code working with the muscle sensor. the three motions were formed on LEDs. each led shows a motion that the arm will perform.

  • This was thefirst step of my project.
  • With this methodI got three different motions with only one sensor and the patient will notneed to be trained to set different muscles together.
  • The next step ofthe project will be to connect a camera and create a new program that classifythe objects that the camera see. So, the hand can change the grip depending onthe object that is in front of it.

Second stage

  • At the beginningI need to use a CNN Architecture (Convolutional Neural Network). Which are akind of multilayer neural network that are designed to recognize the visualpatterns directly from pixel images. In other words classify what is inside theimage.
  • There are manyof these architectures that are available like LeNet, AlexNet, ResNet, GoogLeNet,VGG and more.
  • After a deepsearching and reviewing many opinions. The one I chose to work with is GoogLeNetmodel because of the features I found in. its also the winner of ILSVRC (ImageNet Large Scale VisualRecognition Competition) in 2014. Which is an image classification competitionthat is held every year. It achieved atop-5 error rate of 6.67% This is very close to human level performance.
controlling prosthetic arm using EMG signals (10)
  • This pre-trainedmodel can detect 1000 class that are found here also on gethub.

  • The next stepnow is to train this model to detect what the camera that is next to the handto see.
  • The programingthat I will write for that task will be written in python. I choose python todo this because of its easy syntax and its easily to access camera from it.
  • I will also use OpenCV(open computer vision) which is the most known library when it comes to imageprocessing and object classification. It was firstly developed by intel and itsfree license is open source.
  • this is the main site of thelibrary. It includes many tutorials, examples and modules describing everythingyou need to use with this library starting from how to setup the library tillhow to create many projects with it.
  • After deepresearch on how to train the mode to do a certain task in python and how to useOpenCV library with this it was the time to write my own program that willtrain this pretrained model to detect the 1000 object.
  • After manytrials, debugging and removing errors. This was my first program to write
controlling prosthetic arm using EMG signals (11)
  • Now I willexplain the sequence of the code.
  • First I includethe OpenCV library and numpy library (library that is used for matrixcalculatoins)
  • Then I includethe GoogLENET model that will be used. Its basically formed from two fileswhich are (.caffemodel) and (.txt) andwe will use a function called cv2.dnn.readnetformat that reads the format ofthe model and named it net (line 7).
  • Now I opened thefile that includes the 1000 class that will be detected to determine the nameof the object when it is detected (line 9 and line 10).
  • Then we willstart the video recording. I will be usine the default camera of the laptop(number zero) for just now (line 11).
  • Then we startthe continues loop of the controller (line 13).
  • We take a framefrom the camera then we need to resize this frame to the required size by themodel (line 15 and line 17).
  • Then we send this frame to the model to becompared with the 1000 class that it has (lines 19 and 20)
  • Then the outputof this process is received from a function named net.forward and I will storethem in a variable named classification (line 20).
  • Classificationwill be an array formed from 1000 item in each index there is a probabilitycame from the comparison of the items we have in our frame with the 1000 classthat this model has. Most of the numbers will be in range of zero because theydidn’t match most of the classes and it only matched one class.
  • Now we will usea function called cv2.MaxMinLoc. what this function basically return is fourthings. The location of the highest number in that array and its value. Thelocation of the lowest number and its value.
  • So, basicallyfour things. But we don’t need the location and value of the minimum values. Wejust need the high ones cause they represent the highest probability that thisobject in the frame is classified as one of the 1000 class
  • But also, allobjects that was inside the frame wasn’t similar to any of the classes we haveand the highest probability we have is in range of 0 (for example in range10^-5). That is why we will need another filter that will assure that the highestprobability we got is in a suitable range.
  • That is why thecondition in line 27 was made. It see if the probability was higher than 20%then we will accept it. if it was less than this its not accepted. The reasonwhy I used 20% was just trying and error. At the beginning I used to print thehighest probability value and I found that in most of the time when thereadings range are more than 20% the object is determined correctly.
  • Then if it wastrue we get the name of the object from the text file named lines that I wrotebefore and print it on the video (line29 and 30). Else it was less than 0.2 then print unknown and finallyprint the frame on the screen to appear as a video (line 38) then clear all thedata and start the loop again.

Those are some screenshots of this code while itis working

controlling prosthetic arm using EMG signals (12)
controlling prosthetic arm using EMG signals (13)
controlling prosthetic arm using EMG signals (14)
  • And there aremany other things that it can detect.
  • Now I have aworking Arduino code and a working python code. We will need now to link themtogether. I need the classifications that appears on the screen to be sent tothe Arduino to control how the hand will hold that object.
  • So what willhappen is that the python will only be responsible to determine the object andcontinually send the object’s name to the Arduino. And the Arduino will beconnected to the muscle sensor to detect its readings. And when the person flexhis hand the robotic arm will close in away to hold the object that it already know what is it.
  • That means thatI have to connect the two codes together.

Combining the two codes

(Video) Web Application for Efficient Parameter Extraction for Prosthetic Arm Control using EMG signals

  • There is acommunication library that I found designed for this purpose. It starts a serialcommunication between the python and the Arduino with the baud rate that youdetermine in both.
  • And this was thepython code after adding the library and doing some modifications.
controlling prosthetic arm using EMG signals (15)
controlling prosthetic arm using EMG signals (16)
import cv2import numpy as npimport serialard = serial.Serial('com23',9600)model = "bvlc_googlenet.caffemodel"protxt = "bvlc_googlenet.prototxt.txt"net = cv2.dnn.readNetFromCaffe(protxt,model)text_file = open("classification_classes_ILSVRC2012.txt","r")lines = text_file.readlines()cap = cv2.VideoCapture(0)while True: ret,frame = model_frame = cv2.resize(frame , (224,224) ) blobfromImage = cv2.dnn.blobFromImage( model_frame , 1 , (224,224) ) net.setInput(blobfromImage) classifications = net.forward() min_value,max_value,min_loc,max_loc = cv2.minMaxLoc(classifications) class_probability = max_value class_number = max_loc if class_probability > 0.2: label = lines[ class_number[0] ][0:-1] print(label) if(label == 'coffee mug'): ard.write(b'1') elif(label == 'water bottle'): ard.write(b'2') elif(label == 'cup'): ard.write(b'3') elif(label == 'iPod'): ard.write(b'4') elif(label == 'cellular telephone, cellular phone, cellphone, cell, mobile phone'): ard.write(b'5') else: ard.write(b'0') cv2.putText(frame,label,(0,30),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2) else: label = "unknown" cv2.imshow("frame",frame) key = cv2.waitKey(1)& 0xFF if key == ord("q"): breakcv2.destroyAllWindows()
  • The library workpretty simple you need just to define the port that the Arduino is connected toand define the baud rate and using a simple function you send characters to theardunio.
  • I will test thesystem at the beginning using some objects like if the object that was in frontof the camera is a coffee mug,it will send the Arduino 1. If it was waterbottle it will send 2. If it was cup it will send 3, if it was an ipod it willsend 3. If it was a cell phone it will send 3. If it was another object it willsend 0.
  • And the Arduinowill do a different motion depending on what is sent to it.
  • This was theArduino code that I created to do this task. Basically it is connected to fivedifferent LEDs it will light one depending on the reading on the object infront of the camera.
controlling prosthetic arm using EMG signals (17)
  • This code ispretty simple. It just waits till it receives the object reading for ten timessuccessively the it witch on the lamp that simulate that object.
  • Those video shows the code working. what happens in those videos is that when an object is set in front of the camera the Arduino will produce a different output and set a specific led to high depending on this object.

  • Now I mergedthis code with the muscle sensor code so when the person flexes his hand thearm will be closed but also depending on what is in front of the camera.
controlling prosthetic arm using EMG signals (18)
controlling prosthetic arm using EMG signals (19)
controlling prosthetic arm using EMG signals (20)
  • Those are thefinal two codes that I have
  • This is the time now to start working on the hardware part. To control the inmoov hand instead of the LEDs.

Starting to control the hand

  • My colleague Arwa and I cooperated to complete the final step of the project. Firstly, I put the the servos in its place. and connected the wires that will move the fingers.
  • In the inmoov hand, the way of controlling the fingers motion is by two wires connected to a servo motor. Therefore, if the servo motor rotated in a certain direction the finger will open and if it rotates in the opposite direction the finger close.
  • Four of the five servos I have got were not working. There was not enough time to replace the four non-working servos. So, as a proof of concept, I used the only working servo I had to open and close one finger and I also merged the servo control code with the sensor code.
  • This video shows what I did. When I give the sensor the first motion the arm will be closed and when I give it the motion number zero the finger will be opened.

  • At the end of my project, even if i did not have time to do the final control of the arm I created a code to merge between the different stages of the project. I had the code that moves the arm depending on the received EMG signals, also the part that receives the object that the camera sees in front of the hand and the part that can control the servos. As I said before, the main aim of this project was to make a new way for controlling the hand with the EMG signals that does not depend on the number or the accuracy of the muscle sensor readings.


Hands are primary organs in the human body. When it is lost and the only solution is using prosthetic hand, it will be more helpful to have a prosthetic hand that will help in living a normal life. the hand needs to cover all amputee’s needs. So, instead of teaching the amputee how to use it and just focus on how to make him able to control every part of the hand. It will be more efficient it the hand itself was intelligent and able to cover the amputee’s needs with itself.

(Video) Real-time control of a Robotic Arm using EMG Signals


At the beginning of the project, I did not know much about the prosthetic arms, how they are controlled, what an EMG signals are. I had previous experience using python coding but this was the first time I used OpenCV and used a deep learning model for object classification. I learned many things with this project, for example, how to develop a python code that can access the camera, detect objects and communicate with Arduino.

The next steps in this project will to be able to control the hand with new servo motors and to identify many motions for the hand in order to grab different objects.

controlling prosthetic arm using EMG signals (21)

(Video) Final Year Project: detection and classification of EMG signals for controlling Prosthetic Arm

Published by alymedhat10

View all posts by alymedhat10



How is EMG used in prosthetics? ›

One of the most challenging areas in this research is to connect neural signals of a human to the artificial hand and exploit these signals to control the prosthesis. The electromyography signal (EMG) is used to operate the servo motor through a microprocessor to control the line of the body-powered prosthesis.

How do you analyze EMG signals? ›

Autoregressive model. The autoregressive (AR) time series model has been used to study EMG signal. A surface electrode will pick up EMG activity from all the active muscles in its vicinity, while the intramuscular EMG is highly sensitive, with only minimal crosstalk from adjacent muscles.

What can interfere with EMG signal? ›

Certain drugs that act on the nervous system (such as muscle relaxants) can interfere with electromyography results. You may need to stop taking these three to six days before the test. Have had bleeding problems or are taking blood thinning drugs, such as warfarin (Coumadin®) or heparin.

What is EMG prosthetic? ›

Electromyography (EMG) is widely used to control powered upper-limb prostheses. It is an indirect estimator of muscle force and may be expected to limit the control capabilities of the prosthesis user.

What is EMG sensor? ›

Electromyography (EMG) measures muscle response or electrical activity in response to a nerve's stimulation of the muscle. The test is used to help detect neuromuscular abnormalities. During the test, one or more small needles (also called electrodes) are inserted through the skin into the muscle.

Which of the following factors affect the amplitude of EMG signal? ›

5. Which of the following factor determines the amplitude of EMG signal? Explanation: The amplitude of the EMG signals depends upon various factors, e.g. the type and placement of electrodes used and the degree of muscular exertions.

What is the source of the signal for an EMG? ›

The EMG signal is generated by the electrical activity of the muscle fibers active during a contraction. The signal sources are the depolarizing and repolarizing zones of the muscle fibers.

What is the primary source of signals detected by the EMG electrodes? ›

explain the source of signals detected by the EMG electrodes. the source it detects comes from the somatic nerve, and impulses generated along the muscle fibers.

What are normal EMG results? ›

Normal Results from an EMG

Normal EMG results will appear as no electrical activity while at rest. It means your muscles are healthy and normal. Your muscles also react normally to stimulation, in a smooth pattern.

How many electrodes are used in EMG? ›

Surface EMG can be recorded by a pair of electrodes or by a more complex array of multiple electrodes. More than one electrode is needed because EMG recordings display the potential difference (voltage difference) between two separate electrodes.

How do you classify an EMG signal? ›

Many approaches to achieve efficient control using EMG signal classification had been considered, and they could generally be classified into the following main categories: (1) Neural Network (2) Fuzzy logic (3) Hybrid Fuzzy-Neural approaches and (4) Wavelet based.

What should you avoid before an EMG test? ›

Do not smoke for 3 hours before the test. Do not eat or drink foods that contain caffeine (such as coffee, tea, cola, and chocolate) for 2 to 3 hours before the test. Wear loose-fitting clothing. You may be given a hospital gown to wear.

Is an EMG always accurate? ›

In a study of new patients at an EMG lab, 52.1% of patients had either no information or incorrect information about EMG, and only 28.2% were considered informed. Giving information before the test may be helpful.

Can an EMG give false results? ›

The use of excessive gel could result in the stimulator slipping away from the nerve during stimulation. Care is especially important during repetitive nerve stimulation studies, since such slippage can result in false-positive findings.

How does a body powered prosthesis work? ›

Body-powered prostheses are operated typically by a harness and cable. Movements of the upper arm, shoulder and chest are captured by the harness and transferred to the cable system and used to open and close the hook or hand, similar to how a bicycle handbrake system works.

How do body powered prosthetic hands work? ›

An electrically powered prosthesis uses motors and batteries to transfer the desired movement and power to the prosthesis. Depending on your level of limb loss, the electrical components will vary. Sensors and varied inputs function by detecting motion in the muscles in your residual limb or upper body.

Are there prosthetic arms? ›

LUKE Arm. The LUKE arm, by Mobius Bionics, is the most advanced prosthesis on the market and the only commercially-available prosthesis with a powered shoulder (up to 10 powered joints), allowing a shoulder-level amputee to reach over their head.

What are the advantages of EMG? ›

EMG results can help the doctor diagnose muscle disorders, nerve disorders, and disorders affecting the connection between nerves and muscles. Some doctors may refer to electromyography as an electrodiagnostic exam.

Why is EMG important? ›

An EMG test helps find out if muscles are responding the right way to nerve signals. Nerve conduction studies help diagnose nerve damage or disease. When EMG tests and nerve conduction studies are done together, it helps providers tell if your symptoms are caused by a muscle disorder or a nerve problem.

What is the source of the signals detected by the electrodes on the arm? ›

The source of signals detected are from the electrical activity of muscles such as muscle contractions and action potentials propagated along the sarcolemma.

What is the signal range for muscle EMG recorded on the arm? ›

The EMG signal's amplitude lies in between 1-10 mV, making it a considerably weak signal. The signal lies in the frequency range from 0-500 Hz and most dominant in between 50-150 Hz [15]. The EMG signal is highly influenced by noise [16], as shown in Figure 10.

Why is EMG so painful? ›

Pain is commonly associated with EMG, because the procedure involves the use of needles and electric shock. Not only friends and relatives who have had a previous EMG experience, but also physicians can sometimes discourage patients from undergoing EMG, believing that the test is very painful and of little benefit (1).

What are signs of nerve damage? ›

The signs of nerve damage
  • Numbness or tingling in the hands and feet.
  • Feeling like you're wearing a tight glove or sock.
  • Muscle weakness, especially in your arms or legs.
  • Regularly dropping objects that you're holding.
  • Sharp pains in your hands, arms, legs, or feet.
  • A buzzing sensation that feels like a mild electrical shock.

Does EMG measure muscle strength? ›

The amplitude of EMG signal has the potential to provide a measure of the magnitude of muscle force, but this relationship is complicated by both the character of the measured EMG and the mechanics of force production in skeletal muscle.

How can this EMG data be used in the development of prostheses? ›

Once the EMG patterns are identified for intended movements using pattern classification, the prosthesis controller will receive the command to implement the movement. Thus, EMG-PR approach may allow users to control their myoelectric prosthesis more effortlessly with a broad range of control.

How does a body powered prosthesis work? ›

Body-powered prostheses are operated typically by a harness and cable. Movements of the upper arm, shoulder and chest are captured by the harness and transferred to the cable system and used to open and close the hook or hand, similar to how a bicycle handbrake system works.

How do prosthetic hands work? ›

A bionic arm works by picking up signals from a user's muscles. When a user puts on their bionic arm and flexes muscles in their residual limb just below their elbow; special sensors detect tiny naturally generated electric signals, and convert these into intuitive and proportional bionic hand movement.

How does a myoelectric hand work? ›

A “myoelectric” arm is operated when electrodes pick up muscle (myo is from the Greek word for muscle) impulses from the residual limb. These muscle impulses (signals) are then translated into electrical signals that are sent to the electric hand to open or close it. A battery in the prosthesis provides the power.


1. Surface Electromyography (EMG) Signal for Artificial Hand Control
2. Control of Robotic Arm using EMG Signals
3. DIY Neuroscience | Prosthetic Hand Controller using EMG signals | BioAmp EXG Pill | Mayoogh Girish
(Upside Down Labs)
4. 3D Printed Controllable Prosthetic Hand via EMG
(Kenneth V.)
5. Robotic arm control using EMG signal
(TIdsp Lab)
6. Signal Classification to Control Robotic Hand
(Backyard Brains)

Top Articles

You might also like

Latest Posts

Article information

Author: Dan Stracke

Last Updated: 12/03/2022

Views: 5711

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.