By Josh Berman and Ellen de Mello Koch as part of an Electrical Engineering final year project.


An exoskeleton is the external skeletal structure that supports or protects the body, in contrast to the internal skeleton (endoskeleton) of a human. This Instructable deals with the design and construction of an exoskeletal Arm support.

excerpt from my project report "ANFIS CONTROL OF AN UPPER LIMB EXOSKELETON":

"Many people in the world are confined to a wheelchair due to injuries or illnesses which cause muscle weakness. One such illness is a genetic condition known as muscular dystrophy; patients suffering from this have limited muscle movement which can result in muscle waisting, muscle hypertrophy and muscle pain. This device can give such peoples their independence as well as the ability to function as a normal person."

The Exoskeleton is a robotic arm that assists muscle movement. The wearer attaches the muscle sensors (non-invasive) to the upper arm and shoulder using a mild adhesive. The muscle sensors detect electrical activity produced by the skeletal muscles. The potential generated by the muscle cells is amplified and filtered to produce a change in voltage between 0-5 volts. This signal is read by the Arduino , which then evaluates the voltage range and sets the movement variables of the motor controller. The motor controller determines the direction and speed of the actuators. The actuators are DC motors with a linear direction of motion, the motors raise and lower the forearm and shoulder with a similar movement to that of a human arm, thus assisting the user in his/her basic functionality.

As cost is a major limitation, I will only be making a single arm with the minimum required actuators and sensors, ideally * there would be 3 actuators on each arm, each actuator having two muscle sensors each. In addition, a gripping tool can be added to the end of the arm to act as a hand.

*EDIT* third actuator added, providing 3 degrees of freedom

Step 1: Build Materials

Picture of Build Materials

The brain of the exoskeleton is made up of an Arduino Uno coupled with a Pololu Dual Motor Driver Shield (Edit**** 3 Pololu md10a motors controllers used instead of dual controller as a result of the addition of the third actuator) which directs the speed and direction of the two high speed, high powered linear actuators. Each actuator has 750N of force at 12V. The control function comes from the two sparkfun muscles sensors.

Structure: Aluminium frame, 2 x 750N Linear actuators, 12V battery pack, 2x 9V Batteries

Microprocessor : Arduino Uno, 2 x EMG Module (Sparkfun muscle sensor V3), Dual Motor Controller (pololu 12A)

key points:

  • Each actuator is capable of producing 750N of force, this is roughly 75Kg lifting power. As the motors are hinged and leverage is used to raise the arm, this value is slightly lower.
  • Each actuator at no load draws just under 1A of current and maximum 5A at full load.
  • This allows us to use a 12V battery. The exoskeleton is self contained and does not require ‘mains’ power. Nor does any electrical output come into contact with the user.
  • The arm can be demonstrated separated from the wearer by only attaching the EMG sensors (these sensors are one way signal transmitters, no current can travel towards the user).

Step 2: Linear Actuators

Picture of Linear Actuators

The Linear actuator is much like a geared DC motor but with a linear direction of motion. The high gear ratio allows for a high power and thus these motors are used for heavy lifting. The downside is that the speed is inversely proportional to the force, and buying a high powered actuator often results in a slower motor. For this project, a faster actuator is necessary to mimic the movement of a human arm. Beyond 3cm/s would be ideal but given the availability, the 750N-7mm/s actuator was chosen.

Here is a link to the actual motor:

"This 12 V linear actuator can be used in a variety of heavy-duty applications. The actuators are 12V DC gearmotors that use a worm drive to move a shaft back and forth along its length. The worm drive ensures that the shaft will hold its position even when unpowered. Two limits switches safely stop the motor at either end of its range, while integrated diodes allow it to reverse direction after reaching a limit point if the supplied voltage is reversed. The actuators are mostly metal, and the entire case is sealed to protect against dust and water."

The Datasheet is located on the link above.


Operating Voltage: 12V

Stroke Size: 200mm

Current @ no load: 0.9A

Step 3: Arduino & Motor Driver

Picture of Arduino & Motor Driver

