Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

T-112179 Núñez Bolívar-Valarezo Mauricio

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 117

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL

Facultad de Ingenierı́a en Mecánica y Ciencias de la


Producción

Diseño e implementación del sistema de control de una mano


robótica antropomórfica mediante señales mioeléctricas

PROYECTO INTEGRADOR

Previo a la obtención del tı́tulo de:

Ingenieros en Mecatrónica

Presentado por:
Bolı́var Steward Núñez Montoya
Mauricio David Valarezo Añazco

GUAYAQUIL - ECUADOR
Año: 2021
DEDICATORIA

Dedico el presente trabajo a Dios,

por haberme guiado en mi ciclo

universitario brindándome la fuerza y

el valor para superar cada obstáculo.

A mis padres y hermana, por siempre

estar presentes apoyándome en todo

momento, brindando sus consejos y

experiencias de vida. De igual forma a

mi querida sobrina, por sacarme una

sonrisa en los momentos más cansados

y agotadores; por sorprenderme con

sus locuras e inteligencia. A mis

profesores, quienes me brindaron

todos sus conocimientos y experiencias

profesionales para mi crecimiento

personal y profesional.

Bolı́var Steward Núñez Montoya


DEDICATORIA

Este trabajo lo dedico en primer lugar a

Dios, porque gracias a sus bendiciones

y sabidurı́a, hoy estoy terminando

otra etapa en mi vida. También lo

dedico a mis padres Edwin Valarezo

y Rosa Añazco, que siempre se han

preocupado y apoyado por más difı́cil

que sea la situación, gracias a su

ayuda hoy estoy aquı́. Mis hermanos

Edwin Valarezo y Eliana Valarezo, que

son los mejores profesionales que he

conocido y siempre me enseñan algo

nuevo e importante. Cada uno de ellos

siempre estuvo presente en mi vida

dedicándome su tiempo, consejos, sus

enseñanzas para que pueda alcanzar

mis objetivos. Por eso los quiero mucho,

y muchas gracias por su paciencia.

Mauricio David Valarezo Añazco


AGRADECIMIENTO

Agradezco a Dios por toda su ayuda

y haberme guiado por toda mi etapa

universitaria.

Agradezco a mis padres y mi hermana

por siempre apoyarme en todo

momento, por haberme brindado

sus consejos de vida y profesionales.

También agradezco a todos mis

profesores entre ellos el Master Terán y

el Doctor Fajardo, quienes me brindaron

sus conocimientos en todo momento.

Al Doctor Francis Loayza, al Ingeniero

Saravia y al Ingeniero Edwin Valarezo,

por haberme guiado y brindado sus

conocimientos y experiencias para el

desarrollo del presente proyecto con

éxito.

De igual forma a mi compañero

Mauricio Valarezo, por ser parte de este

interesante proyecto de grado.

Bolı́var Steward Núñez Montoya


AGRADECIMIENTO

Agradezco a Dios por toda la ayuda,

paciencia y todas las bendiciones

brindadas en mi etapa académica.

A mis padres Edwin y Rosa por

toda la confianza brindada, por ser

mi compañı́a, ser mis guı́as en los

momentos difı́ciles, y siempre apoyarme

en mis decisiones. A mis hermanos

Edwin y Eliana por ser unos ejemplos

para mi, ya que siempre me dieron sus

consejos, enseñándome cosas nuevas,

motivándome y ayudándome a seguir

adelante.

También agradezco a Aracely Arrata

por haberme acompañado en toda esta

etapa académica, con sus ánimos y

ayuda logre obtener muchos logros.

A mi amigo Bolı́var Núñez quien me

brindo su apoyo en el proyecto y en

cualquier error cometido.

Mauricio David Valarezo Añazco


DECLARACIÓN EXPRESA

“Los derechos de titularidad y explotación, nos corresponde conforme al reglamento de


propiedad intelectual de la institución; Bolı́var Steward Núñez Montoya, Mauricio David
Valarezo Añazco damos nuestro consentimiento para que la ESPOL realice la
comunicación pública de la obra por cualquier medio con el fin de promover la consulta,
difusión y uso público de la producción intelectual”

Bolı́var Steward Núñez Montoya Mauricio David Valarezo Añazco


EVALUADORES

Firmado electrónicamente por: Firmado electrónicamente por:

EFRAIN FRANCIS RODERICH


ANDRES TERAN LOAYZA PAREDES

M.Sc. Efraı́n Terán Ph.D. Francis Loayza


PROFESOR DE LA MATERIA PROFESOR TUTOR
RESUMEN

La continua evolución de conocimientos y tecnologı́as ha incitado a desarrollar nuevas


áreas de conocimiento en la educación ecuatoriana para alcanzar un nivel de
aprendizaje similar a las instituciones del exterior. Por ello, el presente proyecto plantea
el diseño e implementación del sistema de control de una mano robótica antropomórfica
(MRA) con 6 grados de libertad utilizando señales mioeléctricas, para promover el
aprendizaje en estudiantes y docentes del laboratorio de Neuroimagen y Bioingenierı́a
de la ESPOL. Primero se recopiló los datos EMG de 10 participantes (4 hombres y 6
mujeres) que imitaban 4 gestos de la mano. El diseño de la implementación estaba
basado en una placa electrónica para la adquisición de datos Cyton Board, que se
comunica por puerto serial a una PC. La PC aloja el sistema de control y el modelo de
clasificación mediante machine learning que emite el movimiento mediante una Rest
API (comunicación con POST y GET de HTTP) a un ESP32 que controla el movimiento
de la MRA. El algoritmo Multi-layer Perceptron Classifier fue seleccionado con tres
capas ocultas, cuya exactitud obtenida fue de 84.78 %, permitiendo identificar 7 de 10
movimientos aleatoriamente realizados entre los 4 gestos seleccionados con un tiempo
de reacción de 2 segundos. El diseño final de la MRA fue impresa en 3D, conteniendo
todo el sistema eléctrico en su interior. Este diseño contribuye a los objetivos 3 y 4 de
las ODS por ser un dispositivo didáctico que incentiva la investigación y podrı́a ayudar a
personas con manos amputadas. El precio final fue de $1 570.00 dólares, convirtiéndolo
en un equipo biomédico 51 % más económico que otros disponibles localmente.
Permitiendo al dispositivo ser más accesible para implementarse en distintos centros
educativos y de investigación.

Palabras Clave: Electromiografı́a, Antropomorfismo, Machine Learning, Clasificadores,


Mano robótica.

I
ABSTRACT

The continuous evolution of knowledge and technologies has prompted the development
of new areas of knowledge in Ecuadorian education to achieve a level of learning similar
to that of foreign institutions. For this reason, this project proposes the design and
implementation of the control system of an anthropomorphic robotic hand (MRA) with 6
degrees of freedom using myoelectric signals to promote learning in students and
teachers of the Neuroimaging and Bioengineering laboratory of ESPOL. EMG data was
first collected from 10 participants (four men and six women) who imitated four hand
gestures. The implementation design was based on an electronic board for data
acquisition Cyton Board, which communicates via serial port to a PC. The PC hosts the
control system and the classification model through machine learning that issues the
movement through a Rest API (communication with HTTP POST and GET) to an ESP32
that controls the movement of the MRA. The Multi-layer Perceptron Classifier algorithm
was selected with three hidden layers, whose accuracy was 84.78 %, allowing the
identification of 7 out of 10 randomly performed movements among the four selected
gestures with a reaction time of 2 seconds. The final design of the MRA was printed in
3D, containing the entire electrical system inside. This design contributes to objectives 3
and 4 of the SDGs as it is a teaching device that encourages research and could help
people with amputated hands. The final price was $1,570.00, making it 51 % cheaper
than other locally available biomedical equipment. Allowing the device to be more
accessible to be implemented in different educational and research centres.

Key Words: Electromyography, Anthropomorphism, Machine Learning, Classifiers,


Robotic hand.

II
ÍNDICE GENERAL

RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I

ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II

ÍNDICE GENERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III

SIMBOLOGÍA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V

ABREVIATURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VI

ÍNDICE DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VIII

ÍNDICE DE TABLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X

1 INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Descripción del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Marco teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1 Mano robótica antropomórfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Señales mioeléctricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.3 Posición y cantidad de electrodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.4 Procesamiento de señales mioeléctricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.5 Filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.6 Rest API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.7 Modelos ML de clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.8 Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 METODOLOGÍA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1 Requerimientos de Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Placa de adquisición de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 RFDuino USB dongle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 OpenBCI GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Alternativas de solución para la implementación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Sistema de adquisición de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

III
2.4.1 Ubicación de electrodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.2 Selección de movimientos a realizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.3 Programación del sistema de adquisición de datos. . . . . . . . . . . . . . . . . . . . . 22
2.4.4 Adquisición de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Procesamiento de datos.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.1 Preprocesamiento de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5.2 Filtrado de señal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5.3 Extracción de caracterı́sticas de la señal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.4 Selección de caracterı́sticas relevantes de la señal . . . . . . . . . . . . . . . . . . . . 31
2.6 Diseño de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.6.1 Modelos de clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.7 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7.1 Cálculo de consumo energético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7.2 Rest API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3 RESULTADOS Y ANÁLISIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1 Adquisición y procesamiento de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2 Diseño de sistema de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.1 Selección de modelo de clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.2 Sistema de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3.1 Sistema eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3.2 Diseño final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3.3 Resultados finales de implementación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4 Análisis de Costos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4 CONCLUSIONES Y RECOMENDACIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1 Conclusiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2 Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

BIBLIOGRAFÍA

APÉNDICES

IV
SIMBOLOGÍA

mV milivoltio
µV microvoltios
Hz Hercio
A Amperios
Fs Factor de seguridad
ms milisegundos

V
ABREVIATURAS

LNB Laboratorio de Neuroimagen y Bioingenierı́a

EMG Electromiografı́a

EEG Encefalograma

ECG Electrocardiograma

ACTI Actividades de Ciencia, Tecnologı́a e Innovación

PIB Producto Interno Bruto

LDA Linear Discriminant Analysis

MRA Mano Robótica Antropomórfica.

GDL Grados de Libertad.

CB Cyton Board

LSL Lab Streaming Layer

FTT Fast Furier Transform

ML Machine Learning

MLPC Multi-layer Perceptron Classifier

RFC Random Forest Classifier

CNN Convolutional Neural Network

KNN K-Nearest Neighbors

tanh tangente hiperbólica

ReLU Rectified Linear Unit

SGD Stochastic Gradient Descent

GUI Graphical User Interface

PCA Principal Component Analysis

VI
IA Inteligencia Artificial

SISO Single Input Single Output

MISO Multiple Input Single Output

ROC Receiver Operating Characteristic

