Code Monkey home page Code Monkey logo

hv-pm / myorho Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 38.04 MB

MYoRHO is a Non-invasive Muscle-Machine Interface Open Source Project: Myoelectric Robotic Hand Orthosis. It uses a user-tuned approach to develop a custom myoelectric robotic hand orthosis for a user by having their metrics (ergonomics and surface myoelectric signals) added in the design cycle.

Home Page: https://sites.google.com/view/leneruel/projetos/proj-b

License: Other

MATLAB 17.34% C++ 69.30% Python 13.36%

myorho's Introduction

MYoRHO (Myoelectric Robotic Hand Orthosis)

MYoRHO is a Non-invasive Muscle-Machine Interface Open Source Project: Wearable Robotic Hand Orthosis. It has a user-tuned approach to develop a custom robotic hand orthosis for a user by having their metrics (ergonomics and surface myoelectric signals) added in the design cycle.

The project is currently being developed in collaboration with the Laboratory of Neural Engineering and Rehabilitation (LENER) at the State University of Londrina.

Ergonomics

The finger splints is composed of two elements: the (i) ring and the (ii) base.
(i) The ring dimensions are based on the dimensions of the user, this component is responsible for the comfortable fitting of the splint in the finger. (ii) the base lenght is decided together with the user and it hinders the range of motion, altogether, it defines the curvature of the grasp.
A chamfer connects both elements and allows for the splint to undergo the necessary pressure applied by the grasp without breaking.

The wrist splint is a remixed version of a public available orthosis for download. This splint size is also modified to fit the user comfortably.

Surface myoelectric signals (sMES)

The system allows for the developer to train more than the 3 hand poses proposed in this version, although, It should be noted that the current motors disposition only allows 2 hand poses to be reproduced. Thus, system is designed to identify 2 hand poses plus a resting hand state.

An acquisition protocol is estabilished according to the desired number of hand poses, for this prototype, the protocol is designed to acquire the sMES regarding the (i) pulp pinch, (ii) transverse volar grip and a (iii) resting hand pose. By the end of the protocol a sMES dataset is created.

A sequential forward selection (SFS) is performed with a 10-fold cross-validation method to choose the feature subset used to train the linear discriminant analysis (LDA) classifier of the control system. This subset is chosen based on the best trade-off between the computational power required for processing and accuracy. Twenty datasets are recorded from the user, ten datasets (e.g., even numbered) are reserved to train the LDA classifier, while the other ten datasets (e.g., odd numbered) are used to test the LDA accuracy.

sMES acquisition platform


mSD: microSD module; ESP32: DEVKIT V1; MyoWare: wearable surface electromyograph.

This acquisition platform stores real-time recording (datasets) of sMES on a micro SD card. ESP32 was chosen due to its 12-bit analog-to-digital converter (ADC) resolution and compact dimensions. However, given ESP32's problem of non-linearity in ADC readings a lookup table calibration is mandatory before recording the datasets. Additionally, a 100 nF ceramic decoupling capacitor is added to attenuate characteristic noises of the ESP32's ADC readings.

The programming interface used for the acquisition platform was the Arduino IDE (v.1.8.1). The code was adapted from the datalogger example of the SdFat v2.0.6 library, and the chosen baud rate for the serial was 115200 bits/s. Finally, the data were recorded with a sampling rate of 1 kHz.

The sMES signals for each chosen upper limb muscle of the user are analyzed while the user is requested to perform a maximum voluntary contraction (MVC) of a pulp pinch. The muscle with the most significant amplitude is used to record the datasets and activate the system thereafter.

Transmitter-interpreter system (TIS)


The TIS module initializes and makes the BLE connection to the RAS module. sMES windows are captured in real-time from MyoWare and converted to millivolts. Next, there is a fourth-order Butterworth (20 to 500 Hz) and notch (60 Hz) digital filtering of the sMES window in which the feature subset is extracted. A linear discriminant analysis (LDA) classifier discriminates the feature subset by comparing the shortest Mahalanobis distance between the feature subset and the center of each class cluster. The closest class to this feature subset (i.e., an unknown sample to the classifier) is chosen and stored in an array of classes. If three classes are added to the array of classes a majority vote (MV) is applied, if not, the class is added to the array, and one more real-time window is filtered, extracted and discriminated. The MV checks which of the three classes stored in the vector occurred with the most frequency and transmits it via BLE to the receiver-actuator system (RAS) module, where its finite state machine will control the orthosis actuators.