The Arduino is a relatively easy to use microprocessor fitted to a dev board. The Arduino micro can be coded in 'C' and has many easy to use libraries.

The Arduino Uno R3 can be purchased from this online store:

The Arduino does NOT come with a cable(square printer cable) or a software cd.

You can download the Arduino IDE from the Arduino website:

The library that the motor driver uses is called the 'DualVNH5019MotorShield' and can be downloaded from the following link:

This Motor driver allows us to drive two high-power motors through one compact unit, (2 x VNH2SP30 chips) .

Pololu 12A Dual Motor Driver:

Before using this unit i recommend visiting the following website:

When stacking the Driver shield on top of the Arduino, the pins will line up with the output pins of the Arduino, and hence when coding, one must make sure one has set those pins accordingly.

WARNING: do not power the driver from the Arduino and the usb at the same time. this will blow the Arduino regulator chip.

Setup and testing of Arduino + driver shield:

  • Startup the Arduino IDE.
    • Install required drivers for Arduino Uno , in windows this will not be done Automatically.
    • Add the Motor driver library to the Arduino Library folder.
    • Open the Downloaded library folder and open up the demo driver code.

Physically place the driver shield directly on top of the Arduino so that the pins line up as they are labeled.

Make sure that the cap connecting the power of the Arduino to the driver is not connected.

Power the driver with your desired motor voltage in the motor input Vin and GND ports. You should see a blue light come on.

    • Plug in the Arduino using the printer cable.
    • In the IDE Under 'Tools' Select the correct board -'Arduino Uno'
    • In the IDE Under 'Tools' Select the correct com port .
    • In the IDE Click the Arrow upload button and the lights on the Arduino should flicker.You should now see green and red lights changing on the motor driver. these lights indicate direction of the motors, left and right.

Step 4: Muscle Sensor EMG

Picture of Muscle Sensor EMG

The EMG circuit that I am using currently is the "Sparkfun Muscle Sensor V3 Kit", it can be found at this website:

Follow the connection diagram correctly or the amplifiers can blow, these chips are not cheap and hard to get hold of at the moment.

The EMG requires three electrodes. The reference electrode or ground electrode is necessary for providing a common reference to the differential input of the preamplifier in the electrode. For this purpose, the reference electrode should be placed as far away as possible and on electrically neutral tissue i.e. Bone area. The two signal electrodes are then placed at two different points on the muscle, one in an active area of contraction and the other slightly off center. This gives a point of reference for muscle activity compared to the signal of muscle relaxation.

To test the Muscle sensor out like in the clip above, you can Upload the Arduino code attached to your arduino

Then place the "Processing" code in Processing IDE, an Arduino-like environment which can be used to plot graphs from data acquired by the Arduino.

Download it here (its free):

Some more Information on the EMG can be found in the attached document called "Measurements"

Step 5: Construction of the Arm

Picture of Construction of the Arm

View the description of the images. Each image explains what to connect where. The whole process was very touch and go as I had limited scraps of aluminium.

Step 6: Controller

Picture of Controller

The Forearm originally moved quite slow and the shoulder even slower. The fix for this is to move the actuator connection closer to the hinge point which provides more leverage. The only downfall is that the lifting force is reduced (W = F x d). Do the same with the shoulder.

A seperate controller was designed for biceps,
triceps, anterior and posterior deltoid muscles. The biceps controller used four input membership functions where as the other three muscles only needed three membership functions to achieve reasonable accuracy. The gaussian curve membership function is used .

MATLAB was used to optimise accuracy of the controllers with subtractive clustering. The hybrid training method was used to train the controller using 2500 data samples for each motion.

Step 7: Final Connections and Source Code

Picture of Final Connections and Source Code
  • Upload Arduino sketch and disconnect it from the PC
  • Place the Motor controller shield over the Arduino so the pins line up
  • Connect up the EMG outputs to GND and analogue pin 5 and the other one to pin 4

    • Connect the actuators wires to output motor 1 and 2 of the controller
    • Connect the battery to the input of the motor controller
    • Connect the cap that allows you to power the Arduino through the motor controller - make sure the Arduino is disconnected from the PC.
    • Place the electrodes on the muscles (Black on the bone area)
  • Flex those muscles