VII
ÍNDICE DE FIGURAS
Figura 1.1 Prótesis pierna 300A.C [1]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Figura 1.2 Gasto en actividades de ciencia, tecnologı́a e innovación, 2012-2014 [1]. 2
Figura 1.3 Publicaciones cientı́ficas por cada 100.000 habitantes, 2010 - 2019 [2]. . 2
Figura 1.4 Diseño de mano robótica antropomórfica [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 1.5 Generación de un impulso eléctrico debido al movimiento de las fibras
musculares [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Figura 1.6 Curva de número de canales vs el porcentaje de precisión de
clasificación [5]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Figura 1.7 Disposición de los electrodos [5]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Figura 1.8 Diagrama de bloques del Sistema de adquisición de señales EMG [6]. . 9
Figura 1.9 Mano robótica mimética [7]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Figura 1.10 Diseño de mano antropomórfica [8]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Figura 2.1 Metodologı́a de diseño e implementación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Figura 2.2 Placa de biodetección Cyton Board desarrollado por OpenBCI [9]. . . . . . . . 15
Figura 2.3 Adaptador USB con Bluetooth [9]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Figura 2.4 Diseño de implementación de la solución A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Figura 2.5 Diseño de implementación de la solución B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figura 2.6 Diseño de implementación de la solución C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figura 2.7 Diseño de implementación de la solución D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Figura 2.8 Ubicación de electrodos en el CB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Figura 2.9 Diagrama de ubicación y distanciamiento de los electrodos a nivel
muscular del antebrazo de una persona. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Figura 2.10 Gestos seleccionados para implementación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figura 2.11 Diagrama de flujo de adquisición de datos. Parte I. . . . . . . . . . . . . . . . . . . . . . . . . 23
Figura 2.12 Diagrama de flujo de adquisición de datos. Parte II.. . . . . . . . . . . . . . . . . . . . . . . . 24
Figura 2.13 Muestra obtenida del movimiento 1 repetición 6 de una persona. . . . . . . . . 27
Figura 2.14 Gráfica de los datos preprocesados de la Figura 2.13. . . . . . . . . . . . . . . . . . . . . 28
Figura 2.15 Espectro de frecuencias de repetición 6 del gesto 1 de una muestra. . . . 29
Figura 2.16 Señal filtrada del movimiento 1 repetición 6 de una muestra. . . . . . . . . . . . . . 31
Figura 2.17 Relevancia de las 20 mejores caracterı́sticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

VIII
Figura 2.18 Matriz de correlación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Figura 2.19 Diseño base de MRA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Figura 2.20 Diagrama de conexión de ESP32 y PCA9685 [10]. . . . . . . . . . . . . . . . . . . . . . . . . 36
Figura 2.21 Fuente de alimentación de protoboards [11]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Figura 3.1 Curvas de entrenamiento y validación, escalabilidad y rendimiento del
modelo seleccionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Figura 3.2 Matriz de confusión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Figura 3.3 Curva ROC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Figura 3.4 Diagrama de bloques del sistema de control del clasificador. . . . . . . . . . . . . . 44
Figura 3.5 Diagrama de sistema de control de posición de un servomotor [12]. . . . . . 44
Figura 3.6 Diagrama de bloques del sistema de control de los servomotores. . . . . . . 45
Figura 3.7 Diagrama de conexión del sistema eléctrico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Figura 3.8 Diseño final de la MRA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Figura 3.9 Resultados de predicción de implementación del diseño. Parte 1. . . . . . . . 48
Figura 3.10 Resultados de predicción de implementación del diseño. Parte 2. . . . . . . . 49
Figura 3.11 Diagrama de Flujo de funcionamiento del diseño de implementación. . . . 50

IX
ÍNDICE DE TABLAS
Tabla 2.1 Requerimientos para el diseño e implementación del sistema. . . . . . . . . . . . . . 14
Tabla 2.2 Requerimientos para el diseño e implementación del sistema. . . . . . . . . . . . . . 19
Tabla 2.3 Matriz de decisión de alternativas de solución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Tabla 2.4 Medidas de ubicación de cada zona del antebrazo. . . . . . . . . . . . . . . . . . . . . . . . . . 21
Tabla 2.5 Datos de sujetos de prueba parte 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Tabla 2.6 Datos de sujetos de prueba parte 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Tabla 3.1 Resultado de entrenamiento y validación de modelos de clasificación . . . . 39
Tabla 3.2 Parámetros de evaluación cruzada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Tabla 3.3 Resultados de evaluación cruzada con modelo seleccionado. . . . . . . . . . . . . . 40
Tabla 3.4 Reporte del modelo MLPC seleccionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Tabla 3.5 Cotización de rubros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Tabla 3.6 Comparativo entre prótesis de mano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

X
CAPÍTULO 1
1. INTRODUCCIÓN

El desarrollo de sistemas mecánicos con formas y comportamientos similares a


los movimientos de los seres vivos remonta de varias épocas atrás. Un claro
ejemplo fue la construcción de la primera pierna artificial realizada con materiales
de madera y bronce en el año 300 a.C., según registros históricos [13].

Figura 1.1 Prótesis pierna 300A.C [1].

Estos sistemas también fueron abordados por Leonardo Da Vinci, una persona
destacada por su ingenio e invenciones en el siglo XV. Jack Steele en 1959-1960
acuño el término de biónica como la ”Materialización de los funcionamientos
reales de los sistemas vivos en aparatos” [14]. Posteriormente surge el término
prótesis, como aquel dispositivo cuya finalidad es mejorar o reemplazar una parte,
sección o miembro completo del cuerpo humano que haya sido afectado o
amputado permitiendo recuperar su movilidad y aspecto [15]. En la última década,
se ha desarrollado nuevas y mejores interfaces hombre-máquina mediante la
incorporación del mundo digital en la Industria 4.0; entre los cuales se tienen los
sistemas ciberfı́sicos [16].

La continua evolución de conocimientos y tecnologı́as ha repercutido en la


educación ecuatoriana incitándolas a incorporar nuevas áreas de conocimiento
para alcanzar un nivel de aprendizaje similar a las instituciones del exterior [17]; y
ası́, poder satisfacer las demandas del sector productivo. En el año 2012, el
gobierno ecuatoriano destinó el 0.28 % del PIB en I+D y un total de 0.98 % del PIB
como gasto de ACTI y va en aumento, como se puede apreciar en la Figura
1.2 [18].

Figura 1.2 Gasto en actividades de ciencia, tecnologı́a e innovación, 2012-2014 [1].

Este aporte ha permitido mantener un rango de 30 publicaciones cientı́ficas en


Scopus por año. Sin embargo, en la Figura 1.3 se puede apreciar que Chile tiene
un promedio de 85 publicaciones con una población similar a Ecuador. Por lo que,
el cómo se usan los recursos tecnológicos y del personal marcan la diferencia [18].

Figura 1.3 Publicaciones cientı́ficas por cada 100.000 habitantes, 2010 - 2019 [2].

2
Por lo tanto, el desarrollo de un recurso didáctico para el Laboratorio de
Neuroimagen y Bioingenierı́a (LNB) de la ESPOL permitirá expandir las bases de
conocimiento impartidos a los estudiantes y elevar la calidad de enseñanza de la
institución educativa. El presente proyecto está seccionado en 4 capı́tulos
empezando con la descripción del marco teórico y objetivos; el capı́tulo 2 detalla la
metodologı́a implementada para clasificar las señales EMG según el movimiento
muscular; el capı́tulo 3 presenta los resultados obtenidos de la implementación, y
el capı́tulo 4 finaliza el documento con las conclusiones y recomendaciones.

1.1 Descripción del problema

En el transcurso del aprendizaje de una ingenierı́a se adquieren todo tipo de


habilidades y conocimientos cientı́ficos que, en cada generación de
estudiantes se amplı́an cada vez más. El desarrollo de fuentes de
conocimiento, que permitan ser base para las generaciones predecesoras,
ha permitido alcanzar una mayor capacidad de conocimiento en los
estudiantes.

Actualmente, en el LNB de la ESPOL no cuenta con dispositivos que


permitan la interacción hombre-máquina, los cuales estén basados en el
registro de señales de electromiografı́a (EMG) y cuyo control sea realizado
aplicando Machine Learning (ML). Por ello, se requiere del diseño e
implementación de un sistema de control de un dispositivo mecatrónico
didáctico para el desarrollo de conocimiento en los estudiantes y profesores.
El dispositivo deberá tener como base el diseño 3D de una mano robótica
antropomórfica (MRA), otorgado por el PhD. Francys Loayza, la cual deberá
moverse mediante el análisis e interpretación de las señales mioeléctricas.
El dispositivo mecatrónico representa la mano de la extremidad superior
derecha, el cual presenta seis grados de libertad que le permitirán reproducir
los movimientos naturales de la mano humana. Este dispositivo tiene como
finalidad ampliar los recursos utilizados en las clases de laboratorio e
investigación de los estudiantes de la ESPOL, la cual podrá ser utilizada
para probar e implementar algoritmos de control utilizando inteligencia
artificial (IA), y mejorar la interfaz hombre-máquina.

3
1.2 Justificación

Según los datos estadı́sticos de la RICYT, la aportación cientı́fica de


Ecuador es de aproximadamente 30 publicaciones hasta el año 2019. Dicho
aporte es similar a paı́ses como Argentina y Colombia, pero se encuentra
por debajo de Chile y de grandes potencias como Estados Unidos y España,
como se aprecia en la Figura 1.3. Mediante el aporte al LNB de la ESPOL
con el dispositivo biomecatrónico didáctico (i,e,. una mano robótica
antropomórfica) se dará un paso adelante en el desarrollo de conocimientos
cientı́ficos y tecnológicos tanto para estudiantes como docentes. De esta
forma, también se incentiva a la comunidad educativa a generar
aportaciones cientı́ficas basadas en señales bioeléctricas.

El desarrollo de la MRA permitirá a futuro ampliar la malla curricular de los


estudiantes de la carrera de Ingenierı́a en Mecatrónica de la ESPOL, los
cuales podrán aplicar nuevos conocimientos de biomecatrónica al
implementar distintos sistemas de control basados en IA. Para ello, la MRA
constará con el respectivo circuito eléctrico para realizar un control
independiente de los movimientos de la mano utilizando sensores
mioeléctricos.

De esta forma, no solo se incentiva a la investigación en la comunidad


educativa de la ESPOL sino también establecer a futuro el desarrollo de
prótesis robóticas a personas necesitadas que presenten amputación de su
mano.

1.3 Objetivos

1.3.1 Objetivo general

Diseñar e implementar el sistema de control de una mano robótica


antropomórfica con seis grados de libertad (GDL) mediante señales
mioeléctricas, para el desarrollo de una herramienta didáctica que
permita promover el aprendizaje en estudiantes y docentes del laboratorio
de Bioingenierı́a de la ESPOL.

4
1.3.2 Objetivos especı́ficos

Ensamblar un prototipo de la MRA utilizando piezas impresas en 3D.

Analizar las señales mioeléctricas de los sujetos para el desarrollo de


un correcto procesamiento de los datos.

Diseñar un sistema de control que permita la clasificación de las señales


mioeléctricas en 4 gestos de la mano y que emita el control sobre el
movimiento de la MRA.

Evaluar el desempeño de la implementación del sistema de control en


la MRA.

1.4 Marco teórico

1.4.1 Mano robótica antropomórfica

La mano es una extremidad con una gran habilidad para manipular


objetos y ejecutar varias actividades. Su ausencia reducirı́a
considerablemente la capacidad de agarrar y maniobrar objetos [19]. La
complejidad de su movimiento se debe a la cantidad de GDL que posee
en un espacio reducido; de ello, también se evidencia el reducido tamaño
de sus huesos [20]. En las últimas dos décadas ha aumentado el interés
por el desarrollo de manos robóticas con la meta de desarrollar y diseñar
sistemas electromecánicos capaces de reproducir la mayorı́a de las
funcionalidades y estética de la mano [21].

Al desarrollar una mano robótica se considera dos puntos importantes: las


propiedades cinemáticas y las apariencia estética. Esta última define el
término ”Antropomorfismo” como la capacidad de un robot de imitar parcial
o totalmente la forma, consistencia, tamaño, color, entre otros aspectos
fı́sicos y visuales de un miembro humano [22] [23], como se puede apreciar
en la Figura 1.10.

La teleoperación es uno de los puntos débiles del antropomorfismo, la cual


permite realizar distintas tareas con un reducido entrenamiento [24]. Ası́

5
Figura 1.4 Diseño de mano robótica antropomórfica [3].

como la versatilidad para manipular objetos mediante movimientos simples


y rápidos [25], que se logran mediante el análisis cinemático de fuerzas y
torques según los actuadores [26].

1.4.2 Señales mioeléctricas

Las señales EMG son señales bioeléctricas producidas por las fibras
musculares o nervios durante el movimiento de una extremidad.
Continuamente se ha buscado mejores algoritmos de diferenciación y
clasificación de los distintos movimientos de las extremidades para ser
replicados en sus semejantes robotizados [27]. Estas señales son
medidas por dos métodos: el primero es por inserción de una aguja
hipodérmica, pero se considera invasivo e impropio para el cuerpo
humano (Figura 1.5); el segundo método son electrodos superficiales. Se
diferencian en la cantidad de grupos musculares que logran medir, siendo
la intramuscular aquella capaz de seccionar las fibras musculares [4].

La señal medida por los electrodos superficiales es producida por la


adición espacial y temporal de las unidades motoras individuales en
conjunto con las fibras musculares que se encuentran en la vecindad del
electrodo [28]. Su amplitud va de 0 a 10 [mV] con una frecuencia útil en el
rango de 0-500 [Hz], siendo el rango entre 50 y los 150 [Hz] la frecuencia
con mayor de energı́a concentrada. [29]

6
Figura 1.5 Generación de un impulso eléctrico debido al movimiento de las fibras
musculares [4].

1.4.3 Posición y cantidad de electrodos

La posición y la cantidad de electrodos son aspectos a considerar durante


la recolección de datos EMG. La asistencia de un personal especializado
o conocimientos en anatomı́a muscular pueden ayudar a obtener señales
más precisas acorde al movimiento de una extremidad. De acuerdo a los
resultados de [5], a partir del cuarto canal no se aprecia mejoras en la
exactitud de un modelo de clasificación. Al contrario, este se mantiene o
empieza a decrecer como se aprecia en la Figura 1.6.

En el análisis de [30] se demuestra que la mejor disposición de los


electrodos es colocarlos de forma longitudinal o mediante una
combinación con una disposición transversal y longitudinal respecto a la
dirección de las fibras musculares, véase Figura 1.7. Y un electrodo de
gran tamaño reduce la sensibilidad del mismo.

7
Figura 1.6 Curva de número de canales vs el porcentaje de precisión de clasificación [5].

Figura 1.7 Disposición de los electrodos [5].

1.4.4 Procesamiento de señales mioeléctricas

El procesamiento consiste en la amplificación y filtrado de la señal (Figura


1.8), los cuales dependerán del análisis según el propósito final. Los
amplificadores diferenciales alcanzan magnitudes de 5000 veces y
permiten evitar distorsiones presentes en las señales EMG [31].

8
Figura 1.8 Diagrama de bloques del Sistema de adquisición de señales EMG [6].

El cuerpo humano es un buen agente de recepción de ondas


electromagnéticas, por lo que fácilmente absorbe ruido ambiental [27].
Estos son atenuados o eliminados mediantes la aplicación de filtros, pero
su uso podrı́a conllevar a eliminar información útil entre los 50-150
Hz [32]. Entre los ruidos presentes se tiene: ruidos inherentes
provenientes de equipos electrónicos (0 a miles de hertz), ruidos
comprendidos por la red eléctrica (50 o 60 [Hz]) y finalmente el
movimiento en la interfaces electrodo-piel (0-10 [Hz]) [33].

1.4.5 Filtros

Entre los filtros mas utilizados en señales EMG se tiene:

Filtro notch: Utilizado para eliminar el ruido generado por la red


eléctrica, cuyas frecuencias están en 50 o 60 [Hz]. Su forma mas
utilizada pertenece al segundo orden conformado por dos polos y dos
ceros, véase Ecuación 1.1 [34].

s2 + ω N
2
T (s) = 2
(1.1)
s2 + 2ξωN s + ωN

Filtro Butterworth: Se lo denomina máximamente plano debido a que,


dependiendo de su orden, presenta una caı́da bien nı́tida donde no se

9
aprecian los picos en el diagrama de Bode. Su fórmula depende de la
paridad del orden, siendo la Ecuación 1.2 para orden ”M” impar y la
Ecuación 1.3 para orden par en filtros pasa baja [34]. Para filtros pasa
alta se deben agregar ceros en en el origen según el orden.

 −1)/2 
 (MY 2

ωN ωN
T (s) = 2
, θi = i × 180/N (1.2)
s + ωN 1
s2 + 2 cos (θi )ωN s + ωN

M/2  2

Y ωN
T (s) = 2
, θi = (i − 0.5) × 180/N (1.3)
1
s2 + 2 cos (θi )ωN s + ωN

1.4.6 Rest API

Rest Api es un conjunto de reglas que utilizan el protocolo HTTP para


transmitir datos de una forma mucho mas rápida y sencilla entre cliente y
servidor [35]. En [36], se utilizó comunicación websocket con un ESP32
desde un servidor remoto y uno extranjero. Este ultimo es un sistema mas
completo que funciona mediante sockets.

1.4.7 Modelos ML de clasificación

La IA es una ciencia cuyo objetivo es buscar una relación con las


habilidades que realizan las personas. El ML es un conjunto que depende
de la IA, porque con ML se entrena y aprende una máquina [37].

Para el aprendizaje del modelo, es importante dividir los datos en dos


conjuntos: un conjunto de entrenamiento con el 70 % de los datos, para
modelar el comportamiento; y un conjunto de evaluación con el 30 % de
los datos, para determinar la exactitud del modelo [37]. A través de los
datos de entrada, se ejecuta un algoritmo que resulta en la generación de
mas información para el problema [38]. Entre los modelos de clasificación
se tiene:

10
Decisión Tree.

Random Forest.

K Nearest Neighbor -KNN.

Multi-layer Perceptron Clasificator.

Gaussian Process Clasificator.

Support Vector Machine Polinomial.

Ridge Classifier.

1.4.8 Estado del arte

Hasta el presente año, se ha desarrollado una gran cantidad de manos


robóticas implementando distintos métodos para alcanzar el
antropomorfismo. Entre los cuales se destacan aquellos que utilizan
señales EMG como base de análisis. Entre los destacados se tiene [7],
en el cual se enfocaron en replicar la funcionalidad de los ligamentos de
la mano ampliando el número de GDL’s, como se aprecia en la Figura 1.9.
Su modelo de clasificación basado en una red neuronal de 3 capas (656,
328, 6 neuronas respectivamente) era capaz de determinar 6 tipos de
gestos de la mano con una exactitud del 84.7 % mediante el uso de un
brazalete MYO. El brazalete presentaba 6 canales para la lectura
mioeléctrica.

Figura 1.9 Mano robótica mimética [7].

11
Otro ejemplo es el desarrollado en [8], cuyo diseño se puede aprecia en
la Figura 1.10. Su diseño es similar al anterior, pero únicamente utiliza un
solo cordón por dedo para ejercer su respectivo movimiento. Su
metodologı́a se basa en la sinergia muscular para la clasificación de
varios movimientos de la mano a partir de un pequeño conjunto de
movimientos aprendidos. El clasificador implementado era una red
recurrente que mezcla un modelo logarı́tmico-linearizado gaussiano
(R-LLGMN). La exactitud de su modelo logró alcanzar el 90 % entre sus
pruebas.

Figura 1.10 Diseño de mano antropomórfica [8].

Por otro lado, en [39] desarrollo el control de una prótesis robótica de una
mano mediante el uso de redes neuronales convoluciones (CNN). En el
procesamiento de las señales EMG se aplicó el análisis de los
componentes principales (PCA) para la extracción de las caracterı́sticas
de mayor relevancia que ingresarı́an a la CNN. Sus resultados
demostraron un varianza en la exactitud del modelo según el sujeto de
prueba, el cual variaba entre un 60 % a un 80 % aproximadamente.

12
CAPÍTULO 2
2. METODOLOGÍA

En este capı́tulo se detalla el procedimiento para el cumplimiento del propósito del


presente proyecto. Conforme los requerimientos planteados por el representante
del LNB, se desarrolló cada etapa del proceso de diseño desde la selección de
alternativas de solución hasta su implementación. En la Figura 2.1 se puede
apreciar un diagrama de flujo de la metodologı́a aplicada.

Figura 2.1 Metodologı́a de diseño e implementación.


2.1 Requerimientos de Diseño

El diseño e implementación del sistema de control del MRA fue desarrollado


bajo ciertos requerimientos del cliente. Los cuales se describen en la Tabla
2.1.

Tabla 2.1 Requerimientos para el diseño e implementación del sistema.

Criterio Descripción

La exactitud del modelo del sistema de control debe ser mayor al


Exactitud
80 %.

Costo La implementación del prototipo no debe superar los $3 000.

Tiempo de El tiempo entre que se realiza el movimiento hasta que es imitado


reacción por la MRA debe ser menor a 5 segundos.

Ubicación La ubicación de los electrodos cuando se realice la medición de


estándar las señales debe ser la misma para todos los sujetos.

El dispositivo debe ser diseñado para trabajar durante dos horas


Operatividad
de manera continua.

Cyton Se debe utilizar la placa de adquisición de datos bioeléctricos


Board Cyton Board.

MRA Implementar el sistema de control sobre el MRA otorgado.

2.2 Placa de adquisición de datos

Conocidos los requerimientos, se realizó una breve investigación sobre la


placa de adquisición de datos bioeléctricos Cyton Board (CB), Figura 2.2.
Esta placa permite muestrear la actividad eléctrica del cerebro (EEG), la
actividad eléctrica muscular (EMG) e incluso la actividad eléctrica del
corazón (ECG) a través de sus 8 canales de alta ganancia con bajo ruido [9].
En el Apéndice A se puede encontrar mas información sobre las
especificaciones técnicas de la placa CB.

2.2.1 RFDuino USB dongle

El RFDuino USB dongle o llave/adaptador USB (Figura 2.3) es un


dispositivo que permitió establecer una conexión de forma inalámbrica

14
Figura 2.2 Placa de biodetección Cyton Board desarrollado por OpenBCI [9].

con un equipo de cómputo. Contiene un convertidor FTDI USB Serial que


permitı́a recibir datos a una velocidad de 115200 baudios hasta 1 mega
baudio [40] [9]. En Apéndice B se describió de forma más detalla su
protocolo de comunicación.

Figura 2.3 Adaptador USB con Bluetooth [9].

2.2.2 OpenBCI GUI

OpenBCI posee un potente GUI que contenı́a una interfaz muy amigable
e iterativa para analizar los datos en tiempo real debido a sus
herramientas de visualización, grabación y transmisión de datos. Para
ello, se utilizó el lenguaje Python para su programación y el sistema de
Lab Steaming Layer (LSL) para la transmisión de datos [41]. Una mayor
descripción de la funcionalidad del sistema LSL se encuentra en el
Apéndice C.

15
2.3 Alternativas de solución para la implementación

En relación a la problemática se planteó 4 diseños de implementación, en


donde cada alternativa tenı́a como base la placa CB. El método de
adquisición y procesamiento de datos depende del tipo de hardware y medio
de comunicación. Las alternativas de solución planteadas, se presentan a
continuación:

A) Sistema de control en PC utilizando comunicación serial con un


Arduino o ESP32.
Su diseño (Figura 2.4) hace uso de un PC para la adquisición y
procesamiento de los datos. También contiene el sistema de control con el
clasificador ML, cuya salida emite el movimiento a ejecutar mediante
comunicación serial hacia el hardware de control de los motores de la MRA.
El hardware puede ser un Arduino o un ESP32 y el GUI es compatible con el
PC.

Figura 2.4 Diseño de implementación de la solución A.

B) Sistema de control en PC utilizando comunicación Rest Api con


ESP32.
Esta solución (Figura 2.5) se diferencia de la anterior en el uso de la
comunicación por Rest Api entre el PC y el ESP32.

16
Figura 2.5 Diseño de implementación de la solución B.

C) Sistema de control utilizando una Single Board Computer Raspberry


Pi.
El diseño de la Figura 2.6 aloja el sistema de control, el modelo de
clasificación y el control de la MRA en la Raspberry Pi. El hardware no es
compatible con el GUI y la adquisición de datos no presentaba una
frecuencia de muestreo estable. Presentaba una mayor complejidad al
capturar los datos del movimiento de la mano del usuario.