Receiver-actuator system (RAS)


Auxiliary to the LDA classifier at TIS, a finite-state machine was implemented at RAS to limit the movements that could be performed while the system was in specific states, reducing system failures. It has three main variables: current state keeps track of which grip is being performed at the moment; received class holds the current class received from TIS; previously received saves the value of received class before a new transmission overwrites it. As stated earlier, TIS can transmit three different classes: pinch grip (PG), cylindrical grip (CG), and resting hand (RH).

RAS initializes and establishes the BLE connection with TIS. The motors rotate the tendons until the fingers position when shutting down (saved in ESP32's EEPROM) reaches the resting hand (RH) position, and the current state becomes RH. This prompted behavior is necessary to ensure that system will always start at the RH pose. Also, if an unusual malfunction in the finite-state machine occurs, causing the motors' position to behave differently from the programmed in the finite-state machine, simply turning off and turning on the device will correct the motors' positions.

When TIS transmits a new class, RAS checks in the variable current state which hand pose is being reproduced and decides which pose will be performed based on the analysis of current state, received class and previously received. Any grip (PG or CG) can only be performed if current state is RH. Similarly, a grip can only be released if previously received is RH and received class is its respective grip.

For instance, the motors will only perform PG if current state is RH (i.e., the user’s hand is at rest) and the received class is PG. Under these conditions, the motors perform the pinch grip, and current state changes to PG. In other words, the user was relaxed and voluntarily performed a pinch grip to activate the orthosis. However, the orthosis will only release the pinch grip when three conditions are met: current state is PG, previously received is RH, and received class is PG. That is, the orthosis is performing a pinch grip, but the muscle is relaxed. Then, the user voluntarily performs another pinch grip to activate the orthosis' release and make the motors rotate to relieve the tension of the tendons.

Current relase assembly

TIS module


Bat: battery; TP4056: USB recharge module for the battery; SD: on/off sliding switch; Step-up: 3 V to 5 V; ESP32: DEVKIT V1; D. Cap. 100nf: decoupling capacitor; MyoWare: wearable surface electromyograph.

RAS module


DRV8833: dual h-bridge driver; Motors 1 & 2: N20 DC gearbox - 100 RPM rated 6 V; ESP32: DEVKIT V1; Motors 1 & 2: N20 DC gearbox - 100 RPM rated 6 V.

When using MYoRHO in a scientific context, please cite this article:

DOI:10.1016/j.bspc.2023.105014

@article{MARTINS2023105014,
  title = {Development of a robotic orthosis for fingers flexion motion by surface myoelectric control: Open source prototype},
  journal = {Biomedical Signal Processing and Control},
  volume = {85},
  pages = {105014},
  year = {2023},
  issn = {1746-8094},
  doi = {https://doi.org/10.1016/j.bspc.2023.105014},
  url = {https://www.sciencedirect.com/science/article/pii/S1746809423004470},
  author = {Hygor Vinícius Pereira Martins and João Antônio Palma Setti and Cayley Guimarães and Daniel Prado Campos},

Produto Tecnológico desenvolvido durante projeto de Mestrado "DESENVOLVIMENTO DE UMA ÓRTESE ROBÓTICA PARA O MOVIMENTO DE FLEXÃO DOS QUIRODÁCTILOS POR CONTROLE MIOELÉTRICO: PROTÓTIPO EM CÓDIGO ABERTO" do Programa de Pós-graduação em Engenharia Biomédica da UTFPR - Campus Curitiba, sob orientação do professor Dr. Daniel Prado de Campos.

License

3D files licensed under
Codes licensed under

myorho's People

Contributors

hv-pm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.