Source Code and clips of the arm in action coming soon! As this projects is being built as my final year engineering project, I will need to see when I can supply the code.


The Puma (author)2017-08-18

Hi, amazing project! I am hoping to try and create something like this. Could you send me the source code so I could have an example?


player1508 (author)2017-08-13

Hi, has anyone ever recived the source code from these guys?


bluebean (author)player15082017-08-13


player1508 (author)bluebean2017-08-14

Excellent, thank you for the source code.

player1508 (author)bluebean2017-08-13

Fantastic, if you could send me the source code aswell I would very much appreciate it. Thank you

Great project by the way ;-)

alsaf17 (author)2017-04-16

Could you send me the source code please? Thanks for your help

Jayashri95 (author)2017-01-11

Could u please send me the source code? Thank u

rdvngkyldz (author)2016-12-07

Could you sen me the source code please? Thanks for your helping :)

Latif CanU (author)2016-11-18

Could you sen me the source code please? Thanks your helping :)

MaiK9 (author)2016-10-30

Could you send me the source code? Thanks!


VincentG40 (author)2016-08-18

Can you send me the source code? Thanks
Email :

AmruthKumarSala (author)2016-08-09

I would want my students to work on similar kind of projects - Can we collaborate and work together ???

If you are interested please let me know. I am Amruth Kumar Sala from Hyderabad, India trying to build a centre of excellence and call it Technology labs for physically challenged.

Please write back to

surajr14 (author)2016-06-27


Can u pls send the code to me pls? Thank You


jplanko (author)2016-06-17

Could you send me the source code PLEASE? Thank you!


the21 (author)2016-05-10

I think that this arm could be able to provide about 3kg of force due to leverage, if you use the equation for torque, Torque = force/radius it would be something like torque = 75kg/25cm (25 is conservative, probably more like 35 cm). This equals out to be 3kg of force at the end.

TLDR: It cant actually lift alot of weight, just looks good on paper, proably about 7 pounds.

TomF3 (author)the212016-05-24

Hmmm, that makes sense, but energy is force • distance, right? So it would be able to lift that much 25 times faster than otherwise? Like how if you have something on the other side of a level, much farther from the fulcrum the force is exchanged for distance or speed?

the21 (author)TomF32016-05-24

Yes, it would be moving much faster, but it is essentially impractical for any legitimate usage since a human arm is much more capable. Could be useful for people with muscle dystrophy, but not much else (ATLEAST RIGHT NOW). I still look forward to what they can do since there is always room for improvement

SufiR (author)2016-04-20

Could you send me the source code? Thanks!


Nitr0 (author)2016-03-12

Could you send me the source code? Thanks!


prostwasbetter (author)2016-02-10

If you could send the source code, that would be fantastic. This is too cool, and it would really help me out. email:

psycho.maggot (author)2016-01-15

hello this is a cool and clear explanation about exoskeleton, could send me the code please, cuz we've been starting this project in our community. please. email:

psycho.maggot (author)2016-01-15

hello this is a cool and clear explanation about exoskeleton, could send me the code please, cuz we've been starting this project in our community. please. email:

chefaraga (author)2015-12-29

Hi could you send me the source code please

My email is


OliverD10 (author)2015-11-29

Hello can you send me the source code?

My email is

i will put it to good use.

e_qandah (author)2015-11-06

can you send me the source code of this project and i'll be thankful

Demonick700 (author)2015-11-03

Hey, I'm trying to make a project like this too just for fun and was wondering if you could send the coding you used for this? Both for the arduino and the motor driver. Coding isn't exactly my strong suit yet, thanks! You can email it to me at

dominics3 (author)2015-06-08

What kind of weights can this pick up?

JoeyB4 (author)dominics32015-10-14

the acuators are 750N, which is about 170 lbs

jabides (author)2014-12-04

Hello Josh Berman and Ellen de Mello Koch,

