Wearable Assistive Robotics

The aim of this project was to develop wearable assistive robotics for transferring human motion from one person to another. We focused on developing a wearable exoskeleton arm using EMG and IMU sensors.


The idea of the project is to design 2 arms, one for sensing and another for actuation. Sensing arm(master) for analyzing the movements of the person wearing it and it transfers the movements wirelessly to the actuating arm(host). The Actuating arm receives & detects the signals and actuates the mechanical devices responsible for the relevant joint movement/s.


What is EMG?

Electromyography is an electrodiagnostic medicine technique for evaluating and recording the electrical activity produced by skeletal muscles. EMG is performed using an instrument called an electromyograph which produces a record called an electromyogram. The same electrical activity can be used to actuate mechanical devices such as servo motor, pneumatic actuators, stepper motors, etc.

First Prototype
  • EMG sensor
  • 25k/cm servo motor
  • 3d printed(PETG) wearable arm model
Below image for reference. As demonstrated below, the EMG sensor detects the arm movement
(in this case the elbow muscle flexion) and actuates the servo motor.

The first prototype was more of an experiment to understand “How the EMG work” and to understand the data received from it. The data received from the EMG sensor contained noise due to the quality of the EMG sensor(Hobby EMG sensor for Arduino). The movement of the servo was not very precise due to noise. So we decided to use IMU(MPU 9250) with EMG in order to get better quality signals and have better control over movement.

Second Prototype

Further to the first prototype, we made the following update/changes in the second prototype:

  • EMG setup made stable – servo responded better, using stable wiring.
  • Sensors – W.r.t problems faced during the first prototype, we tested other sensors with EMG to get a better response from the servo. and finally narrowed down to IMU(MPU 9250) which is a 9 axis. and has a gyroscope, accelerometer, and compass.
  • Prototype – Prototype design upgraded. Complete arm model 3d printed.
  • Servo replaced by Pneumatic air Muscles. It is a combination of latex tubes, with braided cable casing. which works amazing a heavy load lifting and has a high amount of contraction/expansion(similar to human muscle)
  • MQTT setup for the wireless signal transfer between the 2 arms.

What is MQTT

MQTT protocol is based on the publishing and subscriber paradigm. A client that published the messages, called “Publisher” to the other client, called “Subscriber” who receive the message.MQTT is asynchronous where HTTP is synchronous so it does not block the client while it waits for the message. It does not require that client(subscriber) and the publisher is connected at the same time.


The base concept remains the same, but we upgraded some of the components and made the whole system bit more mature. Admin sleeve upgraded with EMG+IMU(MPU) connected to Arduino, connected to Raspberry Pi 4. MQTT server was set up on a PC which takes commands from admin and transfers it to the host sleeve. The host sleeve consists of Raspberry Pi4 which received commands from the MQTT broker(PC) and sends them to Arduino. And as a result, Arduino actuates the Pneumatic muscles. In addition to the above, we also upgraded the Host arm with an IMU to keep a track of the movement of the host arm. The main purpose of the IMU is to keep track of both the arm’s locations so that both are aligned with each other’s motion.

EMG Data Analysis with Python

As mentioned above, the data received from EMG contains noise, so we explored methods to filter the data and understand the information received from the data. During this process, The data transmitted to the PC and saved in a CSV file, Data plotted/visualized in Python, Data remapped with filtering the values of 20 and below.

Negative muscle flexion removed as a normal procedure of EMG data analysis. EMG takes positive and negative muscle flexion, only one of the readings is sufficient to actuate the device or to visualize. EMG data provides a lot of information such as movements of muscles, muscle fatigue. As normal muscle show changes in EMG reading when it is exposed to a long duration of the movement. These characteristics were observed during the EMG data recording and analysis. These can play an important role in the development of this project.

Third Prototype (Final Prototype)

We observed a need to develop this project further, as a result, we made changes in the second model.The major modifications were: 3d model upgraded and made more practical and confirmable. The prototype extended till the hand (the Second model covered only the arm). We added 1 additional pneumatic muscle for the wrist joint (the Second model has one pneumatic for the elbow only) and 3 IMU each on both models. (Total 6 IMU).

  • The host arm was made using normal cotton full arm gloves, over which all the IMU, wiring, etc. were mounted.
  • The admin’s arm was installed with a pneumatic solenoid which was further connected with a regulator. IMU movement controlled the regulator which can alter the amount of air passing through the solenoid. EMG sensor controls the solenoid valve. this whole system gives more stability to the setup and control of airflow is better w.r.t arm movement.

Arduino and Raspberry Pi 4 were replaced with ESP8266. This helped us to create a more compact setup MQTT server transferred to Raspberry Pi 4 which had its own MQTT WiFi broker in order to avoid changing networks(SSID) every time.

Pneumatic Muscle Demo

Pneumatic Muscle Demo

IMU Data Analysis

Similar to EMG data, IMU data also had noise and to get appropriate readings the data requires cleaning. We explored one of the efficient methods for IMU data cleaning in realtime. The method is “Madwick Filter“. The Madgwick filter formulates the attitude estimation problem in the quaternion space. The general idea of the Madgwick filter is to estimate W I q t + 1 by fusing/combining attitude estimates by integrating gyro measurements W I q ω and direction obtained by the accelerometer measurements.

3d Prototype Schematic

Final Prototype Images

Additional experiments

During the whole project, we performed multiple experiments to explore the potentials of this project which includes tests with air muscles, EMG response testing with gaming, actual prototype testing while wearing.


Project Github Link: 


Wearable assistive Robotics is a project of IAAC, Institute for Advanced Architecture of Catalonia
developed at Master in Robotics and Advanced Construction Hardware II Seminar in 2020/2021 by:
Students: Shahar Abelson, Charng Shin Chen, Arpan Mathe, Orestis Pavlidis,
Faculty: Óscar González
Faculty Assistant: Antoine Jaunard