Figura 2.6 Diseño de implementación de la solución C.

D) Sistema de control utilizando una Single Board Computer Jetson


Nano.
El diseño de la Figura 2.7 está basado en una Jetson Nano el cual posee
una mayor capacidad de cómputo que la raspberry pero menor que un PC.
Esta es una opción más costosa y con mejores resultados de cómputo en
redes neuronales [42]. Para la salida de control, se requerı́a de un módulo de
mosfet para controlar los servomotores.

17
Figura 2.7 Diseño de implementación de la solución D.

La selección de la mejor alternativa de solución se determinó bajo el método


ordinal corregido de criterios ponderados explicado en [43]. En la Tabla 2.2 se
puede apreciar el orden de los criterios según el grado de importancia y su
respectivo peso que influenciaba en la selección. Una breve descripción de
los criterios que se evaluaron se muestra a continuación:

Transmisión de datos La velocidad de transmisión de datos debı́a ser alta


para obtener una baja latencia.

Capacidad de computo El hardware debı́a ser capaz de procesar los datos


rápidamente.

Interferencia El diseño debı́a ser semi robusto reducir las afectaciones por
ruido.

Portabilidad El diseño del sistema debı́a ser pequeño y simple.

Tiempo de reacción Bajo tiempo de reacción de la MRA.

Costo El costo de producción debı́a ser bajo.

18
Tabla 2.2 Requerimientos para el diseño e implementación del sistema.

Criterios de evaluación

Rango de % de
Peso Criterio
importancia decisión

3.0 Tiempo de reacción 1 26 %

2.5 Capacidad de computo 2 21 %

2.0 Costo 3 17 %

2.2 Transmisión de datos 4 19 %

1.5 Portabilidad 5 13 %

0.5 Interferencia 6 4%

11.7 Total 100 %

Cada alternativa propuesta fue evaluada según los pesos de los criterios
especificados. Dado los resultados obtenidos en la Tabla 2.3, se determinó
que la mejor alternativa de solución fue la opción B. A pesar de su alto costo
por el PC, la capacidad de computo era mayor y este suele estar presente en
los laboratorios por lo que el costo final puede ser reducido.

Tabla 2.3 Matriz de decisión de alternativas de solución.

Criterios Resultados

Pesos 3.0 2.5 2.0 2.2 1.5 0.5


Puntaje con peso
Puntaje sin peso
Interferencia
Transmisión

Portabilidad
Alternativas

de computo
Capacidad
Tiempo de

Prioridad
reacción

de datos
Costo

A 7 9 4 8 5 7 40 80.1 4

B 8 9 4 9 7 9 46 89.3 1

C 9 6 9 6 6 10 46 87.2 3

D 9 8 7 7 5 10 46 88.9 2

19
2.4 Sistema de adquisición de datos

Su desarrollo partió desde la especificación de la ubicación y la cantidad


requerida de electrodos y finalizó con la adquisición de datos a los sujetos de
prueba.

2.4.1 Ubicación de electrodos

Tomando en cuenta los resultados de la Figura 1.6, se utilizó 6 canales


para la adquisición de datos por EMG. En la disposición de los electrodos,
se seleccionó aquellos grupos musculares de flexión y extensión del
antebrazo que incidı́an en el movimiento de los dedos de la mano
mediante la plataforma de Complete Anatomy [44]. Los cuales fueron:

I. Flexor superficial de los dedos.

II . Flexor largo del pulgar.

III . Flexor profundo de los dedos.

IV . Extensor largo del pulgar + extensor del ı́ndice.

V. Extensor corto del pulgar.

VI . Extensor del meñique + extensor de los dedos.

Cada grupo muscular se encuentra ubicado en su respectiva área


enumerada en la Figura 2.9. Cada par de área enumerada corresponde a
un canal de la placa CB, Figura 2.8.

Figura 2.8 Ubicación de electrodos en el CB.

20
Figura 2.9 Diagrama de ubicación y distanciamiento de los electrodos a nivel muscular del
antebrazo de una persona.

Para facilitar la localización de las áreas, se segmentó la parte posterior


y anterior en tres zonas acorde a la Tabla 2.4. Esto permitió mantener un
estándar en la colocación de cada electrodo y un orden en la lectura de
las señales mioeléctricas.

Tabla 2.4 Medidas de ubicación de cada zona del antebrazo.

Variable Medida Descripción

DAnt Distancia del Antebrazo parte anterior.

D1 0.205*DAnt zona 1.

D2 0.295*DAnt zona 2.

D3 0.5*DAnt zona 3.

DPost Distancia del Antebrazo parte posterior.

D4 0.273*dPost zona 4.

D5 0.545*dPost zona 5.

D6 0.182*dPost zona 6.

21
2.4.2 Selección de movimientos a realizar

Se escogió 4 movimientos distintos a los realizados en los experimentos


de [8], [45]. En la Figura 2.10(a), se puede apreciar el primer gesto de
la mano el cual es utilizado de forma habitual para el pulso de botones, o
manejo de pantallas táctiles. El segundo (Figura 2.10(b)) expresa el estado
”OK”, o la expresión ”todo esta bien”. El tercer (Figura 2.10(c)) es utilizado
frecuentemente para manipular objetos pequeños, como una tarjeta, un
lápiz o pluma. El cuarto (Figura 2.10(d)) representa la letra ’V’ dentro del
lenguaje de señas, y expresa conformidad.

(a) Gesto 1 (b) Gesto 2 (c) Gesto 3 (d) Gesto 4

Figura 2.10 Gestos seleccionados para implementación.

2.4.3 Programación del sistema de adquisición de datos

Se desarrolló el programa en python para establecer la comunicación GUI


mediante LSL, el cual se encuentra en el Apéndice E Código E.1.1. En el
Apéndice C se puede encontrar más información sobre LSL, asi como la
respectiva configuración del GUI en el Apéndice D. En la Figura 2.11 y la
Figura 2.12 se puede apreciar la secuencia de la adquisición de datos y la
aleatoriedad del orden de los gestos en cada repetición. Los datos de cada
gesto fueron capturados en 2 segundos y al finalizar cada sesión fueron
guardados en un archivo *.csv con el siguiente encabezado: ı́ndice, time,
ch1, ch2, ch3, ch4, ch5, ch6, tag (”tag” indica el tipo de gesto).

22
Figura 2.11 Diagrama de flujo de adquisición de datos. Parte I.

23
Figura 2.12 Diagrama de flujo de adquisición de datos. Parte II.

2.4.4 Adquisición de datos.

Se seleccionó personas que estuvieran en un rango entre 18 a 50 años


de edad debido a que este selecto grupo presenta una mayor actividad
eléctrica en los músculos. Los participantes firmaron un acuerdo de
autorización de uso de datos (véase Apéndice F), y luego realizaron 20
repeticiones de cada gesto. En la Tabla 2.5 se puede apreciar aquellos
sujetos que participaron en una o varias sesiones.

24
Tabla 2.5 Datos de sujetos de prueba parte 1.

Contextura
Foto Edad Dexteridad
muscular

20 Media Diestra

18 Media Diestra

32 baja Diestra

25 baja Diestro

34 baja Diestra

25
Tabla 2.6 Datos de sujetos de prueba parte 2.

Contextura
Foto Edad Dexteridad
muscular

25 Media Diestra

48 Media Diestra

43 Media Diestro

44 Media Diestro

43 Media Diestra

2.5 Procesamiento de datos.

Los datos obtenidos de las muestras fueron preprocesados antes de filtrarlos.


Cada gesto tenı́a un total de 500 datos debido a la frecuencia de muestreo de
250 Hz de la placa CB. En la Figura 2.13 se puede apreciar los datos crudos.

26
Figura 2.13 Muestra obtenida del movimiento 1 repetición 6 de una persona.

2.5.1 Preprocesamiento de datos.

El preprocesado de los datos fue aplicado a cada repetición de la muestra,


cuya secuencia fue:

A cada canal se le restó su media aritmética para centrar la señal


respecto al origen. De igual forma, se precedió con el tiempo para
establecer su inicio en cero milisegundos.

Se normalizó mediante la implementación del método escalador


Min-Max (ecuación 2.1), para reducir la escala de los datos originales a
valores de 0 a 1 [46]. En la ecuación 2.2 se puede apreciar el cálculo
para el canal 1 de la muestra de la Figura 2.13.

X − Xmin
Xsc = (2.1)
Xmax − Xmin

27
X − (−153416.984375)
Xsc = (2.2)
17447.056640625 − (−153416.984375)

Por facilidad, se desarrolló el Código E.2.2 del Apéndice E que permitió


aplicar la ecuación 2.1 para cada dato de la serie temporal y su
repetición por cada canal, cuyo resultado se puede apreciar en la
Figura 2.14.

Figura 2.14 Gráfica de los datos preprocesados de la Figura 2.13.

2.5.2 Filtrado de señal.

Mediante un análisis de la trasformada rápida de Furier (FTT), se logró


evidenciar aquellas frecuencias atı́picas de la señal que opacaban las
demás frecuencias, como se aprecia en la Figura 2.15. Dichos picos se
debı́an al ruido por la red eléctrica domestica siendo en Ecuador de 60
[Hz]. También, debido a la interacción electrodo-piel y a las señales
procedentes de dispositivos electrónicos cercanos. Estas señales oscilan
a una frecuencia entre 0 y 10 [Hz] [33].

28
(a) Canal 1 (b) Canal 2

(c) Canal 3 (d) Canal 4

(e) Canal 5 (f) Canal 6

Figura 2.15 Espectro de frecuencias de repetición 6 del gesto 1 de una muestra.

Para atenuar las frecuencias atı́picas se utilizó el filtro digital notch a una
frecuencia de 60 [Hz] [47], ecuación 2.3. Y un filtro pasa banda de 10 -
100 [Hz] para atenuar las frecuencias fuera del espectro seleccionado. El

29
filtro digital aplicado fue del tipo Butterworth de orden 5, cuya expresión
matemática para el filtro pasa baja se aprecia en la ecuación 2.4 y para el
filtro pasa alta en la ecuación 2.5.

s2 + (2π60)2
 
H(s) = A (2.3)
s2 + s 2π60
2π4
+ (2π60)2

(2π100)2
  
2π100
T (s) =
s + (2π100) s2 + 2 cos (36)2π100s + (2π100)2
(2.4)
(2π100)2
 

s2 + 2 cos (72)2π100s + (2π100)2

(2π10)2 s2
  
2π10s
T (s) =
s + 2π10 s2 + 2 cos (36)2π10s + (2π10)2
(2.5)
(2π10)2 s2
 

s2 + 2 cos (72)2π10s + (2π10)2

En el código E.2.4 del Apéndice E se puede apreciar la función de los filtros


digitales. En la Figura 2.16 se puede observar el resultado de la muestra
analizada ya filtrada, en la cual se aprecia con claridad la captura del gesto
realizado por el sujeto.

30
Figura 2.16 Señal filtrada del movimiento 1 repetición 6 de una muestra.

2.5.3 Extracción de caracterı́sticas de la señal

En la extracción de caracterı́sticas propias de los datos se utilizó la


librerı́a TSFresh que permite calcular 77 ecuaciones estadı́sticas bajo
distintos parámetros [48]. Ciertos resultados presentaban valores muy
altos y otros por los decimales, por lo que los datos de las caracterı́sticas
fueron normalizados utilizando la ecuación 2.1.

2.5.4 Selección de caracterı́sticas relevantes de la señal

De todo el conjunto de caracterı́sticas, se filtró aquellas más relevantes


mediante la función Calculate relevance table de la librerı́a TSFresh [49].
Su aplicación se encuentra en el código E.2.6 del Apéndice E, en donde se
detalla los parámetros para obtener aquellas caracterı́sticas predictoras de
4 clases (gestos de la mano). De este conjunto se escogió los 20 mejores
basados en un algoritmo de Decision Tree cuya función se encuentra en el
código E.2.7 y el resultado obtenido se puede apreciar en la Figura 2.17.

31
Figura 2.17 Relevancia de las 20 mejores caracterı́sticas.

En la Figura 2.18 se aprecia la matriz de correlación obtenida de las 20


caracterı́sticas seleccionadas, las cuales pertenecieron a los canales 2, 3,
4 y 5 de la placa CB. El ı́ndice de cada eje de la matriz corresponde a la
caracterı́stica ubicada en la Figura 2.17 en orden descendente.

32
Figura 2.18 Matriz de correlación.

2.6 Diseño de control

Para el diseño del sistema de control se utilizó varios modelos de


clasificación ML que permitieran alcanzar una alta exactitud. Para ello, el
80 % del dataset de los sujetos fue destinado para entrenamiento, y un 20 %
destinado a evaluación.

33
2.6.1 Modelos de clasificación

Los parámetros de los modelos fueron modificados hasta haber obtenido


el mejor resultado posible, y cuyos parámetros son descritos a
continuación, con su respectiva función:

Decision tree: No se requirió de la entrada de algún parámetro, debido


a que el modelo creaba sus propias reglas de decisión basándose en
las caracterı́sticas de los datos de entrenamiento. Su función
fue:”DecisionTreeClassifier()”.

Polynomial: Este modelo fue basado en un vector de soporte de


clasificación cuyo kernel estaba basado en una función de 8vo orden
con un parámetro de regularización (C) de 0.001. La función utilizada
fue: ”svm.SVC(kernel=’poly’, degree=8, C=0.001)”.

KNN: Para el KNN se estableció la cantidad de valores vecinos en 20.


El resto de parámetros se mantuvieron en sus valores
predeterminados, la cual quedó expresada en:
”KNeighborsClassifier(n neighbors= 20)”.

Random forest: Se modificó únicamente el ’random state’ en 21 para


afectar la aleatoriedad de las muestras al iniciar la construcción de los
árboles. Su función fue: ”RandomForestClassifier(random state=21)”.

Multi-layer perceptron: El modelo consta de una red neuronal de 3


capas ocultas con 250, 150 y 50 neuronas respectivamente. Se definió
un máximo de 400 iteraciones para la convergencia del optimizador
’adam’ con la función de activación ’tanh’. La función implementada
fue: ”MLPClassifier((250,150,50), max iter=400, activation = ’tanh’,
solver=’adam’, random state=1)”

34
Gaussian process: Se mantuvo los valores predeterminados de sus
parámetros y se modificó el estado inicial aleatorio en 10. La función
implementada fue: ”GaussianProcessClassifier(random state=10)”.

Ridge: No se requirió de la entrada de algún parámetro, debido a que


el modelo creaba sus reglas de decisión basándose en las
caracterı́sticas de los datos de entrenamiento. Su función fue:
”RidgeClassifier()”.

SGD: Se mantuvo los valores por defecto de la función quedando como:


”SGDClassifier()”.

2.7 Implementación

El sistema de control se implementó sobre el diseño de la MRA otorgada


por el representante del LNB el cual se aprecia en la Figura 2.19. El diseño
consistió en un dispositivo de 6 GDL, uno por cada dedo y solo el pulgar
contenı́a 2 GDL. La MRA fue impresa en 3D con material PLA.

Figura 2.19 Diseño base de MRA.

35
Para el movimiento de cada GDL se utilizó un pequeño servomotor cuyo par
de torque era de 2.5 [kg-cm], todos los demás datos técnicos se encuentran
en el Apéndice G. Mediante el módulo PCA9685 se logró establecer el
control de los 6 servomotores mediante comunicación I2C con el ESP32.
Este módulo actuaba como un pequeño driver de control, sus datos técnicos
se encuentran en el Apéndice H.

Figura 2.20 Diagrama de conexión de ESP32 y PCA9685 [10].

2.7.1 Cálculo de consumo energético

Para alimentar los distintos componentes de la alternativa, esta fue


separada en dos fuentes: una fuente de fuerza para los servomotores y
otra fuente para los componentes de lógica de control. La fuente de lógica
de control escogida era un módulo de alimentación de 5 [V] y 700 [mA]
(véase Apendice I), los cuales eran suficientes para alimentar el módulo
PCA9685 y al ESP32, cuyo consumo utilizando WIFI fue
aproximadamente de 180 [mA] (véase Apéndice J) al igual que el
controlador de servos.

36
Figura 2.21 Fuente de alimentación de protoboards [11].

Por otro lado, se dimensionó la fuente de fuerza mediante el consumo


aproximado de los servomotores, los cuales variaban entre 150 [mA] hasta
1100 [mA] según la velocidad de movimiento de la carga y su torque [50].
En la ecuación 2.6 se puede apreciar que el consumo promedio de los 6
servomotores fue de 4.88 [A] aplicando un factor de seguridad (Fs ) de 1.3,
por lo que se utilizó una fuente de poder con su inmediato superior siendo
esta de 5 [V] con 5 [A].

I¯ = (150 + 1100)/2 = 625[mA]

Itotal = n × I¯ × Fs
(2.6)
Itotal = 6 × 625 × 1.3

Itotal = 4875[mA] ≈ 4.88[A]

2.7.2 Rest API

Se desarrolló una Rest API que permitı́a comunicar el sistema de control


alojado en el PC con el ESP32, el cual controlaba los servomotores de la
MRA. Este medio de comunicación trabaja de forma local con la IP de la
red WIFI por lo que no hubo muchos problemas de latencia. El programa
desarrollado se encuentra en el Apéndice E código E.4.2.

37
CAPÍTULO 3
3. RESULTADOS Y ANÁLISIS

En el presente capı́tulo se presenta: los resultados obtenidos de cada modelo de


clasificación ML y su elección, el diseño final del sistema de control y los resultados
de la implementación. También se muestra el diagrama eléctrico y el diseño 3D con
las modificaciones realizadas en la MRA.

3.1 Adquisición y procesamiento de datos.

De los sujetos de la Tabla 2.5 se obtuvieron un total de 920 repeticiones entre


los 4 gestos escogidos y un total de 4736 caracterı́sticas propias de los datos,
de los cuales se seleccionaron las 20 mejores que se muestran en la Figura
2.17 para el entrenamiento y validación del modelo de clasificación.

3.2 Diseño de sistema de control

3.2.1 Selección de modelo de clasificación

En la Tabla 3.1 se aprecian los resultados del entrenamiento y validación


con distintos modelos de clasificación ML. En ella se puede apreciar que
los modelos como el decision tree, polynomial, random forest y MLPC
tuvieron una exactitud mayor al 85 % en el entrenamiento e incluso
algunos de los anteriores mencionados lograron alcanzar el 100 %. Sin
embargo, la exactitud en la validación bajó considerablemente en el
decision tree y en el SGD. Solo el modelo MLPC y polynomial tuvieron
una exactitud de evaluación mayor al 80 %, siendo el ganador el modelo
MLPC con un 84.78 %. Las funciones desarrolladas pueden encontrarse
en el Apéndice E código E.3.1.
Tabla 3.1 Resultado de entrenamiento y validación de modelos de clasificación

Exactitud de Exactitud de
Modelo de clasificación
entrenamiento validación

Decision tree 100.00 % 60.33 %

Polynomial 86.53 % 80.98 %

KNN 75.51 % 72.28 %

Random forest 100.00 % 73.37 %

MLPC 91.16 % 84.78 %

Gaussian process 72.38 % 71.74 %

Ridge 72.65 % 70.11 %

SGD 72.65 % 57.07 %

El mejor resultado entre los modelos de clasificación fue el MLPC pero no


necesariamente el modelo bajo esos parámetros era el óptimo. Por lo que
se realizó una evaluación cruzada aplicando el método 5-fold con
distintos parámetros del modelo MLPC, para lo cual se tuvo la Tabla 3.2.
El resultado obtenido fue el modelo MLPC bajo los siguientes
parámetros: MLPClassifier(activation = ’relu’, alpha= 0.0001,
hidden layer sizes = (250, 150, 50), max iter=400, solver =’adam’,
random state=1), el cual fue el mismo con el que se inició el análisis. Se
determinó que desde el inicio el modelo establecido presentaba los
mejores parámetros para obtener una alta exactitud en el modelo MLPC.

Tabla 3.2 Parámetros de evaluación cruzada.

Parámetros Datos

alpha [0.0001]

hidden layer sizes [(250, 150, 50), (250, 500, 60), (1200, 400, 50),

(600,250, 60), (400,250, 50)]

solver [lbfgs, Adam ]

activation [relu,tanh]

max iter [400]

39
Para los resultados de la Figura 3.1 se aplicó aleatoriedad a los datos y
se escogı́a cada vez el 20 % de los datos para validación y el resto para
entrenamiento. De esta forma se podı́a determinar la evolución del
modelo conforme se entrenaba con datos virtualmente nuevos. De ello,
se puede apreciar que el rendimiento del modelo llegó alcanzar casi el
80 % con una varianza semi constante de aproximadamente de 2.5 %. El
modelo obtenido es escalable, pero debido a la variabilidad de los sujetos
y el reuso de los electrodos al adquirir los datos, se requerı́a de un
entrenamiento cada vez que se colocan los electrodos.

Posteriormente, se realizó una evaluación cruzada con 5-fold, en el que


se determinó el comportamiento de la exactitud frente a datos de
entrenamiento y validación virtualmente distintos. Los resultados
obtenidos se precian en la Tabla 3.3, en la cual se observó que el
promedio obtenido para el valor F1 fue de 0.7961. Este resultado tenı́a un
buen promedio ponderado de precisión y recuperación del modelo siendo
cercano a 0.8. Por otro lado, debido al tipo de entrenamiento y validación
ejecutado la exactitud promedio obtenida fue un poco inferior comparada
con la obtenida en los resultados de la Tabla 3.1.

Tabla 3.3 Resultados de evaluación cruzada con modelo seleccionado.

K-fold valor F1 Exactitud

1-fold 78.48 % 75.67 %

2-fold 74.42 % 76.74 %

3-fold 80.55 % 75.67 %

4-fold 80.99 % 81.08 %

5-fold 83.59 % 83.33 %

Promedio 0.7961 % 0.7850 %

Del reporte de la Tabla 3.4 y de su respectiva verificación con la Figura


3.2, se determinó que el modelo poseı́a un buen recall y precisión al
momento de clasificar las señales de entrada. La diagonal de la Figura
3.2 indica las estimaciones correctamente predichas (verdaderos

40
Figura 3.1 Curvas de entrenamiento y validación, escalabilidad y rendimiento del modelo
seleccionado.

41
positivos) y los valores de alrededor indican aquellas estimaciones que no
se lograron predecir correctamente (falsos positivos). Tomando en cuenta
ello, se logró observar con más claridad que el gesto 1 fue el que tuvo
más problemas al confundirse 7 veces con el gesto 3, por lo que un
entrenamiento con más repeticiones del gesto 1 y del gesto 4 ( el cual
también presenta problemas en comparación con los demás) podrı́an
mejorar la exactitud del modelo.

Tabla 3.4 Reporte del modelo MLPC seleccionado.

Class Precision Recall F1-score Support

1 0.86 0.74 0.79 42

2 0.93 0.93 0.93 44

3 0.72 0.84 0.77 37

4 0.87 0.87 0.87 61

Accuracy 0.85 184

macro avg 0.85 0.84 0.84 184

weighted avg 0.85 0.85 0.85 184

Figura 3.2 Matriz de confusión.

Finalmente, se realizó una curva ROC (Receiver Operating Characteristic)


por cada clase. En ella se pudo apreciar que las 4 clases poseen un alta

42
área bajo la curva por lo que se procedió analizar una buena relación entre
sensibilidad y especificidad. En la Figura 3.3 se determinó que en la zona
encerrada en rojo, las curvas son un poco más estables, su sensibilidad
no es menor a 0.8 y la especificidad es cercana a 0.1 siendo esta la zona
mas óptima del modelo. Un mayor grado de sensibilidad podrı́a llevar a una
mayor falencia debido a que se incrementa considerablemente los falsos
positivos.

Figura 3.3 Curva ROC.

3.2.2 Sistema de control

Una vez entrenado el modelo de clasificación escogido, dicho modelo fue


incorporado en el sistema de control. El sistema fue de lazo abierto debido
a que la señal de salida no afectaba la funcionalidad del sistema, véase
Figura 3.4. Este sistema de control fue alojado en la PC, la cual adquirı́a la
señal mioeléctrica de 6 canales del CB mediante comunicación serial con
el dispositivo USB. Debido a ello el sistema es de tipo MISO porque emite
una sola salida de control y recibe 6 conjuntos de varios datos de entrada.

43
Figura 3.4 Diagrama de bloques del sistema de control del clasificador.
44

Figura 3.5 Diagrama de sistema de control de posición de un servomotor [12].


Por otro lado, para el control de los servomotores por parte del ESP32 se
estableció un control proporcional de tipo SISO (Single Input Single
Output) mediante el manejo de las señales PWM (Pulse Width
Modulation), véase Figura 3.6. En [51] se puede encontrar un análisis
mas detallado del sistema de control por PWM basado en la Figura 3.5.
Dicho control establecı́a la posición para cada servomotor hacia el
controlador PCA9685, el cual tenı́a incorporado en su lógica de control un
controlador de posición (semejante al de la Figura 2.21). Por lo que se
utilizó dichas funciones para pre-establecer los movimientos que cada
dedo debe realizar para imitar el gesto. En el Apéndice E código E.4.1 se
puede encontrar el programa para el ESP32, el cual también efectuaba la
comunicación con el servidor alojado en el PC.

Figura 3.6 Diagrama de bloques del sistema de control de los servomotores.

3.3 Implementación

En esta sección se presenta los resultados obtenidos durante las pruebas


realizadas con el modelo de clasificación escogido, ası́ como también las
distintas modificaciones en el diseño de la MRA y sus diagramas de
conexión y desarrollo de la Rest API.

3.3.1 Sistema eléctrico

Tomando en cuenta las dimensiones que deben tener las fuentes de la


parte lógica y de control, se estableció la respectiva conexión entre los
elementos necesarios para el funcionamiento de la MRA, los cuales se

45
aprecian en la Figura 3.7.

Figura 3.7 Diagrama de conexión del sistema eléctrico.

3.3.2 Diseño final

Entre los elementos con mayor tamaño se tenı́a la fuente de control de los
servomotores, por lo que se rediseñó la base de la MRA para incorporar
todas los elementos eléctricos en su interior. En la Figura 3.8 se puede
apreciar las 3 secciones que complementan la base de la MRA. En el
Apéndice K se encuentran las respectivos planos de la base.

46
(a) Segmentos de la MRA

(b) Diseño armado de la MRA.

Figura 3.8 Diseño final de la MRA.

47
3.3.3 Resultados finales de implementación.

Para la sección de prueba se utilizó la base pequeña para comodidad de


las fotos y evaluación de los resultados. En la Figura 3.9 se puede apreciar
los distintos movimientos que fueron imitados por la MRA.

(a) Gesto 1 (b) Gesto 1 en MRA

(c) Gesto 2 (d) Gesto 2 en MRA

(e) Gesto 3 (f) Gesto 3 en MRA

Figura 3.9 Resultados de predicción de implementación del diseño. Parte 1.

48
(a) Gesto 4 (b) Gesto 4 en MRA

Figura 3.10 Resultados de predicción de implementación del diseño. Parte 2.

En la Figura 3.11 se puede apreciar la secuencia de operación de la


solución. El tiempo de reacción, desde que se realiza el gesto en la mano
hasta que inicia el movimiento de los dedos en la MRA, es de máximo 2
segundos. En este tiempo interviene las variables del periodo de lectura
del ESP32 en la Rest API y el tiempo en que el sistema de control
determina el tipo de movimiento realizado.

En la prueba de implementación se realizó 10 gestos entre los 4


establecidos de forma aleatoria, de los cuales 7 fueron correctamente
determinados por el sistema de clasificación del modelo seleccionado.
Sin embargo, previamente se realizó un entrenamiento del modelo con
una sesión de 20 repeticiones por gesto debido a que se determinó que
los datos adquiridos también variaban dependiendo del estado del
electrodo. Por lo general, los electrodos solo soportaban ser extraı́dos
hasta un máximo de 3 a 4 veces; y fue un factor clave a tomar en cuenta
para no afectar en gravedad la exactitud del modelo.

49
Figura 3.11 Diagrama de Flujo de funcionamiento del diseño de implementación.

3.4 Análisis de Costos

En la Tabla 3.5, se detalla los rubros para el diseño mecánico, eléctrico y de


control; ası́ como también el costo de la mano de obra para este proyecto.

Como se determinó que el sistema utiliza únicamente 4 de los 6 canales que


inicialmente se estableció, se cotizó por uno de 4 canales como el Ganglion
Board [52]. Este dispositivo trabaja de manera similar y su costo es menor.

50
Tabla 3.5 Cotización de rubros.

Tipo de sistema Descripción Cantidad unidad Precio Unit (USD) Total (USD)

Impresión 3D 1 u $150.00 $150.00


Mecánico
Servomotor 6 u $4.25 $25.50

Ganglio Board 1 u $375.00 $375.00

Paquete de electrodos 1 u $15.00 $15.00

USB Ganglio Board 1 u $15.00 $15.00

Cables de electrodos 1 u $45.00 $45.00

Eléctrico Baterı́as recargables 4 u $1.50 $6.00

y de Fuentes de poder 5V 5A 1 u $10.00 $10.00


control Módulo PCA9685 1 u $8.00 $8.00

ESP32 1 u $12.00 $12.00

Cargador 12V 1 u $5.00 $5.00

Fuente 5V 1 u $3.50 $3.50

Computadora 1 u $400.00 $400.00

Diseño mano de obra 2 u $200.00 $400.00


Ingenierı́a
Viáticos 1 u $100.00 $100.00

Total $1570.00

A nivel nacional los precios por equipos médicos son muy elevados debido a
que en su mayorı́a son exportados y cuyos impuestos son altos. Por lo tanto,
la opción que se presentó es más económica en comparación con otros
equipos similares tanto nacionales como internacionales, como se puede
apreciar en la Tabla 3.6. La MRA desarrollada es mucho mas económica,
dándonos la ventaja de producirla localmente y pueda ser utilizada como un
recurso didáctico de aprendizaje en las distintas entidades de educación
superior o centros de investigación.

51
Tabla 3.6 Comparativo entre prótesis de mano.

Marca / Academia Foto Sistema Didáctico Implementación AI Precio

Proteus No Si $3.500,00

ESPOCH No No $3.000,00

Open Bionics No Si $5.000,00

Universidad Salesiana No No $15.000,00

Diseño Propuesto Si Si $1.570,00

52
CAPÍTULO 4
4. CONCLUSIONES Y RECOMENDACIONES

En este trabajo se presenta el diseño e implementación de una mano robótica


antropomórfica con seis grados de libertad, la cual identifica cuatro movimientos
distintos mediante la captura de señales mioeléctricas de los músculos del
antebrazo. Para ello, se utilizó 6 canales de la placa Cyton Board para la
adquisición de datos. En el análisis realizado se trabajó con un total de 10
personas, de las cuales 6 fueron de mujeres y 4 de hombres. Estas señales fueron
filtradas y se les determinó las caracterı́sticas más notables para entrenar un
modelo de clasificación ML. El modelo con los mejores resultados fue escogido
para incorporarlo en el sistema de control que está alojado en un PC. La señal de
control es emitida a un ESP32 mediante el uso de una REST API. El ESP32 es el
encargado de realizar el control de los servomotores para recrear el movimiento
del gesto de la mano.

Como resultado de la comparación de 8 tipos de modelos de clasificación ML, se


observó que 4 de ellos tuvieron un resultado mayor al 85 % en la etapa de
entrenamiento. Dos de ellos presentaban un resultado del 100 %, los cuales fueron
inmediatamente descartados debido a que presentaban una baja exactitud en la
etapa de validación siendo un indicativo de que los modelos presentaban
problemas de overfitting (modelo sobreajustado, no se adapta a nuevas muestras).
Por lo que, utilizando el modelo MLPC se muestra una mejora en los resultados de
clasificación, la cual tiene una precisión del 84,78 %. Su curva de aprendizaje
(Figura 3.1) permitı́a evidenciar una buena adaptabilidad en la recuperación del
modelo ante la variabilidad a los datos de los sujetos. Con el modelo seleccionado
se obtuvo un tiempo de reacción de 2 segundos para la MRA. Además analizando
su reporte en la Tabla 3.4, se evidenció que el segundo movimiento tenı́a una
precisión del 93 %, siendo la más alta en comparación con los movimientos
restantes. Por otro lado, el tercer movimiento presentó el valor de precisión mas
bajo equivalente al 72 %. Dichos resultados, permitı́an evidenciar una mayor
complejidad de determinar el gesto 3 para el modelo seleccionado. Estos valores
también los podemos comprobar cuando se realiza la curva ROC en la Figura 3.3,
en la que se aprecian las cuatro clases (o gestos). La curva mas cercana a la
unidad es la curva del segundo gesto, con una alta tasa de verdaderos positivos.
En la gráfica se seleccionó la zona donde la sensibilidad de las curvas no es
menor a 0.8 y la especificidad es cercana a 0.1, la cual indicaba el equilibrio mas
óptimo para el modelo. Cabe mencionar que un mayor grado de sensibilidad
podrı́a llevar a una mayor falencia debido al incremento considerable de los falsos
negativos.

Proyecto similares se han desarrollado, pero aplicando distintas metodologı́as y


modelos de clasificación. Siendo como base de la metodologı́a la interpretación de
datos mioelectricos para el accionamiento de manos robóticas antropomórficas, se
tiene la aplicación de una red neuronal CNN obteniendo una variación del 60 % a
un 80 % aproximadamente entre distintos sujetos [39]. En su investigación
utilizaron las señales mioeléctricas de la parte superior tanto del brazo como del
cuerpo sin considerar los músculos de la muñeca, que a diferencia del presente
trabajo se utilizó la mayor parte de los músculos del antebrazo que contienen los
músculos que inciden directamente en el movimiento de los dedos de la mano. Por
otro lado, en [7] se utilizó un brazalete EMG que se adaptaba al tamaño del
antebrazo del usuario. Dicho brazalete mantenı́a la ubicación de los electrodos,
pero ciertos canales presentaban dificultad de lectura debido a la disposición de
los músculos que a diferencia de la metodologı́a aplicada en el presente proyecto,
se trató de localizar los músculos mas potenciales al movimiento de la mano. Sin
embargo el resultado obtenido del modelo fue muy similar, siendo la exactitud
en [7] del 84.7 % y en el modelo MLPC del 84.78 %. Por otro lado, en [8] se
implementó una red neuronal recurrente mezclando un modelo
logarı́tmico-linearizado gaussiano (R-LLGMN) obteniendo una precisión del 90 %
entre sus pruebas realizadas. Su resultado fue mayor debido a que es un modelo
mucho más robusto permitiendo un mejor aprendizaje de los datos ante cualquier
variación de los sujetos.

54
4.1 Conclusiones

En la adquisición de datos mioeléctricos de 6 canales de los participantes


se descartaron aquellas sesiones en las que el sujeto no realizó el
movimiento con la suficiente fuerza, se equivocaba, o por la medición de
los electrodos. Los electrodos, según su tiempo de uso, presentan una alta
resistencia generando un detenimiento o baja amplitud de la señal
adquirida. Las sesiones escogidas fueron filtradas para luego extraer 20
caracterı́sticas estadı́sticas propias seleccionadas para el modelo de
clasificación. El escoger otras caracterı́sticas podrı́an afectar la exactitud
del modelo.

El modelo de clasificación implementado en el sistema de control tuvo una


exactitud del 84.78 % y los datos pertenecı́an únicamente a 4 canales de
la placa debido a las caracterı́sticas seleccionadas. Por lo tanto, para el
reconocimiento de los 4 gesto seleccionados, solo es necesario el registro
de los canales ch2, ch3, ch4 y ch5, según el orden establecido en la Figura
2.8.

Durante la prueba de implementación se tuvo un error del 30 % en los


gestos aleatorios realizados, reduciendo la exactitud inicial. Esto fue
debido a la variabilidad de los sujetos, el estado de los electrodos, y la
dificultad de determinar un gesto. El gesto 3 fue el que presentó una mayor
dificultad, véase la Figura 3.4, debido a fue un movimiento que se realiza
con menor intensidad y se flexionaba parcialmente los dedos. Por lo tanto,
el clasificador va a presentar un mejor resultado para cualquier gesto cuyo
movimiento de los dedos presente una mayor actividad muscular, caso
contrario se va a requerir una mayor cantidad de datos para el gesto.

EL modelo MLPC seleccionado tuvo un buen desempeño en la


implementación, pero el modelo escogido no es definitivo. Por lo tanto, la
aplicación del modelo con otros gestos puede presentar ciertas falencias
que puede llegar a requerir de un mayor dataset al obtenido para el
entrenamiento de nuevos gestos de la mano. De igual forma, la
arquitectura desarrollada para la clasificación de los datos EMG recogidos

55
a 250Hz es compatible con el equipo Cyton Board y sus semejantes como
el Ganglion Board que pertenecen al mismo proveedor.

El tiempo de reacción de la MRA fue de 2 segundos el cual era afectado


por el tiempo de procesamiento y de clasificación de los datos, ası́ como
el tiempo de muestreo del consumo de la ESP32 en el servidor. Una de
las ventajas de tener un tiempo de respuesta alto en nuestro proyecto, es
que permitirá al estudiante comprender la complejidad del procesamiento
interno del proyecto, también la necesidad de recursos computacionales
para lograr un mecanismo robusto y con un bajo tiempo de respuesta.

El diseño desarrollado cumple con los objetivos 3 y 4 de desarrollo


sostenible debido a que es un dispositivo mecatrónico didáctico que
permitirá desarrollar nuevos conocimientos y habilidades de los
estudiantes de educación superior.

Aunque los equipos biomédicos tiene un alto valor, el precio final del
proyecto fue de $1 570.00 dolares, siendo un 51 % mas económico que
otros proyectos de similares caracterı́sticas. El precio fue tomando en
consideración el cambio de la placa de adquisición de datos a uno de 4
canales,lo cual representa un precio asequible como equipo de laboratorio
comparado con equipos comerciales de similares caracterı́sticas.

4.2 Recomendaciones

Para la selección de las personas que participaron en el presente trabajo,


se limitó a aquellas personas que estén en un rango de edad entre los 18
a 50 años y que no posean un alto nivel de grasa corporal. Esto es debido
a que la grasa en el tejido puede opacar la señal adquirida; y el rango de
edad escogido presentaba una mayor actividad eléctrica en los músculos.
De igual forma, se recomienda que durante las sesiones, los participantes
realicen los movimientos con normalidad sin ejercer una alta ni baja fuerza,
de forma que se pueda obtener los movimientos más naturales posibles.

Para una mejor medición de las señales musculares se recomienda


primero: limpiar toda el área del brazo con alcohol para la eliminación de
grasa y gérmenes; y usar un gel para electrodos, el cual mejora la

56
conductividad en la medición mioeléctrica. También se recomienda utilizar
esparadrapos sobre los electrodos para establecer un mejor contacto con
la piel. Sin embargo, estos no deben hacer una alta presión sobre los
electrodos debido a que afectarı́a en la amplitud de la señal adquirida.

Para brindarle un mayor nivel de antropomorfismo a la MRA, se recomienda


elaborar un guante de latex cuyo diseño sea lo mas parecido a una mano
humana. Este guante debe ser delgado para no incrementar la resistencia
en el movimiento de los dedos de la MRA, lo que conllevarı́a a un consumo
mayor de corriente o al detenimiento de la MRA.

Para tener una alta exactitud del modelo durante la implementación, se


recomienda realizar al menos una sesión de 20 repeticiones por gesto
para volver a entrenar el modelo de clasificación. Sobretodo, si es un
sujeto nuevo quien probarı́a el dispositivo mecatrónico didáctico, debe ser
una cantidad mayor a 20 repeticiones por gesto.

57
BIBLIOGRAFÍA
[1] “Encuesta nacional de actividades de ciencia, tecnologı́a e innovación-acti —.”

[2] “Indicadores – ricyt.”

[3] D. Hwang, E. J. Barron, A. B. M. T. Haque, and M. D. Bartlett, “Shape morphing


mechanical metamaterials through reversible plasticity,” Science Robotics, vol. 7, 2
2022.

[4] J. V. Pinzón, R. P. Mayorga, and G. C. Hurtado, “Brazo robótico controlado por


electromiografı́a,” Scientia et technica, vol. 1, no. 52, pp. 165–173, 2012.

[5] L. J. Hargrove, K. Englehart, and B. Hudgins, “A comparison of surface and


intramuscular myoelectric signal classification,” IEEE Transactions on Biomedical
Engineering, vol. 54, no. 5, pp. 847–853, 2007.

[6] J. Correa-Figueroa, E. Morales-Sánchez, J. Huerta-Ruelas, J. González-Barbosa,


and C. Cárdenas-Pérez, “Sistema de adquisición de señales semg para la detección
de fatiga muscular,” Revista mexicana de ingenierı́a biomédica, vol. 37, no. 1, pp. 17–
27, 2016.

[7] H. Wang, J. Qian, and Z. Zhang, “Research on mechanism design and gesture
recognition application of high biomimetic anthropomorphic robotic hand,” in 2020
IEEE International Conference on Information Technology,Big Data and Artificial
Intelligence (ICIBA), vol. 1, pp. 343–347, 2020.

[8] A. Furui, S. Eto, K. Nakagaki, K. Shimada, G. Nakamura, A. Masuda, T. Chin,


and T. Tsuji, “A myoelectric prosthetic hand with muscle synergy–based motion
determination and impedance model–based biomimetic control,” Science Robotics,
vol. 4, 6 2019.

[9] “Cyton biosensing board (8-channels) – openbci online store.”

[10] J. Damián, “Tutorial módulo controlador de servos pca9685 con arduino -


electrogeek,” 5 2020.
[11] SoloArduino, “Mb102 - alimentación para breadboards,” 2016.

[12] carakenio73, “Sistema de control de posición – servomotores.,” 2018.

[13] C. S. Johnson, A Brief History of Bionic Sonars, pp. 769–771. Boston, MA: Springer
US, 1988.

[14] J. M. D. González, P. R. Murillo, I. F. Luna, and A. J. Mendoza, “Robótica y prótesis


inteligentes,” Universidad Nacional Autónoma de México, pp. 1–15, 2005.

[15] B. G. Andrews, E. E. Harris, H. Hederick, K. P. Robinson, and M. V. et al,


Amputaciones y protesis, vol. 1. 1 ed., 1985.

[16] I. Vujaklija, D. Farina, and O. C. Aszmann, “New developments in prosthetic arm


systems,” Orthopedic Research and Reviews, vol. 8, pp. 31–39, 7 2016.

[17] P. J. S. Guamán, M. P. G. Sánchez, and K. P. S. Guamán, “La educación superior en


el ecuador vs las nuevas tecnologı́as,” RECIMUNDO, vol. 1, pp. 484–496, 12 2017.

[18] L. Schwartz and C. Guaipatı́n, “Ecuador: Análisis del sistema nacional de


innovación: Hacia la consolidación de una cultura innovadora,” Monografı́a del BID
(Instituciones para el Desarrollo. División de Competitividad e Innovación). IDB-MG-
223, 2014.

[19] R. R. Serrezuela, J. L. A. Trujillo, D. R. Delgado, V. K. O. Benavides, R. S. Zamora,


and E. M. Reyes, “Diseño e implementación de una prótesis de mano robótica
antropomórfica subactuada,” in Memorias de Congresos UTP, pp. 165–172, 2018.

[20] Y. O. Rodrı́guez, A. O. Prado, L. M. Acosta, and R. G. Carbonell, “Modelo cad de


mano humana de 28 grados de libertad para el estudio cinemático,” pp. 1–9, 9 2019.

[21] T. Iberall, G. Sukhatme, D. Beattie, and G. A. Bekey, “Control philosophy and


simulation of a robotic hand as a model for prosthetic hands,” pp. 824–831, 1993.

[22] M. Vukobratović, V. Ćirić, D. Hristić, and J. Stepanenko, “Contribution to the study of


anthropomorphic robots,” IFAC Proceedings Volumes, vol. 5, pp. 88–96, 6 1972.

[23] L. Biagiotti, F. Lotti, C. Melchiorri, and G. Vassura, “How far is the human hand? a
review on anthropomorphic robotic end-effectors,” 2002.
[24] E. Martinez-Garcia, “Diseño y modelado de mano robótica antropomórfica de
músculos artificiales,” Instituto de Ingenierı́a y Tecnologı́a, 2020.

[25] Z. Li and S. Sastry, “Issues in dextrous robot hands,” Dextrous Robot Hands, pp. 154–
186, 1990.

[26] A. M. Okamura, N. Smaby, and M. R. Cutkosky, “Overview of dexterous


manipulation,” Proceedings - IEEE International Conference on Robotics and
Automation, vol. 1, pp. 255–262, 4 2000.

[27] G. A. BETANCOURT, E. G. Suárez, and J. F. Franco, “Reconocimiento de patrones


de movimiento a partir de señales electromiográficas,” Scientia et technica, vol. 10,
no. 26, pp. 53–58, 2004.

[28] S. Ferguson and G. R. Dunlop, “Grasp recognition from myoelectric signals,” in


Proceedings of the Australasian Conference on Robotics and Automation, Auckland,
New Zealand, vol. 1, 2002.

[29] C. J. De Luca, “Surface electromyography: Detection and recording,” DelSys


Incorporated, vol. 10, no. 2, pp. 1–10, 2002.

[30] A. J. Young, L. J. Hargrove, and T. A. Kuiken, “The effects of electrode size and
orientation on the sensitivity of myoelectric pattern recognition systems to electrode
shift,” IEEE Transactions on Biomedical Engineering, vol. 58, no. 9, pp. 2537–2544,
2011.

[31] B. Hudgins, P. Parker, and R. N. Scott, “A new strategy for multifunction myoelectric
control,” IEEE Transactions on Biomedical Engineering, vol. 40, pp. 82–94, 1993.

[32] H. A. Romo, J. C. Realpe, and P. E. Jojoa, “Análisis de señales emg superficiales


y su aplicación en control de prótesis de mano,” Revista avances en sistemas e
informática, vol. 4, no. 1, pp. 127–136, 2007.

[33] C. A. Quinayas, M. Galindo, J. Avendaño, M. Lucy, et al., “Identificación de la flexión


y extensión de una mano a partir de señales emg,” I+ T+ C-Investigación, Tecnologı́a
y Ciencia, vol. 1, no. 4, pp. 43–46, 2010.
[34] G. Ellis, “Filters in control systems,” Control System Design Guide, pp. 165–183, 1
2012.

[35] J. T. Park, H. Hwang, J.-s. Yun, and I.-y. Moon, “Study of html5 websocket for
a multimedia communication,” International Journal of Multimedia & Ubiquitous
Engineering, vol. 9, no. 7, pp. 61–72, 2014.

[36] S. Khrueangsakun, S. Nuratch, and P. Boonpramuk, “Design and development of


cyber physical system for real-time web-based visualization and control of robot arm,”
in 2020 5th International Conference on Control and Robotics Engineering (ICCRE),
pp. 11–14, 2020.

[37] B. Romero Rojas, “Una introducción a los modelos de machine learning,” B.S. thesis,
2020.

[38] E. M. Rojas, “Machine learning: análisis de lenguajes de programación y


herramientas para desarrollo,” Revista Ibérica de Sistemas e Tecnologias de
Informação, no. E28, pp. 586–599, 2020.

[39] K. T. Kim, S. Park, T. H. Lim, and S. J. Lee, “Upper-limb electromyogram classification


of reaching-to-grasping tasks based on convolutional neural networks for control of
a prosthetic hand,” Frontiers in Neuroscience, vol. 15, 10 2021.

[40] “Cyton specs — openbci documentation.”

[41] “Compatible software — openbci documentation.”

[42] A. A. Suzen, B. Duman, and B. Sen, “Benchmark analysis of jetson tx2, jetson
nano and raspberry pi using deep-cnn,” HORA 2020 - 2nd International Congress on
Human-Computer Interaction, Optimization and Robotic Applications, Proceedings,
6 2020.

[43] C. R. Romeva, “Métodos de evaluación de soluciones,” 4 2002.

[44] 3D4MEDICAL, “Complete anatomy,” 2016.

[45] J. Segen and S. Kumar, “Human-computer interaction using gesture recognition


and 3d hand tracking,” IEEE International Conference on Image Processing, vol. 3,
pp. 188–192, 1998.
[46] Sklearn, “Minmaxscaler.”

[47] D. T. Mewett, H. Nazeran, and K. J. Reynolds, “Removing power line noise from
recorded emg,” Annual Reports of the Research Reactor Institute, Kyoto University,
vol. 3, pp. 2190–2193, 2001.

[48] “tsfresh.feature extraction package — tsfresh documentation,”

[49] J. D. Nobel, H. Wang, and T. Baeck, “Explorative data analysis of time series based
algorithm features of cma-es variants,” GECCO 2021 - Proceedings of the 2021
Genetic and Evolutionary Computation Conference, pp. 510–518, 6 2021.

[50] DronProfesional, “Tutorial teórico práctico con servos y arduino.,” 2019.

[51] M. Á. Castillo-Martı́nez, B. E. Carvajal-Gámez, and F. J. G. Funes, “Efectos en


la resolución de servomotores con interfaz pwm por la generación de señales en
microcontroladores.,” Res. Comput. Sci., vol. 147, no. 7, pp. 89–98, 2018.

[52] O. BCI, “Ganglion board..”

[53] “Cyton data format — openbci documentation.”

[54] W. J. Alvarado Dı́az, “Implementación de una interfaz cerebro-máquina para el


control de una silla de ruedas,” 2019.

[55] P. P. Pesántez Pacheco and M. J. Romero Palacios, “Sistema de análisis de actividad


cerebral eeg durante la ejecución de tareas cognitivas,” B.S. thesis, Universidad del
Azuay, 2021.
APÉNDICES
APÉNDICE A
Datos técnicos de la placa Cyton Board

Entre las especificaciones técnicas mas relevantes de la placa CB, se presentan las
siguientes:

Es compartible con electrodos activos y pasivos.

Convertidor ADC de 24 Bits especializado para mediciones bioeléctricas con una tasa
de muestreo de 250 Hz en cada canal. Procedente de Texas Instruments.

Ganancia programable: 1, 2, 4, 6, 8, 12, 24

Voltaje de operación: 3.3V

Voltaje de operación analógica; +/− 2.5V

Voltaje de entrada: 3.3-12V

5 pines GPIO.

RFduino de radio Bluetooth de bajo consumo.

Acelerómetro: LIS3DH

Ranura SD card

Su sistema incorporado de Bluetooth le permite comunicarse de forma inalámbrica con


cualquier dispositivo móvil, tableta o PC. Sin embargo, OpenBCI recomienda utilizar el
adaptador USB que es parte del conjunto de herramientas que proporciona la marca para
poder alcanzar la alta tasa de muestreo que brinda la placa de adquisición de datos [9].
APÉNDICE B
RFDuino USB dongle

El protocolo de comunicación serial que mantiene el adaptador USB esta conformado


por una cabecera, del conjunto de datos de los 8 canales ADC, el resultado medido por
los 3 ejes del acelerómetro, y finaliza con el pié del protocolo o byte de parada [53]. Cada
sección anteriormente nombrada está conformada por la siguiente estructura:

Cabecera

• Byte 1: 0xA0

• Byte 1: Número de muestra.

Datos EEG/ECG/EMG

• Bytes 3-5: Lectura del canal 1

• Bytes 6-8: Lectura del canal 2

• Bytes 9-11: Lectura del canal 3

• Bytes 12-14: Lectura del canal 4

• Bytes 15-17: Lectura del canal 5

• Bytes 18-20: Lectura del canal 6

• Bytes 21-23: Lectura del canal 7

• Bytes 24-26: Lectura del canal 8

Datos Auxiliares

• Bytes 27-32: 6 bytes de datos que se definen y analizan según el byte de parada.

Byte de parada

• Byte 33: 0xCX donde X va de 0-F en hexadecimal.


Las distintas configuraciones que pueden optar los 6 bytes auxiliares dependiendo del
bit de parada, se pueden apreciar en la Figura B.1. Por lo general, se utiliza los bits
de parada 0xC3 y 0xC5 para obtener las marcas de tiempo de la muestra realizada las
cuales permiten realizar otros tipos de análisis. Con el byte de parada 0xC0 se otorga los
valores de los 3 ejes del acelerómetro a los bytes 27-32 [53].

Figura B.1 Configuraciones de los 6 bytes auxiliares según el byte de parada [53].
APÉNDICE C
Lab Streaming Layer (LSL).

La capa de transmisión de laboratorio o también conocido como Lab Streaming Layer


(LSL), es un sistema para la recopilación unificada de series de tiempo de medición,
como se muestra en la Figura C.1. Esta capa de transición facilita la comunicación vı́a
streaming, también consta de una biblioteca central [54].

Figura C.1 Esquema del funcionamiento de LSL [55].

El sistema de recopilación se lo realiza a través de un conjunto de bibliotecas, la


recopilación se realiza de distintos sistemas y nos facilita la vinculación de diferentes
experimentos de investigación. La interfaz de Lab Recorder permite guardar todos los
streams que están en la capa de transmisión como se muestra en la Figura C.1, el lab y
su formato de guardado es de tipo Extend Disk Format (xdf) [55].
Esta biblioteca tiene ya integrada herramientas como son las aplicadas a experimentos
de investigación, en los cuales se maneja la conexión de red, la sincronización y el
acceso en tiempo real, opcionalmente la recopilación centralizada. La biblioteca de
transporte principal es liblsl y sus interfaces de lenguaje son (C, C++, Python, Java,
MATLAB). La biblioteca es de uso personal y también de multiplataforma.
APÉNDICE D
Configuración de placa CB.

En el GUI se establecieron los siguientes widgets: time series para la visualización de la


señal en tiempo real, networking para activar la comunicación por LSL, y cualquier otro
opcional para la visualización de la señal como el FFT Plot que se aprecia en la Figura
D.1. De igual forma, se estableció el filtro notch 60 [Hz] y butterworth a 15-50 [Hz]. Cabe
recalcar que los datos transmitidos por LSL no contenı́an estos filtros, se les agregó solo
para visualización.

Figura D.1 Configuración de los widgets a utilizar en el Software OpenBCI GUI [9].

En la Figura D.2 se puede apreciar la configuración de los canales en el widget time


series. En ella se estableció una ganancia de x24 y se desactivo los demás puertos no
utilizados.
Figura D.2 Configuración de los canales en el widget Time Series del Software OpenBCI
GUI [9].
APÉNDICE E
En esta sección se presentará todos los códigos de programación utilizados para
procesamiento y control del presente proyecto.

E.1 Sistema de adquisición de datos


1 i m p o r t cv2
2 from cv2 i m p o r t data
3 from p y l s l i m p o r t S t r e a m I n l e t , r e s o l v e s t r e a m
4 i m p o r t pandas as pd
5 i m p o r t numpy as np
6 import time
7
8 c l a s s muestra :
9
10 def init ( s e l f , s u j e t o , i n l e t , Repeat ) :
11
12 s e l f . Duration = 2.0
13 s e l f . Repeat = Repeat
14 self . inlet = inlet
15
16 s e l f . data = { ’ t i m e ’ : [ ] , ’ ch1 ’ : [ ] , ’ ch2 ’ : [ ] , ’ ch3 ’ : [ ] , ’ ch4 ’ : [ ] , ’ ch5 ’ : [ ] , ’ ch6 ’ : [ ] , ’ tag ’ : [ ] }
17 self . interfaz ()
18
19 d f = pd . DataFrame ( s e l f . data )
20 d f . t o c s v ( s u j e t o + ’ . csv ’ , columns = [ ’ t i m e ’ , ’ ch1 ’ , ’ ch2 ’ , ’ ch3 ’ , ’ ch4 ’ , ’ ch5 ’ , ’ ch6 ’ , ’ t a g ’ ] , mode= ’ a ’ )
21
22
23 d e f testLSLSamplingRates ( s e l f , movimiento ) :
24 p r i n t ( ” T e s t i n g Sampling Rates f o r {} seconds ” . f o r m a t ( s e l f . D u r a t i o n ) )
25 s t a r t = time . time ( )
26
27 num samples = 0
28 self . i n l e t . flush ()
29
30 last time = 0
31 start time = 0
32
33 w h i l e t i m e . t i m e ( ) <= ( s t a r t + s e l f . D u r a t i o n ) :
34
35 # g e t a new sample ( you can a l s o o m i t t h e timestamp p a r t
36 # i f you ’ r e n o t i n t e r e s t e d i n i t )
37
38 sample , timestamp = s e l f . i n l e t . p u l l s a m p l e ( )
39
40 i f timestamp :
41
42 num samples += 1
43
44 s e l f . data [ ’ t i m e ’ ] . append ( timestamp )
45 s e l f . data [ ’ ch1 ’ ] . append ( sample [ 0 ] )
46 s e l f . data [ ’ ch2 ’ ] . append ( sample [ 1 ] )
47 s e l f . data [ ’ ch3 ’ ] . append ( sample [ 2 ] )
48 s e l f . data [ ’ ch4 ’ ] . append ( sample [ 3 ] )
49 s e l f . data [ ’ ch5 ’ ] . append ( sample [ 4 ] )
50 s e l f . data [ ’ ch6 ’ ] . append ( sample [ 5 ] )
51 s e l f . data [ ’ t a g ’ ] . append ( movimiento )
52
53 i f num samples == 1 :
54 s t a r t t i m e = timestamp
55 l a s t t i m e = timestamp
56
57 p r i n t ( f ” Numero de muestras {num samples} ” )
58 print ( last time , ” * * * * * * * * * ” , start time )
59 p r i n t ( f ” f r e c u e n c i a de muestreo = {num samples / ( l a s t t i m e − s t a r t t i m e ) } ” )
60
61
62 def i n t e r f a z ( s e l f ) :
63
64 p o r t a d a = cv2 . imread ( ” Imagenes / Portada . png ” )
65 cv2 . imshow ( ” Portada ” , p o r t a d a )
66 i f cv2 . waitKey ( 0 ) & 0xFF == ord ( ’S ’ ) :
67 cv2 . destroyAllWindows ( )
68
69 cant mov = [ 1 , 2 , 3 , 4 ]
70
71 f o r i i n range ( s e l f . Repeat ) : #forma a l e a t o r i a
72
73 f o r j i n cant mov :
74
75 if j == 1 :
76 mov1 = cv2 . imread ( ” Imagenes / 1 . j p g ” )
77 cv2 . imshow ( ” Movimiento 1 ” , mov1 )
78 i f cv2 . waitKey ( 0 ) & 0xFF == ord ( ’S ’ ) :
79 s e l f . testLSLSamplingRates ( 1 )
80 cv2 . destroyAllWindows ( )
81
82 if j == 2 :
83 mov2 = cv2 . imread ( ” Imagenes / 2 . j p g ” )
84 cv2 . imshow ( ” Movimiento 2 ” , mov2 )
85 i f cv2 . waitKey ( 0 ) & 0xFF == ord ( ’S ’ ) :
86 s e l f . testLSLSamplingRates ( 2 )
87 cv2 . destroyAllWindows ( )
88
89 if j == 3 :
90 mov3 = cv2 . imread ( ” Imagenes / 3 . j p g ” )
91 cv2 . imshow ( ” Movimiento 3 ” , mov3 )
92 i f cv2 . waitKey ( 0 ) & 0xFF == ord ( ’S ’ ) :
93 s e l f . testLSLSamplingRates ( 3 )
94 cv2 . destroyAllWindows ( )
95
96 if j == 4 :
97 mov4 = cv2 . imread ( ” Imagenes / 4 . j p g ” )
98 cv2 . imshow ( ” Movimiento 4 ” , mov4 )
99 i f cv2 . waitKey ( 0 ) & 0xFF == ord ( ’S ’ ) :
100 s e l f . testLSLSamplingRates ( 4 )
101 cv2 . destroyAllWindows ( )
102
103 np . random . s h u f f l e ( cant mov )
104 p r i n t ( ”ESTAMOS EN” , i )
105
106
107 d e f main ( ) :
108
109 Sujeto = input ( ’ Ingresar i d e n t i f i c a c i o n del sujeto : ’)
110
111 Repeat = i n t ( i n p u t ( ’ I n g r e s e e l numero de r e p e t i c i o n e s : ’))
112
113 p r i n t ( ” l o o k i n g f o r an EEG stream . . . ” )
114 streams = r e s o l v e s t r e a m ( ’ t y p e ’ , ’EEG ’ )
115 i n l e t = S t r e a m I n l e t ( streams [ 0 ] )
116 p r i n t ( ”EMG stream found ! ” )
117
118 muestra ( Sujeto , i n l e t , Repeat )
119
120 if name == ” main ”:
121 main ( )

Código E.1.1 Programa para adquisición de datos EMG.

E.2 Procesamiento de datos


1
2 #librerias
3 i m p o r t os
4 from t s f r e s h i m p o r t e x t r a c t f e a t u r e s
5 from t s f r e s h . f e a t u r e s e l e c t i o n . r e l e v a n c e i m p o r t c a l c u l a t e r e l e v a n c e t a b l e
6 from t s f r e s h . u t i l i t i e s . d a t a f r a m e f u n c t i o n s i m p o r t impute
7 i m p o r t pandas as pd
8 i m p o r t m a t p l o t l i b . p y p l o t as p l t
9 i m p o r t numpy as np
10 from b r a i n f l o w . board shim i m p o r t BoardShim , BrainFlowInputParams , LogLevels , BoardIds
11 from b r a i n f l o w . d a t a f i l t e r i m p o r t D a t a F i l t e r , F i l t e r T y p e s , AggOperations , NoiseTypes
12 from tqdm . auto i m p o r t tqdm , t r a n g e
13
14 from s k l e a r n . p r e p r o c e s s i n g i m p o r t MinMaxScaler
15 from s k l e a r n . u t i l s i m p o r t s h u f f l e
16 from s k l e a r n . t r e e i m p o r t D e c i s i o n T r e e C l a s s i f i e r
17 from s k l e a r n . m e t r i c s i m p o r t mean squared error

Código E.2.1 Libreı́as utilizadas.

1
2 d e f o n e F o r A l l t a g s ( DFrame , ID number ) :
3 d f = DFrame
4 d f = d f . f i l t e r ( [ ’ t i m e ’ , ’ ch1 ’ , ’ ch2 ’ , ’ ch3 ’ , ’ ch4 ’ , ’ ch5 ’ , ’ ch6 ’ , ’ t a g ’ ] )
5
6 tag1 = pd . DataFrame ( )
7 tag2 = pd . DataFrame ( )
8 tag3 = pd . DataFrame ( )
9 tag4 = pd . DataFrame ( )
10
11 groups = [ 0 ]
12
13 for i in t r a n g e ( d f . shape [ 0 ] − 1 , desc= ” E x t r a c t i n g groups ” ) :
14 i f ( d f . t i m e . i l o c [ i +1] − d f . t i m e . i l o c [ i ] ) > 1 . 0 :
15 groups . append ( i +1)
16
17 groups . append ( d f . shape [ 0 ] )
18
19 p r i n t ( f ’ E x i s t e n {l e n ( groups ) −1} r e p e t i c i o n e s ’ )
20
21 Secuencia = np . ones ( [ 4 , 1 ] )
22
23 f o r j i n t r a n g e ( l e n ( groups ) −1 , desc= ” C l u s t e r by t a g s ” ) :
24
25 d f a u x = d f [ groups [ j ] : groups [ j + 1 ] ]
26
27 d f a u x = impute ( d f a u x )
28
29 d f a u x = d f a u x . a s s i g n ( ID = ID number )
30 d f a u x [ ’ t i m e ’ ] = ( d f a u x . t i m e − d f a u x . t i m e . i l o c [ 0 ] ) * 1000
31 d f a u x . t i m e = d f a u x . t i m e . astype ( i n t )
32
33 channels = d f a u x . i l o c [ : , 1 : 7 ]
34 channels = channels − channels . mean ( )
35 s c a l e r = MinMaxScaler ( )
36 d f a u x . i l o c [ : , 1 : 7 ] = s c a l e r . f i t t r a n s f o r m ( channels )
37
38 i f d f a u x . t a g . i l o c [ j ] == 1 :
39 d f a u x = d f a u x . a s s i g n ( R e p e t i c i o n = i n t ( Secuencia [ 0 ] ) )
40 tag1 = tag1 . append ( df aux , i g n o r e i n d e x = True )
41 Secuencia [ 0 ] += 1
42
43 i f d f a u x . t a g . i l o c [ j ] == 2 :
44 d f a u x = d f a u x . a s s i g n ( R e p e t i c i o n = i n t ( Secuencia [ 1 ] ) )
45 tag2 = tag2 . append ( df aux , i g n o r e i n d e x = True )
46 Secuencia [ 1 ] += 1
47
48 i f d f a u x . t a g . i l o c [ j ] == 3 :
49 d f a u x = d f a u x . a s s i g n ( R e p e t i c i o n = i n t ( Secuencia [ 2 ] ) )
50 tag3 = tag3 . append ( df aux , i g n o r e i n d e x = True )
51 Secuencia [ 2 ] += 1
52
53 i f d f a u x . t a g . i l o c [ j ] == 4 :
54 df aux = d f a u x . a s s i g n ( R e p e t i c i o n = i n t ( Secuencia [ 3 ] ) )
55 tag4 = tag4 . append ( df aux , i g n o r e i n d e x = True )
56 Secuencia [ 3 ] += 1
57
58
59
60 # p r i n t ( Secuencia )
61 r e t u r n tag1 , tag2 , tag3 , tag4

Código E.2.2 Función para normalización y división de datos por tipo de movimiento.

1
2 d e f g r a f i c a s t a g ( DFrame , f i l t e r , name ) :
3 d f = DFrame
4
5 i d = d f . ID . i l o c [ 0 ]
6 mov = d f . t a g . i l o c [ 0 ]
7 rept = df . Repeticion . i l o c [ 0 ]
8
9 f i g , axs = p l t . s u b p l o t s ( 6 , f i g s i z e = ( 1 3 , 1 0 ) , sharex=True , sharey=True )
10 f i g . s u p t i t l e ( ’ G r a f i c a s canales vs tiempo d e l movimiento ’ + s t r ( mov ) )
11
12 l a b e l s = [ ’ ch1 ’ , ’ ch2 ’ , ’ ch3 ’ , ’ ch4 ’ , ’ ch5 ’ , ’ ch6 ’ ]
13
14 f o r i , ax i n enumerate ( axs ) :
15 axs [ i ] . p l o t ( d f [ ” t i m e ” ] , d f [ l a b e l s [ i ] ] , l a b e l = l a b e l s [ i ] )
16 axs [ i ] . legend ( l o c = ” upper r i g h t ” )
17
18 path = ’ Figuras mov / ’ + name
19 os . makedirs ( path , e x i s t o k =True )
20
21 if filter :
22 p l t . s a v e f i g ( path + ’ / F i l t e r m o v ’ + s t r ( mov ) + ’ r e p ’ + s t r ( r e p t ) + ’ I D ’ + s t r ( i d ) + ’ . png ’ )
23 else :
24 p l t . s a v e f i g ( path + ’ / mov ’ + s t r ( mov ) + ’ r e p ’ + s t r ( r e p t ) + ’ I D ’ + s t r ( i d ) + ’ . png ’ )
25
26 p l t . close ( )
27 # p l t . show ( )

Código E.2.3 Función para graficar y guardar datos puros y normalizados.


1
2 d e f f i l t e r p r o c e s s d f ( DFrame , name ) :
3
4 d f = DFrame
5 # de s e r n e c e s a r i o d e s p e j a r l o
6 # d f = d f . f i l t e r ( [ ’ t i m e ’ , ’ ch1 ’ , ’ ch2 ’ , ’ ch3 ’ , ’ ch4 ’ , ’ ch5 ’ , ’ ch6 ’ , ’ t a g ’ , ’ ID ’ , ’ R e p e t i c i o n ’ ] )
7
8 # escalamos r e s p e c t o a l a media por cada grupo independientemente
9 s c a l e r = MinMaxScaler ( ) # S ta nd ar dS ca l er ( )
10 df . i l o c [ : , 1:7] = scaler . f i t t r a n s f o r m ( df . i l o c [ : , 1:7] )
11
12 d f f i l t e r = pd . DataFrame ( )
13
14 groups = [ ]
15
16 # e x t r a c c i o n de r e p e t i c i o n e s s i n i m p o r t a r e l i d
17 for i in range ( 0 , d f . shape [ 0 ] ) :
18 i f df . Repeticion . i l o c [ i ] ! = df . Repeticion . i l o c [ i −1]:
19 groups . append ( i )
20
21 groups . append ( d f . shape [ 0 ] )
22
23 f o r j i n range ( 0 , l e n ( groups ) −1) :
24 l i m b a j o = groups [ j ]
25 l i m a l t o = groups [ j +1]
26
27 df aux=df [ lim bajo : l i m a l t o ]
28
29 g r a f i c a s t a g ( df aux , f i l t e r = False , name= name )
30
31 l a b e l s = [ ’ ch1 ’ , ’ ch2 ’ , ’ ch3 ’ , ’ ch4 ’ , ’ ch5 ’ , ’ ch6 ’ ]
32
33 f o r k i n range ( l e n ( l a b e l s ) ) :
34 D a t a F i l t e r . r e m o v e e n v i r o n m e n t a l n o i s e ( d f a u x [ l a b e l s [ k ] ] . values , 250 , NoiseTypes . SIXTY . v a l u e )
35 D a t a F i l t e r . perform bandpass ( d f a u x [ l a b e l s [ k ] ] . values , 250 , 5 5 . 0 , 9 0 . 0 , 5 , F i l t e r T y p e s .BUTTERWORTH. value , 0 )
36
37 g r a f i c a s t a g ( df aux , f i l t e r = True , name = name )
38
39 d f f i l t e r = d f f i l t e r . append ( df aux , i g n o r e i n d e x =True )
40
41 return d f f i l t e r

Código E.2.4 Función para filtrar datos.

1
2 def A l l f o r O n e f i l t e r ( list dfNames , i d ) :
3
4 A l l d a t a m o v = pd . DataFrame ( )
5
6 f o r i i n t r a n g e ( l e n ( l i s t d f N a m e s ) , desc= ” A p li c a n d o f i l t r o s ” ) :
7
8 d f = pd . r e a d c s v ( l i s t d f N a m e s [ i ] + ” . csv ” , i n d e x c o l =0)
9
10 tag1 , tag2 , tag3 , tag4 = o n e F o r A l l t a g s ( df , i d )
11
12 d f f i l t e r m o v 1 = f i l t e r p r o c e s s d f ( tag1 , l i s t d f N a m e s [ i ] + ’ ’ + s t r ( i d ) )
13 d f f i l t e r m o v 2 = f i l t e r p r o c e s s d f ( tag2 , l i s t d f N a m e s [ i ] + ’ ’ + s t r ( i d ) )
14 d f f i l t e r m o v 3 = f i l t e r p r o c e s s d f ( tag3 , l i s t d f N a m e s [ i ] + ’ ’ + s t r ( i d ) )
15 d f f i l t e r m o v 4 = f i l t e r p r o c e s s d f ( tag4 , l i s t d f N a m e s [ i ] + ’ ’ + s t r ( i d ) )
16
17 d f f i l t e r m o v 1 . t o c s v ( l i s t d f N a m e s [ i ] + ” d f F i l t e r m o v 1 . csv ” )
18 d f f i l t e r m o v 2 . t o c s v ( l i s t d f N a m e s [ i ] + ” d f F i l t e r m o v 2 . csv ” )
19 d f f i l t e r m o v 3 . t o c s v ( l i s t d f N a m e s [ i ] + ” d f F i l t e r m o v 3 . csv ” )
20 d f f i l t e r m o v 4 . t o c s v ( l i s t d f N a m e s [ i ] + ” d f F i l t e r m o v 4 . csv ” )
21
22 i d +=1
23
24
25 A l l d a t a m o v = pd . DataFrame ( )
26
27 f o r i i n range ( 1 , 5 ) :
28 movimiento = ’ d f F i l t e r m o v ’ + s t r ( i ) + ’ . csv ’
29 data mov = pd . DataFrame ( )
30
31 f o r j i n range ( l e n ( l i s t d f N a m e s ) ) :
32 rf = pd . r e a d c s v ( l i s t d f N a m e s [ j ] +movimiento , i n d e x c o l =0)
33 r f [ ” R e p e t i c i o n ” ] = ( np . a r r a y ( r f . ID . astype ( i n t ) ) −1) * 20 + np . a r r a y ( r f . R e p e t i c i o n . astype ( i n t ) )
34
35 data mov = data mov . append ( r f , i g n o r e i n d e x = True )
36
37 data mov . t o c s v ( ” Data ” + movimiento )
38
39 A l l d a t a m o v = A l l d a t a m o v . append ( data mov , i g n o r e i n d e x = True )
40
41 A l l d a t a m o v . t o c s v ( ” D a t a f i l t e r a l l M o v e . csv ” )
42
43 return All data mov

Código E.2.5 Función principal para normalizar, graficar y separar los datos por
movimiento.

2 r e l e v a n c e t a b l e = c a l c u l a t e r e l e v a n c e t a b l e ( d a t a f e a t u r e s , tag , ’ c l a s s i f i c a t i o n ’ , True , 4 )
3 p r i n t ( f ’ Tabla de r e l e v a n c i a con { r e l e v a n c e t a b l e . shape [ 0 ] } f e a t u r e s ’ )
4 relevance table = relevance table [ relevance table . relevant ]
5 r e l e v a n c e t a b l e . t o c s v ( ” r e l e v a n c e t a b l e ” +name+ ” a l l M o v . csv ” )
6 p r i n t ( f ’ Tabla de r e l e v a n c i a r e d u c i d a con { r e l e v a n c e t a b l e . shape [ 0 ] } f e a t u r e s ’ )
7

8 data relevant = data features [ relevance table . feature ]

Código E.2.6 Filtración de caracterı́sticas relevantes.

2 # f e a t u r e importance based on Tree Based C l a s s i f i e r s


3 data rv = data relevant
4 model = E x t r a T r e e s C l a s s i f i e r ( )
5 model . f i t ( d a t a r v , t a g )
6

7 f e a t i m p o r t a n c e s = pd . S e r i e s ( model . f e a t u r e i m p o r t a n c e s , i n d e x = d a t a r v . columns )
8 f e a t i m p o r t a n c e s . n l a r g e s t ( 2 0 ) . p l o t ( k i n d = ’ barh ’ , f i g s i z e = ( 8 , 8 ) )
9 p l t . t i t l e ( ”N r e l e v a n t f e a t u r e s ” )
10 p l t . show ( )
11

12 feat imp = feat importances . nlargest (20)


13 n d a t a r v = d a t a r e l e v a n t [ feat imp . index ]
14 n data rv

Código E.2.7 Selección de caracterı́sticas relevantes.


E.3 Análisis de modelos de clasificación ML.
1

2 def t r a i n c l a s s i f i c a t o r s ( d a t a t r a i n , t a g t r a i n ) :
3 p r i n t ( ’ * * * Resultados de e n t r e n a m i e n t o * * * \n ’ )
4

5 #Decision tree
6 dt = DecisionTreeClassifier ( ) . f i t ( data train , t a g t r a i n )
7 d t s c o r e = d t . score ( d a t a t r a i n , t a g t r a i n )
8 p r i n t ( f ’ Accuracy u s i n g D e c i s i o n t r e e : { d t s c o r e * 1 0 0 : . 2 f } ’ )
9

10 #svm P o l y n o m i a l
11 p o l y = svm .SVC( k e r n e l = ’ p o l y ’ , degree =8 , C=0.001) . f i t ( d a t a t r a i n , t a g t r a i n )
12 p o l y s c o r e = p o l y . score ( d a t a t r a i n , t a g t r a i n )
13 p r i n t ( f ’ Accuracy u s i n g Polynominal : { p o l y s c o r e * 1 0 0 : . 2 f } ’ )
14

15 # KNN
16 knn= K N e i g h b o r s C l a s s i f i e r ( n n e i g h b o r s = 20) . f i t ( d a t a t r a i n , t a g t r a i n )
17 knn score = knn . score ( d a t a t r a i n , t a g t r a i n )
18 p r i n t ( f ’ Accuracy u s i n g KNN: { knn score * 1 0 0 : . 2 f } ’ )
19

20 # Random F o r e s t C l a s s i f i e r
21 r f = R a n d o m F o r e s t C l a s s i f i e r ( random state =21) . f i t ( d a t a t r a i n , t a g t r a i n )
22 r f s c o r e = r f . score ( d a t a t r a i n , t a g t r a i n )
23 p r i n t ( f ’ Accuracy u s i n g Random F o r e s t : { r f s c o r e * 1 0 0 : . 2 f } ’ )
24

25 # Multi − l a y e r Perceptron c l a s s i f i e r
26 mlpc = M L P C l a s s i f i e r ( ( 2 5 0 , 1 5 0 , 5 0 ) , m a x i t e r =400 , a c t i v a t i o n = ’ r e l u ’ , s o l v e r = ’ adam ’ ,
random state =1)
27 mlpc score = mlpc . score ( d a t a t r a i n , t a g t r a i n )
28 p r i n t ( f ’ Accuracy u s i n g MLPC1 : { mlpc score * 1 0 0 : . 2 f } ’ )
29

30 # Gaussian Process C l a s s i f i e r
31 # k e r n e l = 1 . 0 * RBF ( 1 . 0 ) i s used
32 gpc = G a u s s i a n P r o c e s s C l a s s i f i e r ( random state =10) . f i t ( d a t a t r a i n , t a g t r a i n )
33 gpc score = gpc . score ( d a t a t r a i n , t a g t r a i n )
34 p r i n t ( f ’ Accuracy u s i n g Gaussian Process : { gpc score * 1 0 0 : . 2 f } ’ )
35

36 # Ridge C l a s s i f i e r
37 rc = RidgeClassifier ( ) . f i t ( data train , t a g t r a i n )
38 r c s c o r e = r c . score ( d a t a t r a i n , t a g t r a i n )
39 p r i n t ( f ’ Accuracy u s i n g Ridge : { r c s c o r e * 1 0 0 : . 2 f } ’ )
40

41 # Ridge C l a s s i f i e r
42 sgd = S G D C l a s s i f i e r ( ) . f i t ( d a t a t r a i n , t a g t r a i n )
43 sgd score = sgd . score ( d a t a t r a i n , t a g t r a i n )
44 p r i n t ( f ’ Accuracy u s i n g SGD: { r c s c o r e * 1 0 0 : . 2 f } ’ )
45

46 r e t u r n dt , poly , knn , r f , mlpc , gpc , rc , sgd


47
48 d e f t e s t c l a s s i f i c a t o r s ( d a t a t e s t , t a g t e s t , DecisionT , POLY, KNN, RF, MLPC, GPC, RC, SGD) :
49 Targets = [ ’ tag 1 ’ , ’ tag 2 ’ , ’ tag 3 ’ , ’ tag 4 ’ ]
50 p r i n t ( ’ \n * * * Resultados de t e s t e o * * * \n ’ )
51

52 #Decision tree
53 d t p r e d = DecisionT . p r e d i c t ( d a t a t e s t )
54 dt accuracy = accuracy score ( t a g t e s t , dt pred )
55 p r i n t ( f ’ Accuracy u s i n g D e c i s i o n Tree : { d t a c c u r a c y * 1 0 0 : . 2 f } ’ )
56 #svm P o l y n o m i a l
57 p o l y p r e d = POLY . p r e d i c t ( d a t a t e s t )
58 poly accuracy = accuracy score ( t a g t e s t , poly pred )
59 p r i n t ( f ’ Accuracy u s i n g P o l y n o m i a l K e r n e l : { p o l y a c c u r a c y * 1 0 0 : . 2 f } ’ )
60 # KNN
61 knn pred = KNN. p r e d i c t ( d a t a t e s t )
62 knn accuracy = a c c u r a c y s c o r e ( t a g t e s t , knn pred )
63 p r i n t ( f ’ Accuracy u s i n g KNN: { knn accuracy * 1 0 0 : . 2 f } ’ )
64 # Random F o r e s t C l a s s i f i e r
65 r f p r e d = RF . p r e d i c t ( d a t a t e s t )
66 rf accuracy = accuracy score ( t a g t e s t , r f p r e d )
67 p r i n t ( f ’ Accuracy u s i n g RF : { r f a c c u r a c y * 1 0 0 : . 2 f } ’ )
68 # Multi − l a y e r Perceptron c l a s s i f i e r
69 mlpc pred = MLPC. p r e d i c t ( d a t a t e s t )
70 mlpc accuracy = a c c u r a c y s c o r e ( t a g t e s t , mlpc pred )
71 p r i n t ( f ’ Accuracy u s i n g MLPC1 : { mlpc accuracy * 1 0 0 : . 2 f } ’ )
72 # Gaussian Process C l a s s i f i e r
73 gpc pred = GPC. p r e d i c t ( d a t a t e s t )
74 gpc accuracy = a c c u r a c y s c o r e ( t a g t e s t , gpc pred )
75 p r i n t ( f ’ Accuracy u s i n g GPC: { gpc accuracy * 1 0 0 : . 2 f } ’ )
76 # Ridge C l a s s i f i e r
77 r c p r e d = RC. p r e d i c t ( d a t a t e s t )
78 rc accuracy = accuracy score ( t a g t e s t , rc pred )
79 p r i n t ( f ’ Accuracy u s i n g RC: { r c a c c u r a c y * 1 0 0 : . 2 f } ’ )
80 # s t o c h a s t i c g r a d i e n t descent C l a s s i f i e r
81 sgd pred = SGD. p r e d i c t ( d a t a t e s t )
82 sgd accuracy = a c c u r a c y s c o r e ( t a g t e s t , sgd pred )
83 p r i n t ( f ’ Accuracy u s i n g SGD: { sgd accuracy * 1 0 0 : . 2 f } ’ )
84

85 X t r a i n , X t e s t , Y t r a i n , Y t e s t = t r a i n t e s t s p l i t ( n d a t a r v , tag , t e s t s i z e = 0 . 2 , random state


=300)
86

87 dt , poly , knn , r f , mlpc , gpc , rc , sgd = t r a i n c l a s s i f i c a t o r s ( X t r a i n , Y t r a i n )


88

89 p r i n t ( ’ * ’ *80)
90

91 t e s t c l a s s i f i c a t o r s ( X t e s t , Y t e s t , dt , poly , knn , r f , mlpc , gpc , rc , sgd )

Código E.3.1 Funciones de entrenamiento y testeo de modelos de clasificación ML.


E.4 Programación de ESP32
1

2 # i n c l u d e <Arduino . h>
3 # i n c l u d e <WiFi . h>
4 # i n c l u d e <HTTPClient . h>
5 # i n c l u d e <Wire . h>
6 # i n c l u d e <Adafruit PWMServoDriver . h>
7

8 / / C o n f i g u r a c i o n de conexion W i f i
9 c o n s t char * s s i d = ” SSID ” ;
10 c o n s t char * password = ” password ” ;
11 / / / / C o n f i g u r a c i o n de i p s e r v e r
12 i p = ” Colocar l a d i r e c c i o n i p d e l s e r v e r ”
13 c o n s t char * serverName = i p + ” / read ” ;
14

15 / / t h e f o l l o w i n g v a r i a b l e s are unsigned l o n g s because t h e time , measured i n


16 / / m i l l i s e c o n d s , w i l l q u i c k l y become a b i g g e r number than can be s t o r e d i n an i n t .
17 unsigned l o n g l a s t T i m e = 0 ;
18 / / Set t i m e r t o 2 . 5 seconds ( 2 5 0 0 )
19 unsigned l o n g t i m e r D e l a y = 2500;
20

21 / / C o n f i g u r a c i o n movimientos
22 S t r i n g movimiento ;
23 i n t t = 200; / / tiempo e n t r e movimiento de dedos
24 / / i n t t 2 = 4000; tiempo de r e t o r n o a movimiento base de l a mano
25

26

27 / / C o n f i g u r a c i o n de l a p l a c a pca9685
28 Adafruit PWMServoDriver servos = Adafruit PWMServoDriver ( 0 x40 ) ;
29 / / p u l s o s = ms( f r e c u e n c i a / 1 0 0 0 ) * 4096
30 unsigned i n t pos 0 = 184; / / C a l c u l o de p u l s o s para 0 grados
31 unsigned i n t pos 180 = 574; / / C a l c u l o de p u l s o s para 180 grados
32

33 u i n t 8 t mov = 0 ;
34

35

36 v o i d setup ( ) {
37

38 S e r i a l . begin (115200) ;
39 WiFi . begin ( s s i d , password ) ;
40

41 S e r i a l . p r i n t ( ” Conecting t o WiFi ” ) ;
42

43 w h i l e ( WiFi . s t a t u s ( ) ! = WL CONNECTED)
44 {
45 Serial . print ( ” . ” ) ;
46 delay (500) ;
47 }
48
49 S e r i a l . p r i n t ( ” \nConnected t o t h e WiFi network ” ) ;
50 S e r i a l . p r i n t ( ” IP address : ” ) ;
51 S e r i a l . p r i n t ( WiFi . l o c a l I P ( ) ) ;
52

53 servos . begin ( ) ;
54 servos . setPWMFreq ( 5 0 ) ; / / F r e c u e c i a PWM de 50Hz
55 }
56

57 S t r i n g httpGETRequest ( c o n s t char * serverName ) {


58 WiFiClient c l i e n t ;
59 HTTPClient h t t p ;
60

61 / / Your IP address w i t h path o r Domain name w i t h URL path


62 h t t p . begin ( c l i e n t , serverName ) ;
63

64 / / Send HTTP GET r e q u e s t


65 i n t httpResponseCode = h t t p .GET ( ) ;
66

67 S t r i n g payload = ” {} ” ;
68

69 i f ( httpResponseCode >0) {
70 S e r i a l . p r i n t ( ”HTTP Response code : ” ) ;
71 S e r i a l . p r i n t l n ( httpResponseCode ) ;
72 payload = h t t p . g e t S t r i n g ( ) ;
73 }
74 else {
75 S e r i a l . p r i n t ( ” E r r o r code : ” ) ;
76 S e r i a l . p r i n t l n ( httpResponseCode ) ;
77 }
78 / / Free r e s o u r c e s
79 h t t p . end ( ) ;
80

81 r e t u r n payload ;
82 }
83

84 v o i d movServo ( u i n t 8 t n servo , i n t angulo ) {


85 i n t duty ;
86 d u t y = map( angulo , 0 , 180 , pos 0 , pos 180 ) ;
87 servos . setPWM ( n servo , 0 , d u t y ) ;
88 }
89

90 / / ( dedo , c a n a l )
91 / / ( indice , 8) ( Medio , 5 ) ( Anular , 3 ) ( M e i q u e , 0 ) ( p u l g a r 1 , 12) ( p u l g a r 1 , 15)
92

93 v o i d movimiento 0 ( )
94 {
95 movServo ( 1 2 , 100) ;
96 delay ( t ) ;
97 movServo ( 1 5 , 25) ;
98 delay ( t ) ;
99 movServo ( 8 , 170) ;
100 delay ( t ) ;
101 movServo ( 5 , 170) ;
102 delay ( t ) ;
103 movServo ( 3 , 170) ;
104 delay ( t ) ;
105 movServo ( 0 , 170) ;
106 delay ( t ) ;
107 }
108

109 v o i d movimiento 1 ( )
110 {
111 movServo ( 0 , 60) ;
112 delay ( t ) ;
113 movServo ( 3 , 75) ;
114 delay ( t ) ;
115 movServo ( 5 , 100) ;
116 delay ( t ) ;
117 movServo ( 1 5 , 110) ;
118 delay ( t ) ;
119 movServo ( 1 2 , 20) ;
120 delay ( t ) ;
121 }
122

123 v o i d movimiento 2 ( )
124 {
125 movServo ( 0 , 60) ;
126 delay ( t ) ;
127 movServo ( 3 , 75) ;
128 delay ( t ) ;
129 movServo ( 5 , 100) ;
130 delay ( t ) ;
131 movServo ( 8 , 80) ;
132 delay ( t ) ;
133 movServo ( 1 5 , 110) ;
134 delay ( t ) ;
135 movServo ( 1 2 , 100) ;
136 delay ( t ) ;
137 }
138

139 v o i d movimiento 3 ( )
140 {
141 movServo ( 1 5 , 110) ;
142 delay ( t ) ;
143 movServo ( 1 2 , 30) ;
144 delay ( t ) ;
145 movServo ( 0 , 60) ;
146 delay ( t ) ;
147 movServo ( 3 , 75) ;
148 delay ( t ) ;
149 movServo ( 5 , 120) ;
150 delay ( t ) ;
151 movServo ( 8 , 105) ;
152 delay ( t ) ;
153 }
154

155 v o i d movimiento 4 ( )
156 {
157 movServo ( 8 , 170) ;
158 delay ( t ) ;
159 movServo ( 5 , 170) ;
160 delay ( t ) ;
161 movServo ( 3 , 75) ;
162 delay ( t ) ;
163 movServo ( 0 , 60) ;
164 delay ( t ) ;
165 movServo ( 1 5 , 110) ;
166 delay ( t ) ;
167 movServo ( 1 2 , 30) ;
168 delay ( t ) ;
169 }
170

171

172 void loop ( ) {


173 / / read an HTTP GET r e q u e s t every 5 seconds
174 if ( ( m i l l i s ( ) − lastTime ) > timerDelay ) {
175 / / Check WiFi c o n n e c t i o n s t a t u s
176 i f ( WiFi . s t a t u s ( ) == WL CONNECTED) {
177

178 movimiento = httpGETRequest ( serverName ) ;


179 S e r i a l . p r i n t l n ( movimiento ) ;
180

181 i f ( movimiento . t o I n t ( ) ! = mov ) {


182

183 s w i t c h ( movimiento . t o I n t ( ) ) {
184 case 1 :
185 movimiento 1 ( ) ;
186 / / delay ( t2 ) ;
187 / / movimiento 0 ( ) ;
188 / / delay ( t2 ) ;
189 S e r i a l . p r i n t l n ( ” movimiento 1 ” ) ;
190 break ;
191

192 case 2 :
193 movimiento 2 ( ) ;
194 / / delay ( t2 ) ;
195 / / movimiento 0 ( ) ;
196 / / delay ( t2 ) ;
197 S e r i a l . p r i n t l n ( ” movimiento 2 ” ) ;
198 break ;
199

200 case 3 :
201 movimiento 3 ( ) ;
202 / / delay ( t2 ) ;
203 / / movimiento 0 ( ) ;
204 / / delay ( t2 ) ;
205 S e r i a l . p r i n t l n ( ” movimiento 3 ” ) ;
206 break ;
207

208 case 4 :
209 movimiento 4 ( ) ;
210 / / delay ( t2 ) ;
211 / / movimiento 0 ( ) ;
212 / / delay ( t2 ) ;
213 S e r i a l . p r i n t l n ( ” movimiento 4 ” ) ;
214 break ;
215

216 default :
217 movimiento 0 ( ) ;
218 / / delay ( t2 ) ;
219 S e r i a l . p r i n t l n ( ” movimiento 0 ” ) ;
220 break ;
221 };
222

223 mov = movimiento . t o I n t ( ) ;


224 }
225

226 }
227 else {
228 S e r i a l . p r i n t l n ( ” WiFi Disconnected ” ) ;
229 }
230 lastTime = m i l l i s ( ) ;
231 }
232

233 }

Código E.4.1 Sistema de control de servomotores.

2 from f l a s k i m p o r t Flask , r e q u e s t
3 i m p o r t os
4 import json
5

7 app = F l a s k ( name )
8
9 @app . r o u t e ( ’ / ’ )
10 d e f home ( ) :
11 r e t u r n ’HELLO WORLD ’
12

13 @app . r o u t e ( ’ / mov ’ )
14 d e f movimiento ( ) :
15 s t a t e = r e q u e s t . args . g e t ( ” movimiento ” )
16 s = { ” movimiento ” : s t a t e }
17

18 fname = os . path . j o i n ( app . s t a t i c f o l d e r , ” movimiento . j s o n ” )


19

20 w i t h open ( fname , ’w ’ ) as o u t f i l e :
21 j s o n . dump ( s , o u t f i l e )
22

23 r e t u r n ’ success ’
24

25 @app . r o u t e ( ’ / read ’ )
26 d e f readJson ( ) :
27 fname = os . path . j o i n ( app . s t a t i c f o l d e r , ” movimiento . j s o n ” )
28

29 w i t h open ( fname , ’r ’) as o p e n f i l e :
30 j s o n o b j = json . load ( o p e n f i l e )
31

32 r e t u r n j s o n o b j [ ’ movimiento ’ ]
33

34 if name == ’ main ’:
35 app . run ( h o s t = ’ IP ’ , debug = True , p o r t = 8080)

Código E.4.2 Rest API.


APÉNDICE F
Se presenta la carta de autorización que los participantes firmaron para dar su
consentimiento de uso de datos mioeléctricos con fines investigativos y académicos.
APÉNDICE G
SERVO MOTOR SG90 DATA SHEET

Tiny and lightweight with high output power. Servo can rotate approximately 180 degrees (90 in each direction), and works just like the standard kinds
but smaller. You can use any servo code, hardware or library to control these servos. Good for beginners who want to make stuff move without building a
motor controller with feedback & gear box, especially since it will fit in small places. It comes with a 3 horns (arms) and hardware.

Position "0" (1.5 ms pulse) is middle, "90" (~2ms pulse) is middle,


is all the way to the right, "-90" (~1ms pulse) is all the way to the left.
APÉNDICE H
Datasheet del driver de control PCA9685
Pinouts

There are two sets of control input pins on either side. Both sides of the pins are
identical! Use whichever side you like, you can also easily chain by connecting up two
side-by-side

Power Pins
• GND - This is the power and signal ground pin, must be connected
• VCC - This is the logic power pin, connect this to the logic level you want to use
for the PCA9685 output, should be 3 - 5V max! It's also used for the 10K pullups
on SCL/SDA so unless you have your own pullups, have it match the
microcontroller's logic level too!
• V+ - This is an optional power pin that will supply distributed power to the
servos. If you are not using for servos you can leave disconnected. It is not used
at all by the chip. You can also inject power from the 2-pin terminal block at the
top of the board. You should provide 5-6VDC if you are using servos. If you have
to, you can go higher to 12VDC, but if you mess up and connect VCC to V+ you
could damage your board!

Control Pins
• SCL - I2C clock pin, connect to your microcontrollers I2C clock line. Can use 3V
or 5V logic, and has a weak pullup to VCC

©Adafruit Industries Page 6 of 30


• SDA - I2C data pin, connect to your microcontrollers I2C data line. Can use 3V or
5V logic, and has a weak pullup to VCC
• OE - Output enable. Can be used to quickly disable all outputs. When this pin is l
ow all pins are enabled. When the pin is high the outputs are disabled. Pulled
low by default so it's an optional pin!

Output Ports
There are 16 output ports. Each port has 3 pins: V+, GND and the PWM output. Each
PWM runs completely independently but they must all have the same PWM frequency.
That is, for LEDs you probably want 1.0 KHz but servos need 60 Hz - so you cannot
use half for LEDs @ 1.0 KHz and half @ 60 Hz.

They're set up for servos but you can use them for LEDs! Max current per pin is
25mA.

There are 220 ohm resistors in series with all PWM Pins and the output logic is the
same as VCC so keep that in mind if using LEDs.

Assembly
Install the Servo Headers
Install 4 3x4 pin male headers into the
marked positions along the edge of the
board.

Solder all pins


There are a lot of them!

©Adafruit Industries Page 7 of 30


APÉNDICE I
Datasheet de fuente para protoboard
Fuente para protoboard 3.3v o 5V, 700ma (Versión 30-9-18)

Este modulo posee salidas de 3.3V y 5V, posee un regulador para cada voltaje, Estos voltajes
se seleccionan con jumpers.

La entrada de voltaje al módulo puede ser por el conector Jack o a través del conector USB
(no recomendable, la corriente se limita a la que puede entregar el puerto USB de la PC). Si
se usa el conector Jack, el conector USB se puede utilizar como salida de 5V.

Permite alimentar un protoboard mediante plug a un transformador de pared hasta 12v.


Proporciona dos salidas independientes que son seleccionables mediante jumpers y permiten
suministrar 5V o 3.3V. Cuenta además con salida de 5V por conector USB.

Práctica fuente que simplifica la alimentación de la protoboard y circuitos electrónicos


especialmente los de carácter digital, ideal con cualquier versión de Arduino y
microcontroladores PIC. Cada lado de la fuente tiene un jumper de encendido / apagado y de
selección de voltaje.

ESPECIFICACIONES TÉCNICAS

 Voltaje de entrada: 6.5V a 12V


 Voltaje de salida 1: 3.3V o 5V (seleccionable por jumper)
 Voltaje de salida 2: 3.3V o 5V (seleccionable por jumper)
 Salida de tensión USB: 5V
 Corriente máxima de salida: 700 mA
 LED indicador de encendido
 Botón de encendido / apagado

1
APÉNDICE J
Datasheet de consumo de poder del ESP32
3 Functional Description

– Ping

• Bluetooth Low Energy

– Advertising

– Scanning

– Simultaneous advertising and scanning

– Multiple connections

– Asynchronous data reception and transmission

– Adaptive Frequency Hopping and Channel assessment

– Connection parameter update

– Data Length Extension

– Link Layer Encryption

– LE Ping

3.7 RTC and Low­Power Management


With the use of advanced power-management technologies, ESP32 can switch between different power
modes.

• Power modes

– Active mode: The chip radio is powered on. The chip can receive, transmit, or listen.

– Modem­sleep mode: The CPU is operational and the clock is configurable. The Wi-Fi/Bluetooth
baseband and radio are disabled.

– Light­sleep mode: The CPU is paused. The RTC memory and RTC peripherals, as well as the ULP
coprocessor are running. Any wake-up events (MAC, host, RTC timer, or external interrupts) will wake
up the chip.

– Deep­sleep mode: Only the RTC memory and RTC peripherals are powered on. Wi-Fi and Bluetooth
connection data are stored in the RTC memory. The ULP coprocessor is functional.

– Hibernation mode: The internal 8 MHz oscillator and ULP coprocessor are disabled. The RTC
recovery memory is powered down. Only one RTC timer on the slow clock and certain RTC GPIOs are
active. The RTC timer or the RTC GPIOs can wake up the chip from the Hibernation mode.

Table 6: Power Consumption by Power Modes

Power mode Description Power consumption


Wi-Fi Tx packet
Please refer to
Active (RF working) Wi-Fi/BT Tx packet
Table 15 for details.
Wi-Fi/BT Rx and listening
* Dual-core chip(s) 30 mA ~ 68 mA
240 MHz
Single-core chip(s) N/A
The CPU is * Dual-core chip(s) 27 mA ~ 44 mA
Modem-sleep 160 MHz
powered on. Single-core chip(s) 27 mA ~ 34 mA

Espressif Systems 30 ESP32 Series Datasheet v3.8


Submit Documentation Feedback
3 Functional Description

Power mode Description Power consumption


Dual-core chip(s) 20 mA ~ 31 mA
Normal speed: 80 MHz
Single-core chip(s) 20 mA ~ 25 mA
Light-sleep - 0.8 mA
The ULP coprocessor is powered on. 150 µA
Deep-sleep ULP sensor-monitored pattern 100 µA @1% duty
RTC timer + RTC memory 10 µA
Hibernation RTC timer only 5 µA
Power off CHIP_PU is set to low level, the chip is powered off. 1 µA

Note:

• * Among the ESP32 series of SoCs, ESP32-D0WD-V3, ESP32-U4WDH, ESP32-D0WD (NRND), ESP32-D0WDQ6
(NRND), and ESP32-D0WDQ6-V3 (NRND) have a maximum CPU frequency of 240 MHz, ESP32-S0WD has a
maximum CPU frequency of 160 MHz.

• When Wi-Fi is enabled, the chip switches between Active and Modem-sleep modes. Therefore, power consumption
changes accordingly.

• In Modem-sleep mode, the CPU frequency changes automatically. The frequency depends on the CPU load and
the peripherals used.

• During Deep-sleep, when the ULP coprocessor is powered on, peripherals such as GPIO and RTC I2C are able to
operate.

• When the system works in the ULP sensor-monitored pattern, the ULP coprocessor works with the ULP sensor
periodically and the ADC works with a duty cycle of 1%, so the power consumption is 100 µA.

Espressif Systems 31 ESP32 Series Datasheet v3.8


Submit Documentation Feedback
5 Electrical Characteristics

Test Item Test Condition Test Standard


TCT (Temperature Cycling
–65 °C / 150 °C, 500 cycles JESD22-A104
Test)
Autoclave Test 121 °C, 100% RH, 96 hours JESD22-A102
uHAST (Highly Acceler-
130 °C, 85% RH, 96 hours JESD22-A118
ated Stress Test, unbiased)
HTSL (High Temperature
150 °C, 1000 hours JESD22-A103
Storage Life)

1. JEDEC document JEP155 states that 500 V HBM allows safe manufacturing with a standard ESD control process.
2. JEDEC document JEP157 states that 250 V CDM allows safe manufacturing with a standard ESD control process.

5.5 RF Power­Consumption Specifications


The power consumption measurements are taken with a 3.3 V supply at 25 °C of ambient temperature at the RF
port. All transmitters’ measurements are based on a 50% duty cycle.

Table 15: RF Power­Consumption Specifications

Mode Min Typ Max Unit


Transmit 802.11b, DSSS 1 Mbps, POUT = +19.5 dBm - 240 - mA
Transmit 802.11g, OFDM 54 Mbps, POUT = +16 dBm - 190 - mA
Transmit 802.11n, OFDM MCS7, POUT = +14 dBm - 180 - mA
Receive 802.11b/g/n - 95 ~ 100 - mA
Transmit BT/BLE, POUT = 0 dBm - 130 - mA
Receive BT/BLE - 95 ~ 100 - mA

5.6 Wi­Fi Radio

Table 16: Wi­Fi Radio Characteristics

Parameter Condition Min Typ Max Unit


note1
Operating frequency range - 2412 - 2484 MHz
note2
Output impedance - - note 2 - Ω
11n, MCS7 12 13 14 dBm
TX power note3
11b mode 18.5 19.5 20.5 dBm
11b, 1 Mbps - –98 - dBm
11b, 11 Mbps - –88 - dBm
11g, 6 Mbps - –93 - dBm
11g, 54 Mbps - –75 - dBm
Sensitivity
11n, HT20, MCS0 - –93 - dBm
11n, HT20, MCS7 - –73 - dBm
11n, HT40, MCS0 - –90 - dBm
11n, HT40, MCS7 - –70 - dBm

Espressif Systems 44 ESP32 Series Datasheet v3.8


Submit Documentation Feedback
APÉNDICE K
Planos de la base de la MRA
0,25 cm
7,25 cm

6,80 cm

7,55 cm
0,30 cm

2,33 cm

R3
,49
cm
1,27 cm 1,35 cm
2,61 cm

8,34 cm

8,04 cm

6,05 cm

6,35 cm
R2,08 cm
0,50 cm

R0
, 60
cm

Nombre Archivo Dibujado Escala Fecha

M.V.B.N Dise o en 3D Comprobado 8:1 10/02/2022


Apoyo
Proyecto de Grado
Firmas
Num: 1 de 3
14,26 cm
15,04 cm

0,78 cm

8,48 cm

8,96 cm

10,16 cm

1,52 cm

R5,78 cm

10,29 cm
7,92 cm

8,04 cm

8,34 cm
9,94 cm
cm
0
,3
R5

11
,6 7
cm

Nombre Archivo Dibujado Escala Fecha

M.V.B.N Dise o en 3D Comprobado 4:1 10/02/2022


Base de MRA
Proyecto de Grado Firmas
Num: 2 de 3
3,41 cm

11,75 cm
12,54 cm

0,79 cm
8,92 cm

3,28 cm 7,75 cm

0,90 cm
2,09 cm

10,29 cm
5,20 cm

6,20 cm

4,70 cm

6,53 cm
6,18 cm

R0, 5,57 cm
93
cm 3,17 cm

Nombre Archivo Dibujado Escala Fecha

M.V.B.N Dise o en 3D Comprobado 8:1 10/02/2022


Inserto de MRA
Proyecto de Grado Firmas
Num: 3 de 3

También podría gustarte