My senior design team at SDSU is attempting to build a robotic arm as well. We are in the beginning process and we wanted to know if we could take a look at your group's java code that you used to control your exo-skeleton arm.

My email is <>

bluebean (author)jabides2014-12-05

The code I've sent you is in 'C', 'Python' and 'Matlab' . not java

HagopH (author)bluebean2015-10-12

hello ,
very very good project may god bless you dude :)
Can you help me ?
what is the microcontroller code to first receive emg biofeedback? and how are we receiving the visualization of my nerves emg signals ? (labview, matlab,something else? )
Big Respect

Can you please send me the source code. It will be a great help to our project.

jabides (author)bluebean2014-12-05

Thank you for the email, and actually we didn't need it in java. Has your team experimented using LabView software?

jabides (author)jabides2014-12-05

Hello Josh Berman,

Thank you so much for your prompt response and allowing my team and I to see the software control process of your design. We really appreciate it.


San Diego State University Senior Design Team 2014-2015

pzyakane (author)2015-04-24

hello..i'm doing final year project right now. i want to get the signal output from emg sensor which is just like output from processing software that you already did. i already try the source code for processing but it does not success. there are some code that cannot find.. so, can you help me about the that? can you give me the coding of processing. my email is,, hope you can help me.tq

Zulasyraf (author)pzyakane2015-10-06


Vulcan01 (author)2015-09-24

Incredible instructable! I am working on a project similar to this and was wondering if I could get the source code for yours. Would it be possible to get both the arduino and processing code? It would be much appreciated.


Here is my email:

fatmansteamboat (author)2015-08-17

Hey guys,
Mind blown enough that I'm coming out of lurking to ask if it's possible to get in on that source code train!
I'm about to begin an exoskeleton project but I am mostly interested in this training of the controller you accomplished. That to me seems most interesting as I work within a group focused on machine learning.

Many thanks and much respect.

nathan marsteller (author)2015-08-14

so i need 3 motor controllers is that right

SamS26 (author)2015-06-16

Hi, this is really cool! can you be a little more specific with your parts list though? its great you have links to most everything, but do we need both the pololu motor driver and the Arduino motor driver? thanks, much appreciated

Richardconter (author)2015-04-09

Hello, I am a current high school senior in the engineering program at Southwest Career and Technical Academy. I'm building something just like this and the only thing I need help on is the code. If you don't mind, could you send me the code to The code is the only component missing from my project. If you would like to view more about my project, I will post the link to a presentation below.

Maaz bin Ahmed (author)2015-04-03

Nice work there mate.. can you send me the code? i am planning to build one on my Final year project. My ID:

leofischi (author)2015-03-18

Nice job!

I'm starting an project for an exoskeleton myself and i would like to know if you could share your code with me.

My email:


techz80a (author)2015-02-21

I am also working on an exoskeleton having trouble with sensory could could you send your code.

tx gs

huseyinerkanarik (author)2015-02-16


I am working on controlling a linear actuator with arduino using EMG sensor but I am not successful so far. Can you please share your code with me at I really appreciate your help on this. Thank you.

shibil.manchester (author)2015-02-13

Great idea, How do the sensors detect electrical activity and how did you make it?

BradenW (author)2015-02-12

I just wanted to know if you could please email me

how much it weighs and how many lbs/kilograms it can pickup.

uneebishfaq (author)2015-02-09

Hi there

Can you tell me how you calculated the force requirement of the linear actuators?

How you determined that 750N would be enough to hold the weight of the whole arm?

lvang2 (author)2015-02-06

Hello, I would love to know about the overall codes you used in this project.Thanks.


_cabinfive (author)2015-01-21

Hello! Can you please send us the source code?. We are on the process of making the same project as you do, but unfortunately we are new to this especially to artificial intelligence. So it will be a help if you allow us to see the source code. Thank you ! <>

About This Instructable




More by bluebean:City Skyline Pallet ArtAmerican Flag PalletUPPER LIMB EXOSKELETON (IRON MAN EXO-ARM)
Add instructable to: