La versión digital de esta tesis está protegida por la Ley...

127
La versión digital de esta tesis está protegida por la Ley de Derechos de Autor del Ecuador. Los derechos de autor han sido entregados a la ESCUELA POLITÉCNICA NACIONALbajo el libre consentimiento del (los) autor(es). Al consultar esta tesis deberá acatar con las disposiciones de la Ley y las siguientes condiciones de uso: Cualquier uso que haga de estos documentos o imágenes deben ser sólo para efectos de investigación o estudio académico, y usted no puede ponerlos a disposición de otra persona. Usted deberá reconocer el derecho del autor a ser identificado y citado como el autor de esta tesis. No se podrá obtener ningún beneficio comercial y las obras derivadas tienen que estar bajo los mismos términos de licencia que el trabajo original. El Libre Acceso a la información, promueve el reconocimiento de la originalidad de las ideas de los demás, respetando las normas de presentación y de citación de autores con el fin de no incurrir en actos ilegítimos de copiar y hacer pasar como propias las creaciones de terceras personas. Respeto hacia sí mismo y hacia los demás.

Transcript of La versión digital de esta tesis está protegida por la Ley...

Page 1: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

La versión digital de esta tesis está protegida por la Ley de Derechos de

Autor del Ecuador.

Los derechos de autor han sido entregados a la “ESCUELA POLITÉCNICA

NACIONAL” bajo el libre consentimiento del (los) autor(es).

Al consultar esta tesis deberá acatar con las disposiciones de la Ley y las

siguientes condiciones de uso:

· Cualquier uso que haga de estos documentos o imágenes deben ser sólo

para efectos de investigación o estudio académico, y usted no puede

ponerlos a disposición de otra persona.

· Usted deberá reconocer el derecho del autor a ser identificado y citado

como el autor de esta tesis.

· No se podrá obtener ningún beneficio comercial y las obras derivadas

tienen que estar bajo los mismos términos de licencia que el trabajo

original.

El Libre Acceso a la información, promueve el reconocimiento de la

originalidad de las ideas de los demás, respetando las normas de

presentación y de citación de autores con el fin de no incurrir en actos

ilegítimos de copiar y hacer pasar como propias las creaciones de terceras

personas.

Respeto hacia sí mismo y hacia los demás.

Page 2: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA Y

ELECTRÓNICA

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL

AUTOMÁTICO PARA UN ROBOT IMITADOR EN UNA

PLATAFORMA HUMANOIDE MEDIANTE ADQUISICIÓN Y

PROCESAMIENTO DIGITAL DE IMAGEN Y VIDEO.

PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN

ELECTRÓNICA Y CONTROL

NELSON ANTONIO PARRA ROMO

[email protected]

DIRECTOR: MSc. CARLOS PATRICIO BURBANO ROMERO

[email protected]

CODIRECTOR: Dr. JORGE ANDRÉS ROSALES ACOSTA

[email protected]

Quito, abril de 2013

Page 3: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

I

DECLARACIÓN Yo Nelson Antonio Parra Romo, declaro bajo juramento que el trabajo aquí

descrito es de mi autoría; que no ha sido previamente presentado para ningún

grado o calificación profesional; y, que he consultado las referencias bibliográficas

que se incluyen en este documento.

A través de la presente declaración cedo mis derechos de propiedad intelectual

correspondientes a este trabajo, a la Escuela Politécnica Nacional, según lo

establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la

normatividad institucional vigente.

______________________ Nelson Antonio Parra Romo

Page 4: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

II

CERTIFICACIÓN Certificamos que el presente trabajo fue desarrollado por Nelson Antonio Parra

Romo, bajo nuestra supervisión.

________________________ Ing. Patricio Burbano MSc.

DIRECTOR DEL PROYECTO

__________________________ Dr. Andrés Rosales A.

CODIRECTOR DEL PROYECTO

Page 5: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

III

AGRADECIMIENTO

En primer lugar a Dios, que a pesar de no poder verlo, lo he podido sentir en el

corazón, en cada paso hacia la culminación de este proyecto de titulación,

dándome la fuerza y el valor de seguir adelante a pesar de las dificultades.

A mi Director de tesis, el Ing. Patricio Burbano, por haber sabido preocuparse en

todo momento y lugar, del avance y culminación del presente proyecto, por ser

más que un guía, un amigo, al aportar todo de su parte sin negar su valioso

tiempo ni conocimiento.

Al Dr. Andrés Rosales, por haberse esforzado desde el inicio en que esta gran

meta se haga realidad, por haber sido un excelente mentor y más que nada un

excelente amigo el cual ha visto el mejor lado de un problema y lo ha convertido

en una ventaja, apoyándome en todo momento.

A mi madre, la Dra. Noemí Romo, por haber sabido guiarme y darme lo mejor de

ella en cada instante, por los tantos días sin dormir que me acompañó y supo

expresar las mejores palabras de ánimo, en el momento exacto.

A mi novia, Lady Cabezas, por haber sido además, una compañera y amiga en

todo momento, por estar junto a mí en las buenas y en las malas y darme los

mejores consejos para nunca dejarme vencer por las adversidades, por

enseñarme que con amor, que las cosas que parecen imposibles, se hacen

realidad.

A mi hermano, Diego Parra Romo, por haber sido como un padre en todo este

largo proceso y haber confiado todo el tiempo en mí, por su apoyo incondicional y

sus palabras de aliento que siempre me han llenado el corazón y el espíritu.

A mi hermana, Catalina Fiallos, por las palabras correctas que siempre me ha

brindado y por compartir mi alegría al finalizar esta etapa de mi vida.

Page 6: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

IV

Al club de robótica porque me ha brindado la oportunidad de aprender y aplicar

mis conocimientos, y a todos mis compañeros del club de robótica por haber

puesto su granito de arena en cada etapa de este proyecto.

A mis amigos, compañeros y todas las personas que de una u otra forma

permitieron que éste proyecto se haga realidad.

Page 7: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

V

DEDICATORIA

Dedico este proyecto principalmente a mi madre, que además es mi modelo a

seguir ya que me ha enseñado que no existe obstáculo demasiado grande como

para rendirse, porque ha sido y será siempre un ejemplo de ser humano, porque

me ha dado siempre lo mejor, sin importar cuál sea la situación, porque con sus

sabios consejos me ha sabido ayudar en los momentos más difíciles y porque su

amor incondicional ha sido la mejor motivación para culminar este proyecto.

A mi novia, aquella persona especial que hizo que los días más difíciles se

conviertan en momentos de alegría, porque con su amor logró llenar mis días de

felicidad, porque su presencia en mi vida fue el hecho más relevante en mi vida

dentro de la universidad, porque siempre ha estado cuando más he necesitado un

hombro para descansar, porque gracias a su forma de ser es y será mi mejor

amiga.

A mi hermano, que ha sido una inspiración de ser humano y me ha enseñado a

que jamás debo darme por vencido, porque es una persona muy importante en

mi vida y mi mejor amigo.

A mi hermana, que siempre ha buscado la forma de ayudarme, a pesar de la

diferencia de opiniones siempre ha sido un gran apoyo.

Al Club de Robótica, ya que me ha permitido aprender y trabajar en equipo,

porque en él he pasado los mejores momentos de mi vida ya que aunque no haya

ganado muchos premios, gané mucha experiencia y conocimiento además de la

oportunidad de conocer a excelentes personas que han sabido destacarse unas

de otras.

Al Director y Codirector de este proyecto, porque han demostrado que el trabajo

en equipo es la mejor forma de realizar las cosas, porque se han sabido ganar un

lugar en mi corazón para toda la vida.

Page 8: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

VI

A un gran amigo y compañero, Marcelo Chávez, que a pesar de no encontrarse

con nosotros, dejó huellas que jamás serán borradas.

A todos los docentes que me han permitido ser parte de sus vidas y fortalecer mi

conocimiento, porque unos han sido mentores y otros se convirtieron en amigos, y

cada uno de ellos es especial y formará parte de un hermoso recuerdo que

perdurará por siempre.

Page 9: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

VII

CONTENIDO

CAPÍTULO 1 .......................................................................................................... 1

MARCO TEÓRICO ................................................................................................. 1

1.1. INTRODUCCIÓN ...................................................................................... 1

1.2. ORÍGEN DE LA ROBÓTICA ..................................................................... 1

1.3. CONCEPTOS BÁSICOS DE LA ROBÓTICA ............................................ 3

1.4. EVOLUCIÓN DE LA ROBÓTICA HUMANOIDE ....................................... 4

1.4.1. AL-JAZARI, BOTE CON 4 MÚSICOS AUTÓMATAS, 1206 ............... 4

1.4.2. LEONARDO DA VINCI, EL CABALLERO MECÁNICO, 1495 ............ 5

1.4.3. PIERRE KINTZING, LA TOCADORA DE TÍMPANO, 1780 ................ 6

1.4.4. JOSEPH BARNETT, ROBOT ELEKTRO, 1939 ................................. 6

1.4.5. JOSEPH ENGELBERGER, ROBOT UNIMATE, 1962 ....................... 7

1.4.6. HONDA, ROBOT E0, 1986 ................................................................. 8

1.4.7. HONDA, ROBOT P1, 1993 ................................................................. 8

1.4.8. HONDA, ROBOT ASIMO, 2000 .......................................................... 9

1.5. PLATAFORMA HUMANOIDE ROBOPHILO ........................................... 11

1.6. SENSOR KINECT ................................................................................... 12

1.6.1. CARACTERÍSTICAS ........................................................................ 12

1.6.2. FUNCIONAMIENTO ......................................................................... 14

CAPÍTULO 2 ........................................................................................................ 17

ANÁLISIS DEL FUNCIONAMIENTO DE LA PLATAFORMA HUMANOIDE

ROBOPHILO ........................................................................................................ 17

2.1. DATOS TÉCNICOS ................................................................................ 17

2.2. CHASIS Y ESTRUCTURA INTERNA ..................................................... 18

2.2.1. BRAZOS IZQUIERDO Y DERECHO. ............................................... 18

2.2.2. PIERNAS IZQUIERDA Y DERECHA ................................................ 20

2.2.3. TORSO Y CABEZA .......................................................................... 22

2.3. SISTEMA DE LOCOMOCIÓN ................................................................. 24

2.3.1. SERVOMOTOR ANALÓGICO .......................................................... 24

2.4. UNIDAD DE CONTROL ROBOPHILO .................................................... 25

2.5. ANÁLISIS UNIDAD DE CONTROL ROBOPHILO ................................... 26

2.6. UNIDAD DE CONTROL AXON-II ............................................................ 27

Page 10: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

VIII

2.7. FUENTE DE ALIMENTACIÓN/CARGADOR DE BATERÍA .................... 29

2.8. COMUNICACIÓN SERIAL ...................................................................... 30

CAPÍTULO 3 ........................................................................................................ 31

DISEÑO E IMPLEMENTACIÓN DEL SISTEMA DE CONTROL .......................... 31

3.1. SENSOR KINECT Y SEÑALES .............................................................. 31

3.1.1. OBTENCIÓN DE DATOS ................................................................. 31

3.1.2. PROCESAMIENTO DE SEÑALES ................................................... 34

3.1.3. DETECCIÓN DE ARTICULACIONES MEDIANTE EL SENSOR

KINECT ......................................................................................................... 35

3.2. CINEMÁTICA INVERSA ......................................................................... 36

3.2.1. CONCEPTO TEÓRICO .................................................................... 37

3.2.2. DEDUCCIÓN DE LAS ECUACIONES DE CINEMÁTICA INVERSA

PARA UN ROBOT CON TRES GRADOS DELIBERTAD ROTACIONALES 39

3.2.3. IMPLEMENTACIÓN DE LAS ECUACIONES DE CINEMÁTICA

INVERSA EN LA PLATAFORMA HUMANOIDE ROBOPHILO ..................... 44

3.3. DESARROLLO DEL SOFTWARE DE CONTROL .................................. 58

3.3.1. LENGUAJES DE PROGRAMACIÓN SELECCIONADOS ............... 58

3.3.2. SOFTWARE DE PROGRAMACIÓN SELECCIONADOS ................ 60

3.3.3. TIPO DE PROGRAMADOR ............................................................. 62

3.3.4 IMPLEMENTACIÓN DE SOFTWARE Y DIAGRAMAS DE FLUJO .. 62

CAPÍTULO 4 ........................................................................................................ 71

PROGRAMACIÓN DEL HMI Y COMUNICACIONES .......................................... 71

4.1. COMUNICACIÓN SERIAL ENTRE COMPUTADOR Y

MICROCONTROLADOR .................................................................................. 71

4.1.1 COMUNICACIÓN SERIAL ASÍNCRONA ......................................... 71

4.1.2. MÓDULO DE COMUNICACIÓN INALÁMBRICA XBEE ................. 72

4.1.3. TRAMA DE DATOS ........................................................................ 76

4.2. INTERFAZ HOMBRE MÁQUINA (HMI) ................................................. 76

CAPÍTULO 5 ........................................................................................................ 80

PRUEBAS Y RESULTADOS ................................................................................ 80

5.1. PRUEBAS EN MODO SUSPENDIDO ................................................... 81

5.2. PRUEBAS EN MODO PLANICIE .......................................................... 87

5.3. ESPECIFICACIONES DE FUNCIONAMIENTO .................................... 90

Page 11: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

IX

5.4. LISTADO DE COSTOS ......................................................................... 90

5.4.1. COSTO DE MATERIALES .............................................................. 90

5.4.2. COSTO DE INGENIERÍA ................................................................ 91

5.4.3. COSTO TOTAL ............................................................................... 91

CAPÍTULO 6 ........................................................................................................ 92

CONCLUSIONES Y RECOMENDACIONES ....................................................... 92

6.1. CONCLUSIONES ................................................................................. 92

6.2. RECOMENDACIONES .......................................................................... 94

REFERENCIAS BIBLIOGRÁFICAS ..................................................................... 95

ANEXO A ............................................................................................................. 98

ENSAMBLAJE DE LA PLATAFORM A ROBOPHILO ...................................... 98

ANEXO B ............................................................................................................101

MANUAL DE USUARIO ...................................................................................101

ANEXO C ............................................................................................................112

MANUAL DE MANTENIMIENTO .....................................................................112

Page 12: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

X

RESUMEN

El presente proyecto de titulación está enfocado a realizar el control, por medio de

cinemática inversa, para una plataforma humanoide capaz de imitar los

movimientos del ser humano al conectarse al sensor Kinect mediante

comunicación inalámbrica a través de la placa de control “Axon II’’.

La plataforma humanoide RoboPhilo es capaz de mover sus brazos y piernas de

forma autónoma al imitar a la persona que se encuentra delante del sensor

Kinect, el cual procesa las distancias de acuerdo a la estimación de la posición de

las articulaciones de una persona. El lenguaje de programación que se utiliza es

C#, un lenguaje orientado a objetos y aplicaciones web, debido a que permite

crear un entorno interactivo entre la aplicación y el creador del código fuente.

La diferencia máxima obtenida entre el ángulo real de movimiento del usuario y el

movimiento de la plataforma es de 2.4° en la cadera derecha y de 3.6° en el codo

izquierdo del robot, lo cual representa el 2% del movimiento total del servomotor

utilizado, es decir el grado de exactitud de los movimientos al imitar.

Page 13: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

XI

PRESENTACIÓN

En el presente proyecto de titulación se analiza los movimientos de una

plataforma humanoide controlada por cinemática inversa y se desarrolla en dos

tipo de medios, uno suspendido a través de un stand por medio del cual mueve

las extremidades superiores e inferiores y, otro en el cual los pies se encuentran

fijos y mueve las extremidades superiores.

En el Capítulo 1, se realiza una introducción a la robótica y los diferentes

prototipos humanoides a lo largo de la historia, haciendo hincapié en la

descripción de la plataforma RoboPhilo, la cual cuenta con 20 grados de libertad y

permite realizar movimientos similares a los del ser humano, dichos movimientos

se los visualiza a través del sensor Kinect.

En el Capítulo 2, se analiza la plataforma humanoide RoboPhilo y a través de su

estudio se obtiene las fortalezas y debilidades del robot para aplicar el control del

mismo; de los 20 servomotores provistos se utilizan 12 que permiten un sistema

de locomoción, controlados por la tarjeta de desarrollo Axon II.

En el Capítulo 3, se describe el diseño e implementación del sistema de control a

través del sensor Kinect, la medición de la distancia a la que se encuentra cada

articulación de la persona hace posible aplicar métodos matemáticos y para

encontrar los ángulos entre las uniones de las extremidades de la plataforma y así

llegar a desarrollar algoritmos que permitan al robot imitar a una persona.

La cinemática inversa permite analizar el movimiento de una articulación con

respecto a coordenadas articulares para que el extremo se posicione y oriente de

acuerdo a una localización, la solución planteada es cerrada y se encuentra una

relación matemática para cada ángulo de estudio en la plataforma.

Finalmente, en el Capítulo 4 se identifica el método de interacción entre el

computador y la plataforma humanoide, es decir la utilización de comunicación

serial asíncrona.

Page 14: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

1

CAPÍTULO 1

MARCO TEÓRICO

1.1. INTRODUCCIÓN Desde el principio del siglo XIV, los seres humanos han estado interesados en

medios que permitan realizar tareas repetitivas mediante máquinas, que sean

accesibles y tengan un nivel de seguridad y rendimiento óptimo. Con la aparición

de los primeros prototipos de robots se pudo dar un gran paso hacia la

automatización a nivel industrial y permitir al mundo disfrutar de productos,

especialmente electrónicos a precios muy cómodos. Luego se decidió aplicar la

robótica a otras áreas, como son: exploración, medicina, entretenimiento, etc., con

un resultado muy favorable.

La robótica hoy en día forma un papel fundamental tanto en la industria como en

los hogares, debido a la fácil manipulación, adaptación y desempeño que se tiene

en los distintos tipos de robots que el usuario requiere. Los robots en la actualidad

cumplen con varias tareas fundamentales para el desarrollo de nuevas

tecnologías, gracias a su rapidez y el nivel de seguridad con el que trabajan. Una

de las tareas más importantes de los robots es la de sustituir a los trabajadores de

lugares peligrosos y de difícil acceso, es por esto que cada día se realizan nuevos

modelos de robots para aplicaciones específicas.

1.2. ORÍGEN DE LA ROBÓTICA

En el siglo XVI había gran cantidad de pequeños autómatas, que eran Figuras

con mecanismos de relojería que hacían diversos movimientos, como rezar, tocar

música, caminar o danzar, etc. Los relojeros del siglo XVIII, hábiles e ingeniosos

con la composición de mecanismos de engranajes, crearon algunas famosas

criaturas mecánicas. La Revolución Industrial y la creación del sistema de

cadenas de montaje, que divide la fabricación de cualquier elemento en pequeñas

Page 15: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

2

tareas, fue el primer gran paso hacia el logro de la robotización total en las

industrias.

Ya en el siglo XX, el escritor checo Karel Capek (1890-1938) le dio nombre al

hombre mecánico en su obra teatral R.U.R. (Robots Universales Rossum), que se

estrenó en Europa en 1920, utilizando la palabra "robot", que es de origen checo y

significa siervo o esclavo [1].

El robot como máquina lleva un desarrollo independiente del término robot. Tras

los primeros autómatas, casi todos de aspecto humano, los progenitores más

directos de los robots fueron los telemanipuladores (Figura 1.1). En 1948 Goetz

del Argonne National Laboratory desarrolló, con el objetivo de manipular

elementos radioactivos sin riesgo para el operador, el primer telemanipulador.

Éste consistía en un dispositivo mecánico maestro-esclavo. El manipulador

maestro, situado en la zona segura, era movido directamente por el operador,

mientras que el esclavo, situado en contacto con los elementos radioactivos y

unido mecánicamente al maestro, reproducía fielmente los movimientos de éste.

El operador además de poder observar través de un grueso cristal el resultado de

sus acciones, sentía a través del dispositivo maestro, las fuerzas que el esclavo

ejercía sobre el entorno.

La primera patente de un dispositivo robótico fue solicitada en marzo de 1954 por

el inventor británico C.W. Kenward. En 1954 George C. Devol, ingeniero

norteamericano, inventor y autor de varias patentes, el cual estableció las bases

del robot industrial moderno [2].

Page 16: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

3

Figura 1.1 Telemanipulador diseñado para tareas básicas, tomado de [3]

1.3. CONCEPTOS BÁSICOS DE LA ROBÓTICA

· Sensor: Cualquier elemento que permita realizar una medición y verificar el

estado de una variable.

· Controlador: Dispositivo que modifica su salida para regular una variable

controlada [4].

· Robótica: La robótica es una ciencia o rama de la tecnología, que estudia el

diseño y construcción de máquinas capaces de desempeñar tareas realizadas

por el ser humano o que requieren del uso de inteligencia. Las ciencias y

tecnologías de las que deriva podrían ser: el álgebra, los autómatas

programables, las máquinas de estados, la mecánica y la informática [5].

· Robot: El término procede de la palabra checa robota, que significa 'trabajo

obligatorio'; fue empleado por primera vez en la obra teatral de 1920 R.U.R.

(Robots Universales de Rossum) por el novelista y dramaturgo checo Karel

Capek. Desde entonces se ha empleado la palabra robot para referirse a una

máquina que realiza trabajos para ayudar a las personas o efectúa tareas

difíciles para los humanos.

Page 17: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

4

Un robot es una máquina controlada por ordenador y programada para

moverse, manipular objetos y realizar trabajos a la vez que interactúa con su

entorno. Los robots son capaces de realizar tareas repetitivas de forma más

rápida, barata y precisa que los seres humanos [6].

· Robot humanoide: Son máquinas que tienen formas o funciones humanas,

las cuales emulan por medio de la robótica los aspectos y comportamientos

humanos mediante un controlador y no de forma autónoma.

1.4. EVOLUCIÓN DE LA ROBÓTICA HUMANOIDE

En el mundo se tienen diferentes versiones acerca del origen de la robótica

humanoide y a pesar de que Japón está liderando en la actualidad este mercado,

no es el primer país que comenzó a investigar esta tecnología. A continuación se

mostrará un resumen de una de las versiones más acertadas acerca del origen de

la robótica humanoide y su evolución:

1.4.1. AL-JAZARI, BOTE CON 4 MÚSICOS AUTÓMATAS, 1206

En 1206 Al-Jazari un importante erudito, artista, astrónomo, inventor e ingeniero

mecánico proveniente de Al-Jazira (actual norte de Iraq), creó un autómata

musical, el cual constaba de un sistema de cambio de posición hidráulico,

mediante grandes tanques los cuales hacían recorrer el agua por intervalos de

media hora, con cuatro músicos autómatas que se asentaban en un barco que

flotaba en un lago para entretener a los invitados en las fiestas reales. Para los

científicos la creación de Al-Jazari cuenta como el primer autómata programable

del mundo. El sistema era capaz de realizar más de cincuenta acciones faciales y

corporales durante cada selección musical [7].

Page 18: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

5

Figura 1.2 Bote con músicos, primer autómata programable tomado de [8].

1.4.2. LEONARDO DA VINCI, EL CABALLERO MECÁNICO, 1495

Leonardo Da Vinci trazó bosquejos de un robot humanoide alrededor de 1495.

Los libros de notas de Da Vinci, redescubiertos en 1950, contenían dibujos

detallados de un caballero mecánico actualmente conocido como ‘el robot de

Leonardo’, capaz de sentarse, mover sus brazos, y mover su cabeza y mandíbula.

El diseño probablemente estaba basado en la investigación anatómica registrada

en su ‘Hombre Vitruviano’ [9].

Figura 1.3 Exterior e interior del caballero mecánico, tomado de [10].

Page 19: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

6

1.4.3. PIERRE KINTZING, LA TOCADORA DE TÍMPANO, 1780

En el siglo XVIII esta muñeca era lo más avanzado que se podía lograr para su

época y María Antonieta, la esposa de Luis XVI que murió guillotinada en la

Revolución Francesa, compró uno de estos autómatas, una androide que se

conoce con el nombre de la Tocadora de tímpano, realizada por el relojero Pierre

Kintzing y el ebanista de la Reina, David Roentgen. La autómata tiene la forma de

una joven, vestida con un bonito traje de seda de la época que, según cuentan, se

realizó con la tela de un vestido de la propia reina. La autómata golpea con unos

palillos las 46 cuerdas de un tímpano y puede interpretar 8 melodías diferentes.

Tras la Revolución, la autómata fue abandonada. En el año 1864, Robert Houdin

la restauró. Actualmente, la Tocadora de tímpano se encuentra en el Museo de

Artes y Oficios de París. [11].

Figura 1.4 La tocadora de tímpano, autómata mecánico, tomado de [11].

1.4.4. JOSEPH BARNETT, ROBOT ELEKTRO, 1939

La Feria Mundial de 1939 celebrada en Nueva York pretendió abrir una puerta al

futuro tras años de depresión y crisis económica en el país. Las grandes

industrias apostaron por la innovación y la tecnología e intentaron presentar al

público inventos propios de la ciencia ficción que de la realidad. La empresa

estadounidense Westinghouse fue una de las que llegó a impresionar con sus

proyectos presentados. Joseph Barnett, ingeniero de Westinghouse, logró crear a

Page 20: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

7

Elektro, un artilugio lo suficientemente sofisticado para la época y capaz de dejar

boquiabiertos a los presentes.

Elektro era un humanoide que medía 2 metros y 10 centímetros y pesaba 120

kilos, aproximadamente. Era capaz de realizar 26 movimientos diferentes, así

como fumar y caminar. También tenía los sentidos desarrollados: podía ver

gracias a unas células fotoeléctricas insertadas en sus ojos, y hablar, fruto de un

aparato reproductor incorporado con un disco en el que había grabadas 700

palabras [12].

Figura 1.5 Exterior e interior del robot Elektro, tomado de [13].

1.4.5. JOSEPH ENGELBERGER, ROBOT UNIMATE, 1962

En 1962, Joseph Engelberger junto con Jorge Devol, considerados como los

padres de la robótica industrial, construyeron el primer brazo robótico industrial

para realizar tareas peligrosas en la empresa General Motors en Nueva York, al

cual llamaron Unimate. Con un peso de aproximadamente 1800kg. era capaz de

levantar y apilar grandes piezas de metal caliente.

Page 21: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

8

Figura 1.6 Robot Unimate, primer brazo robótico industrial, tomado de [14].

1.4.6. HONDA, ROBOT E0, 1986

El E0 fue el primer intento de Honda de crear un robot humanoide que caminara.

Este robot era capaz de caminar en línea recta poniendo una pierna después de

la otra, sin embargo caminaba muy despacio necesitando de cinco segundos

entre cada paso [15].

Figura 1.7 Robot E0, primer intento de robot caminante, tomado de [15].

1.4.7. HONDA, ROBOT P1, 1993

El P1 fue el primer prototipo con forma humana de Honda. Éste disponía ya, no

sólo de dos piernas, si no de cuerpo y extremidades superiores. Era capaz de

Page 22: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

9

encender y apagar interruptores, agarrar las manijas de las puertas y llevar

objetos. La investigación sobre el P1 comenzó en 1993 y finalizó cuatro años

después [15].

Figura 1.8 Robot P1, primer prototipo de forma humana, tomado de [15].

1.4.8. HONDA, ROBOT ASIMO, 2000

El robot humanoide más avanzado del mundo hace su debut en el año 2000. El

nombre asimo proviene de advanced step in innovative mobility, es pronunciado

"ashimo" en japonés y significa "piernas también". Este robot es el resultado de

catorce años de investigación por parte de honda en la mecánica de la

locomoción bípeda.

Asimo X2 (año 2002), posee un avanzado sistema de reconocimiento facial

añadido a sus capacidades de reconocimiento por voz y gestos. Este avance es el

resultado de la colaboración en la investigación con científicos en el Instituto de

Robótica CMU (Carnegie Mellon University) de los Estados Unidos.

Asimo (año 2004), en diciembre de 2004 honda introdujo una nueva versión de

asimo que además de mejorarlo en su diseño exterior, y aumentar su autonomía,

también permitía que Asimo corriera a 3 km/h. Otro importante añadido fue la

incorporación de pulgares opuestos en sus manos pudiendo así agarrar objetos

además de sentir la fuerza ejercida cuando una persona cogía su mano.

Page 23: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

10

Todo esto añadido a la capacidad de Asimo de navegar en su entorno sin tener

que repetidamente reconstruir un mapa interno, distinguir gente de obstáculos, y

su habilidad para reconocer voces, caras, y gestos permitieron que Asimo se

acercara mucho a una posible viabilidad comercial.

Asimo (año 2005), los modelos anteriores de Asimo existen como una muestra de

la impresionante capacidad de Honda es sus avances en robótica en esta última

década pero no tienen gran utilidad aparte de presentaciones de entretenimiento

o investigación. El nuevo Asimo 2005 se crea para aplicaciones profesionales

tales como repartir café, entregar mensajes, empujar carros de servicio, etc.,

además de su nueva capacidad de correr a 6 km/h.

Para permitir a Asimo funcionar en un entorno de oficina, Honda ha desarrollado

una tarjeta de telecomunicación. Esta tarjeta almacena e inalámbricamente

comunica información del personal, así Asimo puede reconocer unívocamente a

sus compañeros de trabajo, además de aplicar otros reconocimientos faciales o

por voz para confirmar su identidad. El hecho de que Asimo detecte la fuerza

ejercida sobre sus brazos le permite aplicar presión en los carros mientras los

equilibra, o coger las manos de una persona y permitir que ésta le guíe en su

movimiento [15].

Figura 1.9 Robot Asimo, el robot humanoide más avanzado del mundo [15].

Page 24: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

11

1.5. PLATAFORMA HUMANOIDE ROBOPHILO

En la actualidad se tienen distintos tipos de robots, con los cuales se pueden

realizar diferentes actividades, dependiendo de la necesidad del usuario. La

plataforma robótica humanoide RoboPhilo diseñada por la compañía

Robobrothers Inc. es ideal para realizar tareas de imitación a los movimientos

básicos de una persona, a un excelente precio, y ha sido diseñada con las

siguientes especificaciones técnicas:

· Altura: 13" (330.2mm).

· Peso: 1.2kg (1200g) incluye batería.

· Controlador: ATmega32 – 16PU.

· 24 canales disponibles (20 utilizados para servomotores y 4 restantes para

sensores u otros actuadores).

· Batería: 6V 700mAh NiMH.

· Cargador 7.2V 1000mA (100-240 VAC 50/60Hz).

· Servomotores: SV 4032 (4.1kg-cm), SV 4104 (6.5kg-cm), SV 2030 (1.3kg-cm)

[16].

Figura 1.10 Plataforma humanoide RoboPhilo, tomado de [16].

La plataforma cuenta con 20 grados de libertad, lo que le permite realizar

movimientos similares a los de un ser humano resultando ideal para el presente

proyecto.

Page 25: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

12

1.6. SENSOR KINECT

Kinect (originalmente conocido por el nombre en clave “Project Natal”), creado

por Alex Kipman, desarrollado por Microsoft para la videoconsola Xbox 360, y

desde junio del 2011 para PC a través de Windows 7 y Windows 8, permite a los

usuarios controlar e interactuar con el computador sin necesidad de tener

contacto físico con un controlador de videojuegos tradicional, mediante una

interfaz natural de usuario que reconoce gestos, comandos de voz, y objetos e

imágenes, fácilmente programables en C#.

Microsoft Research invirtió veinte años de desarrollo en la tecnología de Kinect de

acuerdo con las palabras de Robert J.Bach. Kinect fue anunciado por primera vez

el 1 de junio del 2009 en la Electronic Entertainment Expo 2009 como "Project

Natal" [17].

Figura 1.11 Característica externa del sensor kinect, tomado de [17].

1.6.1. CARACTERÍSTICAS

El sensor de Kinect es una barra horizontal de aproximadamente 23 cm (9

pulgadas) conectada a una pequeña base circular con un eje de articulación de

rótula, y está diseñado para ser colocado longitudinalmente por encima o por

debajo de la pantalla de vídeo.

El dispositivo cuenta con una cámara RGB, un sensor de profundidad, un

micrófono de múltiples matrices y un procesador personalizado que ejecuta el

Page 26: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

13

software patentado, que proporciona captura de movimiento de todo el cuerpo en

3D, reconocimiento facial y capacidades de reconocimiento de voz.

El sensor de profundidad es un proyector de infrarrojos combinado con un sensor

CMOS monocromo que permite a Kinect ver la habitación en 3D en cualquier

condición de luz ambiental. El rango de detección de la profundidad del sensor es

ajustable gracias al software de Kinect, capaz de calibrar automáticamente el

sensor [17].

Las características técnicas del sensor Kinect son las siguientes:

· Campo de visión: 58°Horizontal, 45°Vertical y 70°Diagonal.

· Tamaño de imagen a profundidad: VGA (640x480).

· Resolución espacial x e y: 3mm.

· Resolución de profundidad: 1cm.

· Rendimiento máximo de la imagen: 60 cuadros por segundo.

· Rango de operación: 0.8m a 3.5m.

· Tamaño de imagen a color: UXGA (1600x1200).

· Micrófonos incorporados: 2.

· Entradas de audio: 4.

· Interfaz de datos: USB 2.0.

· Consumo: 2.25W.

· Dimensiones: 14cmx3.5cmx5cm.

· Temperatura de operación: 0°C a 40°C [18].

Para poder desarrollar aplicaciones con el sensor Kinect de Microsoft, el

computador debe tener las siguientes características:

· Microsoft Windows 7 , Windows 8 Developer Preview.

· Procesador de 32 o 64 bits.

· Procesador Dual-Core 2.66 GHz o superior.

· Conector USB dedicado.

Page 27: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

14

· 2GB de RAM.

· Software de desarrollo SDK para Kinect [19].

Figura 1.12 Parte interna sensor Kinect, tomado de [20].

1.6.2. FUNCIONAMIENTO

La cámara de Kinect funciona con hardware y software especializado para el

reconocimiento de imagen. La cámara tiene dos funcionalidades principales,

genera un mapa en 3D de la imagen que tiene en su campo visual y reconoce

humanos en movimiento entre los objetos de la imagen a partir de diferentes

segmentos de las articulaciones del cuerpo y un esquema en escala de grises del

rostro. La cámara de profundidad tiene un papel muy importante ya que permite

diferenciar a una persona a pesar de que ésta utilice prendas de vestir que tengan

el mismo color que el fondo, esto se puede apreciar en la Figura 1.11, en la cual

se observa la imagen a escala de grises del retrato de una persona, diferenciando

así la profundidad a la que se encuentra el sujeto [21].

Page 28: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

15

Figura 1.13 Imagen a escala de grises tomada con el sensor kinect para

diferenciar la profundidad del sujeto, tomada de [21].

Antiguos programas de software utilizaban las diferencias en color y textura para

distinguir los objetos del fondo. PrimeSense, la compañía que desarrolló Kinect, y

la compañía recientemente adquirida por Microsoft, Canesta, utilizan un modelo

diferente. La cámara transmite luz invisible para nosotros, cercana en el espectro

a los infrarrojos y puede conocer el tiempo que tarda la luz en volver al sensor tras

reflejarse en los objetos. Canesta es una empresa localizada en Sunnyvale,

California, un fabricante de chips que hacen que los dispositivos electrónicos

reaccionen a los movimientos del usuario, creando interfaces que no necesitan

periféricos con botones que sean sujetados con la mano y conectados por cable.

El sensor de profundidad actúa como un sonar, la operación no es teóricamente

complicada, si se conoce el tiempo de cada salida y llegada de la luz tras

reflejarse en un objeto, sabiendo la velocidad absoluta de la luz, se puede tener la

distancia a la cual se encuentra ese objeto. En un amplio campo visual con

objetos, el sensor Kinect trata de reconocer a qué distancia están los objetos,

distinguiendo el movimiento en tiempo real. Kinect puede llegar a distinguir la

profundidad de cada objeto con diferencias de un centímetro y su altura y ancho

con diferencias de tres milímetros. El hardware de Kinect está compuesto por la

cámara y el proyector de luz infrarroja, añadido al firmware y a un procesador que

utiliza algoritmos para procesar las imágenes tridimensionales [21].

El procesador es capaz de interpretar los movimientos que se registran en los

objetos capturados por la cámara de Kinect en eventos con significado que

Page 29: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

16

aparecen en pantalla. Los movimientos buscados por el algoritmo son

contextualizados, es decir se buscará la identificación de estos movimientos en

tiempo real para producir eventos que se requieran [21].

Figura 1.14 Composición interna, sensor Kinect [21].

Page 30: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

17

CAPÍTULO 2

ANÁLISIS DEL FUNCIONAMIENTO DE LA

PLATAFORMA HUMANOIDE ROBOPHILO

Figura 2.1 Exterior de plataforma humanoide RoboPhilo, tomado de [22].

2.1. DATOS TÉCNICOS

· Altura: 13" (330.2mm).

· Peso: 1.2kg (1200g) incluye batería.

· Controlador: ATmega32 – 16PU.

· 26 canales disponibles (20 utilizados para servomotores y 6 restantes para

sensores u otros actuadores).

· Batería: 6V 700mAh NiMH.

· Cargador 7.2V 1000mA (100-240 VAC 50/60Hz).

· Servomotores: SV 4032 (4.1kg-cm), SV 4104 (6.5kg-cm), SV 2030 (1.3kg-cm).

· 8kB de memoria flash para realizar más de 300 movimientos definidos por el

usuario.

· 20 grados de libertad.

· Manipulable en tiempo real vía control remoto infrarrojo [16].

Page 31: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

18

2.2. CHASIS Y ESTRUCTURA INTERNA

El chasis de la plataforma humanoide RoboPhilo ha sido fabricado en plástico, un

material muy liviano, al cual se le ha dado previamente ciertas características para

que pueda soportar la presión que se ejerce sobre el mismo al estar en reposo y

al realizar ciertos movimientos.

La estructura interna de RoboPhilo consta de servomotores, uniones, adaptadores

y ejes que le permiten adoptar los movimientos que el usuario requiere.

2.2.1. BRAZOS IZQUIERDO Y DERECHO.

a) b)

a)Brazo izquierdo RoboPhilo, b) Brazo derecho RoboPhilo

Figura 2.2 Estructura RoboPhilo, énfasis brazo izquierdo y derecho [23].

El brazo izquierdo de la plataforma humanoide RoboPhilo consta de las siguientes

partes principales:

· Servomotores (SV4032-B/C).

· Uniones que dan forma a mano y muñeca (RB027-A/B).

· Adaptadores plásticos para servomotores (RB003-A/B).

· Eje/Adaptador de servomotor (RB001).

Page 32: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

19

Brazo izquierdo RoboPhilo.

Figura 2.3 Parte interna de brazo izquierdo RoboPhilo [23].

Las partes principales del brazo derecho son exactamente las mismas,

únicamente cambia el tipo de numeración de las partes.

Los movimientos principales que pueden realizar los brazos izquierdo y derecho

son los siguientes:

Límite interno

Límite externo

Figura 2.4 De izquierda a derecha, límite interno y externo de movimiento del

brazo derecho RoboPhilo [23].

Page 33: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

20

2.2.2. PIERNAS IZQUIERDA Y DERECHA

a) b)

a)Pierna izquierda RoboPhilo, b) Pierna derecha RoboPhilo

Figura 2.5 Estructura RoboPhilo, énfasis piernas izquierda y derecha [23].

La pierna izquierda de la plataforma humanoide RoboPhilo consta de las

siguientes partes principales:

· Servomotores (SV4032-D/E, SV4140).

· Pie (RB006).

· Adaptadores plásticos para servomotores (RB003-A/B, RB035).

· Eje/Adaptador de servomotor (RB001, RB002, RB036).

· Rodilla (RB011-L)

· Sujetadores para servomotor pie (RB005, RB007).

Page 34: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

21

Figura 2.6 Parte interna de pierna izquierda RoboPhilo [23].

Las partes principales de la pierna derecha son exactamente las mismas,

únicamente cambia el tipo de numeración de las partes.

Los movimientos principales que pueden realizar las piernas izquierda y derecha

son los siguientes:

Figura 2.7 Límites de Movimiento de la pierna izquierda RoboPhilo [23].

Page 35: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

22

2.2.3. TORSO Y CABEZA

Figura 2.8 Estructura RoboPhilo, énfasis torso y cabeza [23].

El torso y la cabeza de la plataforma humanoide RoboPhilo constan de las

siguientes partes principales:

· Servomotores (SV4032-A/C, SV2031).

· Cabeza (RB032-A/B).

· Eje para cabeza (RB033).

· Adaptadores plásticos para servomotores (RB020, RB003-B, RB013, RB024-

S, RB025-S).

· Eje/Adaptador de servomotor (RB002).

· Soporte para torso (RB019).

· Sujetadores internos para servomotores torso (RB018-A/B).

· Base para placa de control (RB021).

· Base de torso y compartimento de batería (RB016, RB017).

Page 36: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

23

Figura 2.9 Parte interna de torso y cabeza RoboPhilo [23].

Los movimientos principales que pueden realizar el torso y la cabeza

respectivamente son los siguientes:

a) b)

a) Torso RoboPhilo, b) Cabeza RoboPhilo

Figura 2.10 Límites de movimiento del torso y la cabeza RoboPhilo [23].

Page 37: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

24

2.3. SISTEMA DE LOCOMOCIÓN

Para poder efectuar los movimientos, el robot humanoide RoboPhilo utiliza 20

servomotores analógicos, que le proveen 20 grados de libertad (GDL).

2.3.1. SERVOMOTOR ANALÓGICO

Los servomotores poseen un motor de corriente continua, que gira a alta

velocidad, una serie de engranajes para producir la reducción de velocidad de giro

y aumentar su capacidad de torque, un potenciómetro conectado al eje de salida

(encoder) y un circuito de control de la realimentación.

Estos servomotores cuentan con tres cables: alimentación para el motor y la placa

de control (a través de dos cables, positivo y negativo), y una señal de control que

determina la posición que se requiere. La fuente de alimentación de los

servomotores está entre 4,8 y 6 voltios.

El estándar de la señal de control para todos los servomotores de este tipo,

elegido para facilitar el uso en radiocontrol, es un pulso de onda cuadrada de

aproximadamente 1,5 milisegundos que se repite a un ritmo de entre 10 a 22

milisegundos. Si el ancho de pulso disminuye, el servomotor se mueve de manera

proporcional hacia uno de sus extremos. Si el ancho de pulso aumenta, el

servomotor gira hacia el extremo opuesto. Generalmente, el rango de giro de este

tipo de servomotores está entre 90° y 180° [24].

Page 38: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

25

Figura 2.11 Señal y posición de servomotores, tomado de [25].

Para la generación de los pulsos de onda cuadrada se utiliza la técnica llamada:

modulación por ancho de pulso o Pulse Width Modulation (PWM). Esta técnica

nos permite controlar fácilmente el ancho del pulso de la onda cuadrada que se

debe enviar a los servomotores para que realicen cierto tipo de movimiento.

2.4. UNIDAD DE CONTROL ROBOPHILO

Figura 2.12 Placa de control principal – RoboPhilo, tomado de [23].

Máximo

Medio

Mínimo

Page 39: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

26

La placa de control principal de RoboPhilo tiene las siguientes características:

· Microcontrolador ATmega32.

32kb de memoria flash.

16MHz de frecuencia de operación.

3 Interrupciones externas.

Comunicación SPI, I2C, UART.

8 canales para conversión A/D a 10 bits de resolución.

1 comparador analógico.

2kb de memoria SRAM.

1024 Bytes de memoria EEPROM.

Rango de voltaje de operación: 2.7V a 5.5V.

3 Timers.

4 canales PWM.

· 20 conectores para servomotores.

· 3 canales para conversión Analógica/Digital disponibles.

· 3 conectores de propósito general (comunicación serial, infrarrojo, etc.)

· Conector para comunicación serial.

· Adaptador para cargador de baterías.

Esta unidad de control es la encargada de generar las señales de onda cuadrada

mediante (PWM) para el movimiento de los servomotores, además de obtener los

datos que envía el computador para luego interpretarlos y realizar cierta acción de

control.

2.5. ANÁLISIS UNIDAD DE CONTROL ROBOPHILO

Al estar previsto utilizar 12 canales de PWM en total, para el control de la

plataforma humanoide RoboPhilo y al tener la unidad de control provista en la

plataforma RoboPhilo que cuenta únicamente con 4 canales PWM para el

movimiento de los servomotores, para los demás servomotores se debería utiliza

una técnica de generación de PWM por software. La técnica de generación de

Page 40: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

27

PWM por software al ser utilizada para el control de 8 servomotores adicionales

que harían falta para el requerimiento, ralentizaría la comunicación y las acciones

de control que la unidad de control pueda estar ejecutando. Además, esta técnica

produce ruido e inestabilidad a los servomotores llamada “jittering” que está

definida como la variación de la amplitud de una onda, por lo tanto distorsión de la

señal por fluctuaciones en la fuente de alimentación o por vibraciones mecánicas

[27]. Es por este motivo que la unidad de control fue reemplazada con otra unidad

de control de desarrollo llamada “Axon II” que brinde más canales PWM y otras

prestaciones que benefician el correcto desenvolvimiento del presente proyecto.

2.6. UNIDAD DE CONTROL AXON-II

Figura 2.13 Vista en 3D de la unidad de control Axon-II [26]

Page 41: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

28

La unidad de control de desarrollo Axon-II tiene las siguientes características

técnicas:

· 58 pines de entrada/salida en total.

· 16 canales de conversión analógica/digital.

· Capaz de controlar más de 25 servomotores*.

· Comunicación I2C, SPI.

· Comunicación Serial: 3 UART + USB.

· 8 interrupciones externas.

· 15 canales PWM.

· 64kB Flash.

· 4kB EEPROM.

· 8kB SRAM.

· 6 Timers (cuatro de 16-bit, y dos de 8-bit).

· Pre-programado mediante bootloader, no se require programador.

· LED display numérico.

· Bus de fuentes de 3.3V, 5V y voltaje sin regular.

· Soporte de memorias externas (puerto A) [26].

*Los servomotores que se especifican son la unión entre PWM generados por

hardware y PWM generados por software.

Page 42: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

29

2.7. FUENTE DE ALIMENTACIÓN/CARGADOR DE BATERÍA

a) b)

a) Colocación de batería en extensión, b) Correcta inserción de la batería

en RoboPhilo.

Figura 2.14 Correcta polaridad e inserción de batería - RoboPhilo [23].

Las características técnicas tanto de la batería como del cargador son las

siguientes:

Batería: 6V 700mA/h Ni-MH (RBKB05051)

Cargador: 7.2V 1A (RBCGSAW08)

a) b)

a) Batería (RBKB05051), b) Cargador (RBCGSAW08)

Figura 2.15 Batería y cargador de plataforma RoboPhilo [28].

La plataforma RoboPhilo con la que se trabaja en el presente proyecto, cuenta

con 2 baterías de las mismas características, para aumentar su tiempo de

autonomía.

Page 43: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

30

Al momento de cargar las baterías, el fabricante recomienda un tiempo máximo

de 4 a 5 horas por batería ya que un período mayor al establecido podría dañar

seriamente la vida útil de las mismas [23].

2.8. COMUNICACIÓN SERIAL La plataforma humanoide RoboPhilo cuenta con un puerto para la comunicación

serial (Figura 2.17) por medio del cual se puede realizar la programación de los

diferentes movimientos y calibración, mediante un cable especial (placa de control

original).

La nueva placa de control de desarrollo “Axon II” utiliza un convertidor de USB a

serial para la comunicación y programación de las diferentes rutinas, en el

Capítulo 4 se explicará a detalle cómo funciona la comunicación y programación

por medio de este puerto (Figura 2.18).

Figura 2.17 Esquema de conexión hacia el puerto serial de RoboPhilo [23].

Figura 2.18 Esquema de puerto de comunicación USB a serial “Axon II” [26].

Conector USB

Convertidor USB a serial

Page 44: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

31

CAPÍTULO 3

DISEÑO E IMPLEMENTACIÓN DEL SISTEMA DE

CONTROL

3.1. SENSOR KINECT Y SEÑALES

Figura 3.1 Dimensiones del sensor Kinect [29].

3.1.1. OBTENCIÓN DE DATOS

El sensor de Kinect adquiere imágenes de video con un sensor CMOS de colores

a una frecuencia de 30 Hz, en colores RGB de 32-bits y resolución VGA de

640×480 pixeles. El canal de video monocromo CMOS es de 16-bit, resolución

QVGA de 320×240 pixeles con hasta 65536 niveles de sensibilidad (Figura 3.2).

Page 45: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

32

Figura 3.2 Composición interna, sensor Kinect [29].

Para calcular distancias entre un cuerpo y el sensor, éste emite un haz láser

infrarrojo que proyecta un patrón de puntos sobre los cuerpos cuya distancia se

determina. Una cámara infrarroja capta este patrón y por hardware calcula la

profundidad de cada punto. El rango de profundidad del sensor de Kinect está

entre 0.4 y 4 metros (Figura 3.3). Existen 2 modos (Default y Near) para

determinar distancias. En el presente proyecto se ha elegido el modo “Default”

ya que permite medir hasta 4 metros de distancia con respecto al sensor.

Figura 3.3 Rango de distancias admitidas por el sensor Kinect [29].

Page 46: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

33

El ángulo de vista es de 58° horizontales y 45° verticales. Por otro lado el sensor

cuenta con un servomotor interno que le permite orientarse, hacia arriba o hacia

abajo incrementando el ángulo de vista hasta en 27°.

El array del micrófono tiene cuatro cápsulas, y opera con cada canal procesando

en 16-bit de audio con un radio de frecuencia de 16 kHz. La cámara de Kinect

funciona con hardware y software propios para el reconocimiento de imagen.

La cámara tiene dos funciones principales:

· Generar un mapa en 3D de la imagen que tiene en su campo visual.

· Reconocer humanos en movimiento entre los objetos de la imagen a partir de

diferentes segmentos de las articulaciones del cuerpo y un esquema en escala

de grises.

En un amplio campo visual con objetos, la cámara Kinect trata de reconocer a qué

distancia están los distintos objetos, distinguiendo movimientos en tiempo real.

El sensor Kinect puede llegar a distinguir la profundidad de cada objeto con una

resolución de 1 centímetro y las estimaciones de la altura y ancho con una

exactitud de aproximadamente 3 milímetros. El hardware de Kinect está

compuesto por la cámara y el proyector de luz infrarroja, añadido al firmware y a

un procesador que utiliza algoritmos para procesar las imágenes tridimensionales

[29].

Page 47: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

34

Figura 3.4 Funcionamiento del sensor monocromático [29].

3.1.2. PROCESAMIENTO DE SEÑALES

El procesador del sensor Kinect es capaz de interpretar los movimientos que se

registran de los objetos capturados por la cámara en “eventos con significado”

que aparecen en pantalla. Los movimientos buscados por el algoritmo son

contextualizados. Por ejemplo, si se está aplicando el sensor Kinect a un juego

que requiere agacharse o tumbarse, el algoritmo buscará la identificación de

estos movimientos en tiempo real para producir eventos en pantalla [29].

El sensor Kinect toma los datos proporcionados por el chip de identificación de

profundidad y estima la posición de cada una de las articulaciones de una

persona y luego la pose que la persona toma en un determinado instante. La

estimación de la pose de una persona lo logra, mediante patrones en pruebas con

diferente tipo de personas de distintos tamaños y contexturas.

Page 48: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

35

Figura 3.5 Estimación de posiciones mediante el sensor Kinect [30].

3.1.3. DETECCIÓN DE ARTICULACIONES MEDIANTE EL SENSOR KINECT

Normalmente, el flujo de datos “sin modificar” que suministra el sensor Kinect

proporciona la información de 20 puntos de una persona cuando está dentro del

rango visual admisible (Figura 3.6). De esta manera, es posible obtener la

información posicional en tiempo real y en los 3 ejes cartesianos de estos 20

puntos por persona. Cabe destacar que la información recolectada está en un

formato imagen de 640x480 pixeles tomada a una velocidad de 30 FPS (Frames

Per Second o Cuadros por segundo).

Con el fin de obtener todas las trayectorias que realiza una persona, es necesario

registrar y archivar los 20 puntos que entrega el dispositivo. Cabe destacar que

esta es la funcionalidad más importante que tiene el sensor para la aplicación

Page 49: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

36

buscada, dado que otorga la posibilidad de tener la posición tridimensional en

cada instante de tiempo. Si se toma una sucesión dinámica de estas entregas, se

podrá obtener todas las trayectorias de todos las partes del cuerpo de una

persona [29].

Figura 3.6 Conjunto de 20 puntos que puede detectar el sensor Kinect [29].

3.2. CINEMÁTICA INVERSA Para poder enviar los ángulos correctos a los actuadores de la plataforma

humanoide RoboPhilo se debe realizar un proceso previo con los datos obtenidos

a partir del sensor Kinect, este proceso es conocido como cinemática inversa.

Page 50: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

37

3.2.1. CONCEPTO TEÓRICO

El problema cinemático inverso consiste en encontrar los valores que deben

adoptar las coordenadas articulares del robot q1, q2, . . . , qn (Figura 3.7), para

que su extremo se posicione y oriente según una determinada localización

espacial. Al contrario del problema cinemático directo, el cálculo de la cinemática

inversa no es sencillo ya que consiste en la resolución de una serie de ecuaciones

fuertemente dependiente de la Configuracióndel robot, además de existir

diferentes n − uplas q = [q1, q2, . . . , qn] que resuelven el problema.

Figura 3.7 Coordenadas articulares de un brazo robótico [31].

En la actualidad existen procedimientos genéricos que permiten programar

algoritmos de resolución de cinemática inversa y así obtener la n−upla de valores

articulares que posicionen y orienten el extremo final. Sin embargo, el principal

inconveniente de estos procedimientos es que son métodos numéricos iterativos,

que no siempre garantizan tener la solución en el momento adecuado.

De esta manera, a la hora de resolver el problema cinemático inverso es mucho

más adecuado encontrar una solución cerrada. Es decir, encontrar una relación

matemática explícita de la forma presentada en (3.1).

Page 51: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

38

Para poder conseguir esta relación suele ser habitual emplear métodos

geométricos, que consisten en la utilización de las relaciones trigonométricas y la

resolución de los triángulos formados por los elementos y articulaciones del robot.

La mayoría de los robots suelen tener cadenas cinemáticas relativamente

sencillas, y los tres primeros grados de libertad (GDL), que posicionan al robot en

el espacio, suelen tener una estructura planar. Esta condición facilita la resolución

de la n − upla. Además, los tres últimos grados de libertad suelen usarse para la

orientación, lo cual permite la resolución desacoplada (desacoplo cinemático) de

la posición del extremo del robot. Como alternativa para resolver el mismo

problema se puede recurrir a manipular directamente las ecuaciones

correspondientes al problema cinemático directo. Es decir, a partir de la relación

entre la matriz de transformación y las ecuaciones en función de las coordenadas

articulares q = [q1, q2, . . . , qn], es posible despejar las n variables articulares “qi”

en función de las componentes de los vectores n, o, a y p como se muestra en la

Ecuación (3.2) [32].

Page 52: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

39

3.2.2. DEDUCCIÓN DE LAS ECUACIONES DE CINEMÁTICA INVERSA PARA

UN ROBOT CON TRES GRADOS DELIBERTAD ROTACIONALES

Figura 3.8 Robot con tres grados de libertad rotacionales [32].

El robot humanoide RoboPhilo presenta tres grados de libertad en cada una de

sus extremidades, es por esto que se deducen las ecuaciones de cinemática

inversa como se muestra a continuación:

Tomando como referencia la Figura 3.8, Se ubica el primer triángulo rectángulo

para hallar el valor de q1 como se muestra en la Figura 3.9.

Figura 3.9 Triángulo rectángulo utilizado para deducir el ángulo q1.

Del triángulo rectángulo de la Figura 3.9 se puede deducir lo siguiente:

r

Z

X

Y

(px, py, pz)

py px

a2

l3

q1

q1

px

py

pz

Page 53: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

40

Por lo tanto:

Considerando que los eslabones de la Figura 3.9 se encuentran situados en un

mismo plano y utilizando el teorema del coseno, se tendrá:

Para el mismo triángulo rectángulo de la Figura 3.9:

Ahora se utiliza el triángulo rectángulo que se forma entre el radio r y el eje z

(Figura 3.10) para obtener la distancia entre un eslabón y el efector final:

Figura 3.10 Triángulo rectángulo utilizado para deducir la distancia entre un

eslabón y el efector final.

Del triángulo rectángulo de la Figura 3.10 se puede deducir lo siguiente:

r

pz d

Page 54: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

41

Se reemplaza r2 de la Ecuación 3.4 y se obtiene:

Para la deducción del segundo ángulo, se utiliza la distancia hallada en la

Ecuación 3.5 y el triángulo de la Figura 3.11 como se muestra a continuación:

Figura 3.11 Triángulo utilizado para deducir el ángulo entre eslabones.

Se utiliza ley de cosenos para el ángulo q2, como se muestra en el siguiente

análisis:

Por lo tanto:

Se reemplaza d2 de la Ecuación 3.5 y se obtiene:

q2

d

a2

l3

Page 55: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

42

El ángulo faltante se obtiene mediante una modificación a la Figura 3.11 (Figura

3.12), como se muestra a continuación:

Figura 3.12 Triángulo utilizado para deducir el ángulo q3.

Se puede obtener el ángulo Ȉ a partir del ángulo encontrado en la Ecuación 3.6,

utilizando ángulos suplementarios, de la siguiente manera:

Se reemplaza el ángulo q2 de la Ecuación 3.6 y se obtiene:

Se halla una relación entre el ángulo Ȉ y m3 a partir del triángulo rectángulo que

se forma en la Figura 3.12, como se muestra a continuación:

Por lo tanto:

q3

q2

d

a2

l3 l

Ȉ

b2

m3

Page 56: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

43

Se reemplaza Ȉ de la Ecuación 3.7 y se obtiene:

Ahora se obtiene una relación entre el ángulo Ȉ y b2 a partir del triángulo

rectángulo que se forma en la Figura 3.12, como se muestra a continuación:

Por lo tanto:

Se reemplaza Ȉ de la Ecuación 3.7 y se obtiene:

Con los valores de m3 y b2 se puede encontrar una relación para hallar el ángulo

q3 con los datos que se encuentran en la Figura 3.12, de la siguiente manera:

Se reemplaza m3 y b2 en la anterior Ecuación y se obtiene lo siguiente:

Page 57: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

44

3.2.3. IMPLEMENTACIÓN DE LAS ECUACIONES DE CINEMÁTICA

INVERSA EN LA PLATAFORMA HUMANOIDE ROBOPHILO

Para la implementación de las ecuaciones de cinemática inversa en la plataforma

humanoide RoboPhilo, se presenta un esquema de la plataforma en SolidWorks,

de esta manera se pueden analizar los movimientos y los ángulos necesarios

para su operación.

Figura 3.13 Plataforma RoboPhilo en posición inicial.

Como se puede apreciar en la Figura 3.13, la plataforma humanoide se encuentra

en estado de reposo o estado inicial y es desde esa posición de la que parte el

análisis. El análisis de los movimientos de la plataforma se hace tomando en

cuenta cada una de las extremidades por separado.

Page 58: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

45

Como se pudo observar en la sección 3.1.3, el sensor kinect entrega información

de las articulaciones de la persona y son estos datos los que se utiliza para el

cálculo de los ángulos que debe enviarse como información a cada uno de los

servomotores. Para identificar las articulaciones de una persona, se utiliza la

nomenclatura descrita en la Figura 3.14.

Descripción de articulaciones

Número de articulación Nombre de articulación Abreviatura

1 Cabeza cbz

2 Hombro central hmc

3 Hombro izquierdo hmi

4 Hombro derecho hmd

5 Codo Izquierdo cdi

6 Codo derecho cdd

7 Muñeca izquierda mui

8 Muñeca derecha mud

9 Mano izquierda mni

10 Mano derecha mnd

11 Espina sp

12 Cadera central crc

13 Cadera izquierda cri

14 Cadera derecha crd

15 Rodilla izquierda rdi

16 Rodilla derecha rdd

17 Tobillo izquierdo tbi

18 Tobillo derecho tbd

19 Pie izquierdo pii

20 Pie derecho pid

Figura 3.14 Descripción de articulaciones y abreviatura.

Page 59: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

46

En primera instancia se analizan los movimientos del brazo izquierdo de

RoboPhilo:

Figura 3.15 Plataforma RoboPhilo, movimiento de brazo izquierdo.

Para el análisis del movimiento del brazo izquierdo de RoboPhilo (Figura 3.13), se

puede utilizar el esquema que se presenta a continuación:

Page 60: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

47

Figura 3.16 Esquema de articulaciones para el análisis del brazo izquierdo.

Como se puede observar en la Figura 3.16 se presentan las articulaciones de una

persona, pero debido a que en la plataforma humanoide se utilizan servomotores

para el control de los movimientos, el esquema de articulaciones cambia, además

se debe considerar la orientación de los ejes. La orientación que se tomará como

referencia se presentan en la Figura 3.17.

Figura 3.17 Orientación de ejes coordenados, que se tomarán como referencia.

En el caso particular de la plataforma humanoide RoboPhilo, los movimientos en

la articulación del hombro se realizan mediante dos servomotores, es por esto que

se debe diferenciar los movimientos de cada uno de los servomotores. El primer

servomotor mueve el brazo desde la articulación del hombro en el plano xy y a

ese servomotor se lo llama hmi, al otro servomotor que controla el movimiento en

el plano yz se lo denomina bri (Figura 3.18). El movimiento del codo tanto de la

cbz

hmc hmi

cdi

x x

y

z

Page 61: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

48

persona como de la plataforma son los mismos, así que la denominación cdi

continúa siendo la misma.

Figura 3.18 a) Esquema de articulaciones RoboPhilo, plano xy b) Esquema de

articulaciones RoboPhilo, plano yz

Figura 3.19 Gráfica del movimiento del brazo izquierdo de la plataforma,

únicamente en el plano xy.

mui a)

cbz

hmc

hmi cdi

x

y

b) z

y

cbz

hmc hmi

cdi bri

mui

hmi

y

x

Page 62: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

49

Figura 3.20 Gráfica del movimiento del brazo izquierdo de la plataforma,

únicamente en el plano yz.

Figura 3.21 Gráfica del movimiento del codo izquierdo de la plataforma.

bri

y

z

cdi

Page 63: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

50

Teniendo en cuenta las gráficas de la Figura 3.18, se puede comenzar a hallar los

ángulos correspondientes a cada servomotor, esto es: hmi, bri y cdi.

Se toma la muñeca como efector final para realizar el cálculo de los ángulos del

brazo izquierdo de RoboPhilo y como eje se toma el hombro izquierdo, como se

muestra en la Figura 3.18.

Para el ángulo cdi, se toma como referencia la Ecuación 3.6 deducida

anteriormente, de la siguiente manera:

Siendo:

a2 = distancia entre hmi y cdi

l3 = distancia entre cdi y mui

Los puntos px, py y pz se refieren a la posición de la muñeca izquierda, en cada

uno de los ejes coordenados, esto es:

px=muix

py=muiy

pz=muiz

Para el ángulo bri, se toma como referencia la Ecuación 3.3 deducida

anteriormente, de la siguiente manera:

Pero en este caso, como se observa en la Figura 3.20, este ángulo corresponde

al movimiento en los ejes yz, por lo tanto, la Ecuación quedaría de la siguiente

manera:

Page 64: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

51

El ángulo hmi se calcula mediante el análisis del gráfico de la Figura 3.8.

Figura 3.22 Figura tomada de 3.8 para el cálculo del ánglo hmi.

Como se puede observar, en la Figura 3.22 se muestran los dos ángulos de los

cuales depende hmi y estos son q3 y q3’.

En primer lugar se debe utilizar el triángulo de la Figura 3.12 como se muestra a

continuación:

Figura 3.23 Triángulo tomado de la Figura 3.22, para el cálculo del ángulo q3.

py

r

Y

Z

X

(px, py, pz)

px pz

a2

l3

q3

q3'

l3Sen(180-q2)

l3Cos(180-q2) q3

cdi

a2

l3lll3

Page 65: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

52

De la Figura 3.23 se puede deducir la siguiente Ecuación:

Además, se debe tomar en cuenta el ángulo entre el plano yz, adaptación de

Ecuación 3.4 y el eje x, este ángulo es q3’, como se muestra en la Figura 3.24.

Figura 3.24 Triángulo rectángulo tomado de la Figura 3.22 para el cálculo del

ánglo q3’.

El lado r se encuentra a partir de la Ecuación 3.4, de la siguiente manera:

Al haber un cambio en las coordenadas respecto a la deducción y la utilización en

la plataforma, se debe reemplazar px por pz, como se muestra a continuación:

Por lo tanto:

Entonces, a partir de la Figura 3.24 el ángulo q3’ se puede hallar de la siguiente

manera:

r

px

q3’

Page 66: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

53

Como se dedujo de la Figura 3.22, el ángulo hmi está formado por el ángulo q3

(Ecuación 3.12 ) y q3’ (Ecuación 3.13), de la siguiente forma:

Figura 3.25 a) Relación entre ángulos q3 y q3’ codo arriba. a) Relación entre

ángulos q3 y q3’ codo abajo.

Como se puede observar de la Figura 3.25, el ángulo hmi en ambos casos está

compuesto por:

En el caso a) de la Figura 3.25, la expresión 3.14 es válida ya que el ángulo q3 es

negativo y esto da como resultado una suma entre q3 y q3’.

En el caso b) de la Figura 3.25, la expresión 3.14 es válida ya que tanto el ángulo

q3 como el ángulo q3’ son positivos y eso da como resultado un ángulo hmi inferior

a q3’.

Por lo tanto, reemplazando las Ecuaciones 3.12 y 3.13 en la Ecuación 3.14 se

obtiene:

r

hmi q3’

q3

py

a)

r

hmi

q3’

q3

py

b)

Page 67: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

54

Figura 3.26 Plataforma RoboPhilo, movimiento de brazo derecho.

Para el brazo derecho se realiza exactamente el mismo análisis y se utilizan las

mismas ecuaciones, por lo tanto:

De la Ecuación 3.10, para el codo derecho se tiene:

Siendo:

a2 = distancia entre hmd y cdd

l3 = distancia entre cdd y mud

Page 68: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

55

Los puntos px, py y pz se refieren a la posición de la muñeca derecha, en cada

uno de los ejes coordenados, esto es:

px=mudx

py=mudy

pz=mudz

De la Ecuación 3.11, para el brazo derecho se tiene:

De la Ecuación 3.15, para el hombro derecho se tiene:

Figura 3.27 Plataforma RoboPhilo, movimiento de pierna izquierda.

Page 69: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

56

En el caso de la pierna izquierda de RoboPhilo se debe tomar en cuenta la

siguiente consideración para el ángulo de la cadera:

El movimiento de la pierna en el plano yz tiene como ángulo pri y es el

correspondiente con el ángulo bri del brazo izquierdo, el movimiento de ángulo de

la rodilla rdi es el correspondiente con el ángulo del codo izquierdo y el

movimiento de la pierna en el plano xy tiene como ángulo cri y es el

correspondiente con el ángulo hmi del brazo izquierdo.

De acuerdo a lo expuesto en el párrafo anterior, se pueden describir las

ecuaciones de los ángulos de la pierna izquierda, de la siguiente manera:

Para el movimiento de la pierna izquierda en el plano yz, se toma la Ecuación

3.11.

En el movimiento del ángulo de la rodilla izquierda, se toma de la Ecuación 3.10.

Siendo:

a2 = distancia entre cri y rdi

l3 = distancia entre rdi y tbi

Los puntos px, py y pz se refieren a la posición del tobillo, en cada uno de los ejes

coordenados, esto es:

px=tbix

py=tbiy

pz=tbiz

Para el movimiento de la pierna en el plano xy, se toma la Ecuación 3.15.

Page 70: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

57

Figura 3.28 Plataforma RoboPhilo, movimiento de pierna derecha.

Para el movimiento de la pierna derecha en el plano yz, se toma la Ecuación 3.19.

En el movimiento del ángulo de la rodilla derecha, se toma de la Ecuación 3.20.

Siendo:

a2 = distancia entre crd y rdd

l3 = distancia entre rdd y tbd

Los puntos px, py y pz se refieren a la posición del tobillo, en cada uno de los ejes

coordenados, esto es:

Page 71: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

58

px=tbdx

py=tbdy

pz=tbdz

Para el movimiento de la pierna en el plano xy, se toma la Ecuación 3.21.

Por lo tanto, los datos que serán enviados al microcontrolador para que puedan

ser traducidos a pulsos hasta los servomotores son:

· cdi (servomotor de codo izquierdo)

· bri (servomotor de brazo izquierdo)

· hmi (servomotor de hombro izquierdo)

· cdd (servomotor de codo derecho)

· brd (servomotor de brazo derecho)

· hmd (servomotor de hombro derecho)

· rdi (servomotor de rodilla izquierda)

· pri (servomotor de pierna izquierda)

· cri (servomotor de cadera izquierda)

· rdd (servomotor de rodilla derecha)

· prd (servomotor de pierna derecha)

· crd (servomotor de cadera derecha)

3.3. DESARROLLO DEL SOFTWARE DE CONTROL

3.3.1. LENGUAJES DE PROGRAMACIÓN SELECCIONADOS

Para el manejo de la placa de desarrollo Axon II se utiliza C como lenguaje de

programación por las ventajas que este presenta frente a los demás lenguajes.

Page 72: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

59

Debido a la eficiencia del código que produce, es uno de los lenguajes de

programación más utilizados para el desarrollo de sistemas y aplicaciones. El

lenguaje C tiene características fuertemente arraigadas de un lenguaje de medio

nivel pero con particularidades de un lenguaje de bajo nivel, es decir que en el

mismo código en el que se implementa un algoritmo en C se pueden añadir

bloques de programación en lenguaje ensamblador, si el programador así lo

requiere [33].

Para la implementación de los algoritmos de cinemática inversa se utiliza C#

como lenguaje de programación, ya que posibilita la realización de cálculos

complejos, además de que el sensor kinect para Windows trabaja a un nivel

óptimo en este lenguaje y es el recomendado por Microsoft debido al Kit de

Desarrollo de Software (Software Development Kit - SDK), el cual se incorpora en

este lenguaje.

A continuación se muestra ventajas que presenta este lenguaje de programación,

en comparación con el lenguaje C:

· Eliminación del uso punteros, en C# no se necesitan.

· No hay que preocuparse por archivos de cabecera ".h".

· No importa el orden en que hayan sido definidas las clases ni las funciones.

· No hay necesidad de declarar funciones y clases antes de definirlas.

· No existen las dependencias circulares.

· Soporta definición de clases dentro de otras.

· No existen funciones, ni variables globales, todo pertenece a una clase.

· Todos los valores son inicializados antes de ser usados (automáticamente se

inicializan al valor estandarizado, o manualmente se pueden inicializar desde

constructores estáticos).

· Menos propenso a errores [34].

Page 73: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

60

3.3.2. SOFTWARE DE PROGRAMACIÓN SELECCIONADOS

Para la implementación de los algoritmos en lenguaje C de la plataforma

humanoide RoboPhilo, se ha seleccionado AVR Studio 6.0 como el software de

programación.

Figura 3.29 AVR Studio Versión 6.0 de ATMEL, tomado de [35].

Atmel® Studio 6 es un ambiente de desarrollo integrado (IDE) para desarrollo y

debugging de aplicaciones basadas en microcontroladores Atmel ARM® Cortex

TM y Atmel AVR®. Atmel Studio 6 proporciona un entorno compacto y fácil de

usar para escribir, compilar y hacer debug a las aplicaciones escritas en C/C++ o

en código ensamblador. Atmel Studio 6 es gratis y viene con una gran librería de

código fuente libre con 1.100 ejemplos de proyectos para ARM y AVR, para

agilizar el proceso de diseño.

Atmel® Studio 6 incluye un compilador GCC C y C++, ensamblador, un

simulador, y una interfaz. Haciendo el desarrollo de código más fácil.

Comenzar un nuevo proyecto es muy fácil, ya que el New Project Wizard

conFigura todos los seteos del compilador y el linker, quedando todo listo para

Page 74: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

61

comenzar a escribir el código. Se puede comenzar creando un proyecto en blanco

o seleccionar uno de los más de 1000 proyectos de ejemplo disponibles.

El editor de Atmel Studio 6 simplifica la edición del código, dejándolo más

eficiente. Escribiendo algunas pocas letras de un símbolo, Atmel Studio 6 muestra

un listado de sugerencias.

El “Solution Explorer” presenta una vista organizada de todos los proyectos y

archivos, ofreciendo un acceso simple a comandos que se aplican a ellos. Se

puede crear fácilmente aplicaciones conteniendo múltiples microcontroladores y

desarrollar el código para todos ellos dentro de la misma solución [36].

Para el manejo del sensor kinect y los cálculos de cinemática inversa que se

realizan en C#, se utiliza Microsoft Visual C# Express 2010 como software de

programación.

Figura 3.30 Microsoft Visual C# Express 2010, tomado de [37].

Visual C# es una implementación del lenguaje de C# de Microsoft. Visual Studio

ofrece compatibilidad con Visual C# con un completo editor de código, un

compilador, plantillas de proyecto, diseñadores, asistentes para código, un

Page 75: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

62

depurador eficaz y de fácil uso y otras herramientas. La biblioteca de clases de

.NET Framework ofrece acceso a numerosos servicios de sistema operativo y a

otras clases útiles y adecuadamente diseñadas que aceleran el ciclo de desarrollo

de manera significativa [38].

3.3.3. TIPO DE PROGRAMADOR

Para poder programar la placa de desarrollo Axon II, se utiliza un bootloader, el

cual es un programa que se graba una sola vez en el microcontrolador. Este

programa permite grabar el código hacia el microcontrolador mediante

comunicación serial y no por el puerto SPI como comúnmente se hace. El hecho

de programar mediante comunicación serial hace que no sea necesario utilizar

programadores comerciales adicionales sino únicamente un cable USB y un

convertidor de USB a serial que en el caso de la placa de desarrollo Axon II ya se

encuentra incluido. Otra de las ventajas es que no es necesario programar los

fusibles ni el cristal del microcontrolador, lo cual muchas veces bloquea a los

microcontroladores Atmel AVR o entorpece su funcionamiento (Figura 2.18).

3.3.4 IMPLEMENTACIÓN DE SOFTWARE Y DIAGRAMAS DE FLUJO

Para la implementación de los algoritmos de control en el microcontrolador, se

utiliza un Atmega640 de la serie Atmel AVR (Figura 3.31), el cual recibe

únicamente los datos ya procesados en el computador y los transforma en pulsos

hacia los servomotores.

La ubicación de los 12 servomotores (con su respectiva nomenclatura) que se

utilizan en la placa de desarrollo Axon II se muestra en la Figura 3.31.

Page 76: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

63

Figura 3.31 Esquema de placa de desarrollo Axon II con la posición de los

servomotores.

Cada trio de servomotores, los mismos que se muestran en la Figura 3.31

pertenecen a un timer de 16 bits del microcontrolador, como se muestra en la

Figura 3.32.

N° de Servomotor

Nombre de Servomotor

Puerto del microcontrolador

Pin del Microcontrolador

Timer del microcontrolador

1 cdi E3 5 OC3A

Timer 3 2 bri E4 6 OC3B

3 hmi E5 7 OC3C

4 cdd L3 38 OC5A

Timer 5 5 brd L4 39 OC5B

6 hmd L5 40 OC5C

cdi

bri

hmi

cdd

cdd

brd

brd

hmd

prd

rdd

crd

pri

rdi

cri

Page 77: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

64

7 rdi H4 16 OC4B

Timer 4 8 pri H3 15 OC4A

9 cri H5 17 OC4C

10 rdd B6 25 OC1B

Timer 1 11 prd B5 24 OC1A

12 crd B7 26 OC1C

Figura 3.32 Ubicación de servomotores en la placa de desarrollo Axon II.

El robot imitador, tiene dos modos de operación. El primer modo “Suspendido”, en

el cuál la plataforma imita los movimientos mediante sus cuatro extremidades,

mientras cuelga de un stand provisto en el kit de RoboPhilo. El segundo modo

“Planicie” en el cual, la plataforma humanoide tiene sus extremidades inferiores

erguidas, mientras sus extremidades superiores son las que se mueven. En este

modo no es necesario utilizar el stand.

Figura 3.33 Stand para el modo suspendido del Robot Imitador.

A continuación se presenta la descripción general de operación:

Los datos de las articulaciones de una persona son interpretados por el sensor

kinect y son enviados a una subrutina en C# llamada SkeletonFrameReady,

Page 78: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

65

mediante la cual se obtienen los 20 puntos de las articulaciones en cada uno de

los ejes, es decir que para cada articulación se tienen tres datos, uno por cada

eje, por lo tanto se puede trabajar hasta con 60 datos en esta subrutina.

Para la ejecución de los algoritmos de cinemática inversa, se toman en cuenta

tres puntos principales por cada extremidad de la persona, para un brazo son los

siguientes: muñeca (efector final), codo (punto intermedio) y hombro (eje principal

de rotación); para una pierna, los puntos a tomar en consideración son: tobillo

(efector final), rodilla (punto intermedio) y cadera (eje principal de rotación).

Los datos mencionados en el párrafo anterior ingresan a una subrutina de

cinemática inversa, en la cual se hallan los ángulos mencionados en la sección

3.2.3, estos ángulos son: cdi, bri, hmi, cdd, brd, hmd, rdi, pri, cri, rdd, prd y crd.

Luego de realizar los cálculos, se convierten los valores de radianes a grados

para que puedan ser manipulables, en este punto se hacen correcciones de

ángulo necesarias, escalamientos y aproximaciones hasta conseguir valores que

tengan una variación de 0° a 180° para que posteriormente puedan ser

manejados en el microcontrolador.

Los datos correctamente escalados, mencionados en el párrafo anterior, se

envían mediante comunicación serial al microcontrolador y éste a su vez,

mediante subrutinas de validación obtiene la trama de datos y la separa para cada

uno de los servomotores del Robot Imitador. En las subrutinas de manejo de los

datos, los ángulos son convertidos en valores de PWM para controlar la posición

de cada servomotor e imitar el movimiento de las extremidades de la persona.

Finalmente el microcontrolador envía un dato de regreso por medio de

comunicación serial al computador para indicar que la trama de datos ha llegado

correctamente y que está libre para recibir la siguiente trama.

Page 79: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

66

A continuación se muestran los diagramas de flujo de cada uno de los modos de

operación, los cuales están escritos en pseudocódigo:

Modo suspendido:

INICIO

Pedir datos de articulaciones al sensor kinect

Ejecutar cálculos de cinemática inversa

Escalar y corregir ángulos

A

B

Page 80: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

67

Si

No

Si

No

A

Enviar datos empaquetados al microcontrolador mediante

comunicación serial

Empaquetar datos de ángulos y añadir cabecera de estado.

Recibir datos empaquetados en el microcontrolador

Separar datos empaquetados

Convertir ángulos en valores de PWM

Cabecera de estado=activo C

Enviar valores de PWM a servomotores

Enviar dato de regreso al computador mediante comunicación serial

¿Dato recibido en computador?

C

B

Page 81: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

68

Figura 3.34 Diagrama de flujo, modo suspendido.

Modo planicie:

C

FIN

D

Mantener constantes y en posición inicial a servomotores de extremidades inferiores

INICIO

Pedir datos de articulaciones al sensor kinect

Ejecutar cálculos de cinemática inversa

Escalar y corregir ángulos

E

Empaquetar datos de ángulos y añadir cabecera de estado.

Page 82: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

69

Enviar datos empaquetados al microcontrolador mediante

comunicación serial

Recibir datos empaquetados en el microcontrolador

Separar datos empaquetados

D

Convertir ángulos en valores de PWM

Cabecera de estado=activo F

Enviar valores de PWM a servomotores

Enviar dato de regreso al computador mediante comunicación serial

¿Dato recibido en computador?

F

E

No

Si

Si

No

Page 83: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

70

Figura 3.35 Diagrama de flujo, modo planicie.

F

FIN

Page 84: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

71

CAPÍTULO 4

PROGRAMACIÓN DEL HMI Y COMUNICACIONES

4.1. COMUNICACIÓN SERIAL ENTRE COMPUTADOR Y MICROCONTROLADOR

4.1.1 COMUNICACIÓN SERIAL ASÍNCRONA

Uno de los primeros dispositivos diseñados para implementar una comunicación

serial asíncrona, y hasta ahora uno de los más populares es el Receptor-

Transmisor Universal Asíncrono, UART. Este circuito está constituido por dos

sistemas independientes: un receptor y un transmisor de datos, cada uno con su

propio bus de datos, puerta serial de salida y reloj. La lógica de control que

determina el número de bits de datos, el tipo de paridad y el número de bits de

paro, es común al receptor y al transmisor. La arquitectura del UART le permite

operar en “Full Duplex” con velocidades de transmisión diferentes.

Los datos se transmiten en serie por la línea “salida serie” (Tx), cuando se coloca

un dato sobre el bus de datos (DT), y se activa la línea “estrobo de datos” (Data

Strobe). Una vez que se recibe un pulso en la línea Data Strobe, el buffer de

transmisión carga el dato y lo envía hacia el registro de corrimiento de

transmisión. Ahí se adicionan los bits de arranque, paridad y paro.

Por otro lado, cuando se recibe una señal en formato serial por la línea “Entrada

Serie”, dicha señal es procesada por varios bloques lógicos que detectan el bit de

arranque y la paridad. La señal es aplicada entonces a un registro de corrimiento

del sistema receptor con la finalidad de obtener los bits en paralelo. Una vez

verificada la paridad del dato que se recibe, la información se deposita en el buffer

de transmisión y a través de un bloque de compuertas de tres estados se hace

llegar al bus de datos [39].

Page 85: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

72

Para la comunicación serial entre el computador y el microcontrolador Atmega640

se utilizan módulos de comunicación inalámbrica, los cuales permiten el manejo a

distancia dela plataforma humanoide, sin necesidad de tener cables conectados

entre el computador y el microcontrolador.

4.1.2. MÓDULO DE COMUNICACIÓN INALÁMBRICA XBEE

Figura 4.1 Módulo de comunicación inalámbrica Xbee, tomado de [40].

Las principales características de los módulos Xbee son las siguientes:

· Buen Alcance: hasta 300ft (100 mts) en línea vista para los módulos Xbee y

hasta 1 milla (1.6 Km) para los módulos Xbee Pro.

· 9 entradas/salidas, analógicas y digitales.

· Bajo consumo <50mA cuando están en funcionamiento y <10uA cuando están

en modo sleep.

· Interfaz serial.

· 65,000 direcciones para cada uno de los 16 canales disponibles. Se pueden

tener muchos de estos dispositivos en una misma red [41].

Page 86: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

73

Existen dos series de estos módulos, en el presente proyecto de titulación se

utilizan de la serie 2.

Instalación y Configuración de los módulos Xbee:

Para poder utilizar los módulos Xbee, es necesario realizar ciertos pasos previos

tanto en el emisor como en el receptor, cabe recalcar que para poder configurar

los módulos se debe contar con un adaptador USB como se muestra en la Figura

4.2, además para utilizar los módulos en un microcontrolador se debe utilizar una

tarjeta de adaptación para que cumpla con los niveles de voltaje adecuados para

la fuente del módulo y por facilidad de manipulación, este adaptador se muestra

en la Figura 4.3.

Figura 4.2 Adaptador USB para módulo Xbee, tomado de [42].

Figura 4.2 Adaptador para microcontrolador, módulo Xbee, tomado de [42].

Page 87: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

74

Para obtener los drivers y poder configurar el módulo Xbee, es necesario instalar

una aplicación llamada X-CTU, como se muestra en la Figura 4.3.

Figura 4.3 Programa de instalación de XCTU para módulo Xbee.

Se deben seguir todos los pasos del instalador hasta finalizar el proceso,

posteriormente abrimos el programa y comenzamos la Configuración como se

muestra en la Figura 4.4, cabe recalcar que al iniciar el programa X-CTU, se debe

seleccionar la velocidad de transmisión a la que se encuentra el módulo, de lo

contrario no se podrá seguir con la configuración. Si los módulos Xbee son

nuevos, el valor de velocidad de transmisión por defecto es 9600.

Page 88: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

75

Figura 4.4 Configuración mediante XCTU para módulo Xbee.

Como se puede observar en la Figura 4.4, luego de ingresar al software de

configuración, se debe situar en la pestaña Modem Configuration y

posteriormente se debe dar clic en el botón Read para poder saber la

Configuración actual del módulo y poder modificar cierto parámetro según

nuestros requerimientos.

Los datos más importantes a tener en cuenta en la Configuración son:

Page 89: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

76

· Destination Address (apunta a una dirección la cual debe coincidir tanto en el

módulo del computador como en el del microcontrolador)

· Coordinador Enable (asigna cuál dispositivo es coordinador y cuál es el

dispositivo final)

· Interface Data Read (indica la velocidad de transmisión, que en este caso es

57600)

4.1.3. TRAMA DE DATOS

La trama de datos que se envía del computador al microcontrolador se muestra en la Figura 4.5.

1 2 3 4 5 6 7 8 9 10 11 12 13 Identificador cdi bri hmi cdd brd hmd rdi pri cri rdd prd crd

Ángulos de servomotores

Figura 4.5 Trama de datos enviada desde el Computador al microcontrolador.

El identificador corresponde al valor 200 y debido a que desde el computador se

realizan restricciones para que los ángulos enviados al microcontrolador no sean

mayores a 180° ni menores a 0°, este identificador se distingue y permite saber

dónde comienza el primer dato para poder separar posteriormente cada uno de

los bytes e interpretarlos en el microcontrolador.

4.2. INTERFAZ HOMBRE MÁQUINA (HMI) La interfaz hombre máquina o HMI se utiliza para visualizar el estado de ciertas

variables en un instante de tiempo, además de monitorear y realizar acciones de

control para un proceso específico.

En el presente proyecto de titulación se realiza un HMI para observar el estado de

cada uno de los ángulos calculados, escalados y aproximados que se envían al

microcontrolador de la plataforma humanoide RoboPhilo.

Page 90: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

77

El lenguaje de programación utilizado para la realización del HMI es C# en

Microsoft Visual Studio. Se seleccionó esta interfaz para el HMI debido a que es la

recomendada por Microsoft para el desarrollo de aplicaciones, por su rendimiento

y versatilidad.

En la Figura 4.6 se muestra la pantalla del HMI en vista diseño, para observar

cada uno de los elementos que la componen, ya que al iniciar el programa, éste

automáticamente esconde ciertos avisos e íconos hasta que llegue un evento

determinado y mostrar lo que en ese instante el usuario requiera.

Figura 4.6 HMI implementado en el proyecto.

En el HMI creado en Visual C# se optó por colocar indicadores que le permitan al

usuario observar si se encuentra en una correcta posición para comenzar con el

proceso de imitación, el rango de distancia a la que la persona debe posicionarse

para un correcto funcionamiento es de 2.3 a 2.8 metros, con lo cual se tiene una

completa visualización de las articulaciones por parte del sensor kinect.

El HMI cuenta con visualización de video y profundidad del usuario, permitiendo

observar la variación de matices de colores al acercarse o alejarse del sensor

Page 91: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

78

kinect. Además, el HMI cuenta con botones para el control del ángulo de

elevación de la cámara del sensor kinect, de este modo se puede enfocar mejor al

usuario, dependiendo de la altura a la que se coloque el sensor. Tanto el modo de

operación como el puerto serial con el que se desea trabajar, son seleccionables

por medio del HMI.

Además de mostrar el estado de cada uno de los ángulos que se envían al

microcontrolador, se puede identificar la distancia perpendicular en centímetros,

que la persona se encuentra del sensor (Dz), también se puede identificar que

dependiendo la distancia del sensor, existen dos distancias llamadas Dh y Dw, las

cuales miden el alto y el ancho, respectivamente, de la pantalla que se muestra al

usuario, de esta forma se puede saber la altura aproximada de la persona y de la

habitación en la que se encuentra, adicionalmente se coloca un botón virtual para

el inicio del proceso de imitación, eliminando la necesidad de tener una persona

cerca para que presione un botón en el computador, finalmente el HMI muestra

una característica adicional, en la cual una persona puede tomar hasta 10

fotografías mientras el usuario utiliza la aplicación.

Figura 4.7 Descripción de cada área del HMI implementado.

1

2

3

4

5

6

7

8

1

9

10

11

12

Page 92: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

79

1. Botón virtual para comenzar la aplicación.

2. Botones de aviso (alejarse, ok y acercarse).

3. Control del ángulo de inclinación de la cámara del sensor kinect.

4. Cuadro de selección para el modo de operación.

5. Botón para tomar fotos del usuario con indicador del número de foto en la que

se encuentra.

6. Cuadro de selección para el puerto serial.

7. Distancias del usuario relativas al sensor.

8. Valor actual de cada uno de los ángulos de las extremidades.

9. Pantalla de video.

10. Pantalla de profundidad.

11. Puntos que representarán cada articulación del usuario.

12. Estado enviado desde el microcontrolador al computador (“IMITANDO”,

“INACTIVO”).

Figura 4.8 Funcionamiento del HMI con la aplicación iniciada.

Page 93: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

80

CAPÍTULO 5

PRUEBAS Y RESULTADOS El presente capítulo tabula los datos obtenidos en cada una de las extremidades.

Se realiza una comparación entre el ángulo de movimiento del robot humanoide, y

el usuario frente al sensor. Se analizan los ángulos de las extremidades del

usuario y los ángulos calculados teóricamente mediante cinemática inversa. La

medición física de los ángulos de movimiento del usuario se realiza mediante un

graduador de precisión de tamaño, aparente a las extremidades del mismo. Cada

extremidad tiene un rango de movimiento definido, lo que permite realizar

mediciones adecuadas.

Figura 5.1 Datos tabulados de las articulaciones de una persona.

La Figura 5.1 muestra un ejemplo de los datos en cada uno de los ejes x, y, z,

respectivamente, de cada una de las articulaciones de una persona, los cuales se

Page 94: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

81

manipularon para de este modo realizar los cálculos en los algoritmos de

cinemática inversa.

A continuación se muestran las pruebas realizadas en cada uno de los modos de

operación con la comparación entre el ángulo de las extremidades de la persona

frente al sensor, el calculado mediante cinemática inversa y el ángulo de

movimiento de las extremidades de la plataforma humanoide.

5.1. PRUEBAS EN MODO SUSPENDIDO Para la medición de los ángulos se utiliza un graduador de gran tamaño con

precisión de 0.5°.

Figura 5.2 Prueba de movimiento de hombros plano xy, en modo suspendido.

En la prueba de la Figura 5.2 se observa la parte operativa del sistema con lo que

se obtiene leves oscilaciones en los movimientos de las extremidades superiores

del robot y los ángulos calculados por software y medidos son los siguientes:

Page 95: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

82

Tabla 5.1 Medidas de ángulos tomadas a extremidades superiores, Figura 5.2.

Hombro Izquierdo Usuario 43.5° 43° 42.5° 43° 42.5° 42.9°

Cinemática Inversa 42° 43° 42° 41° 42° 42° Plataforma 40.5° 41.5° 41° 40.5° 41° 40.9°

Hombro Derecho Usuario 43° 42.5° 43° 43° 42.5° 42.8°

Cinemática Inversa* 43° 43° 42° 43° 41° 42.5° Plataforma 40.5° 41.5° 41° 41.5° 42° 41.3°

*Tomar en consideración que para una de las 2 extremidades se utiliza el ángulo

suplementario ya que el servomotor se encuentra girando en sentido opuesto, por

ejemplo: 180°-137°=43°.

De la tabla 5.1 se toma como medida real el ángulo de movimiento del usuario,

se deduce que para el hombro izquierdo la máxima variación es de 2°, lo cual

representa el 1.1% del movimiento total del servomotor y para el hombro derecho

la máxima variación es de 1.5°, lo cual representa el 0.8% del movimiento total

del servomotor .

Figura 5.3 Prueba de movimiento de brazos plano yz, en modo suspendido.

Page 96: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

83

En la prueba de la Figura 5.3 se pueden observar oscilaciones en los brazos del

robot, debido a que los puntos de las articulaciones se sobreponen, lo cual

provoca variaciones inesperadas al momento de realizar los cálculos para los

algoritmos de cinemática inversa. El mismo problema ocurre al entrecruzar los

brazos.

Figura 5.4 Prueba de movimiento de brazos en los 3 ejes, en modo suspendido.

En la Figura 5.4, se puede apreciar que las oscilaciones son imperceptibles y el

robot sigue el movimiento de la persona de una forma continua. Las medidas de

los ángulos de los brazos se muestran en la tabla 5.2.

Tabla 5.2 Medidas de ángulos tomadas a extremidades superiores, Figura 5.4.

Brazo Izquierdo Usuario 56.5° 56° 55.5° 56° 55.5° 55.9°

Cinemática Inversa* 57° 57° 56° 58° 56° 56.8° Plataforma 58.5° 57.5° 58° 57° 58.5° 57.9°

Brazo Derecho Usuario 59° 59° 58.5° 58° 58.5° 58.6°

Cinemática Inversa 60° 59° 58° 59° 60° 59.2° Plataforma 60.5° 61° 60° 61° 61.5° 60.8°

*Tomar en consideración que para una de las 2 extremidades se utiliza el ángulo

suplementario ya que el servomotor se encuentra girando en sentido opuesto, por

ejemplo: 180°-123°=57°.

Page 97: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

84

De la tabla 5.2 se toma como medida real el ángulo de movimiento del usuario,

se deduce que para el brazo izquierdo la máxima variación es de 2°, lo cual

representa el 1.1% del movimiento total del servomotor, y para el brazo derecho la

máxima variación es de 2.2°, lo cual representa el 1.2% del movimiento total del

servomotor .

Figura 5.5 Prueba de movimiento rodilla derecha, en modo suspendido.

Como se muestra en la Figura 5.5, al plegar la rodilla derecha se observa el

mismo comportamiento que al mover los brazos en el eje yz (Figura 5.3) en una

posición específica. Esto se debe a que el sensor kinect intenta estimar la

posición del pie, pero éste sale del área de vista del sensor y es en ese momento

en el que se genera una leve oscilación.

Page 98: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

85

Figura 5.6 Prueba de movimiento cadera derecha en el plano xy, en modo

suspendido.

En la prueba de la Figura 5.6 el movimiento de la extremidad de la plataforma es

suave y continuo, al igual que en el caso de las extremidades superiores (Figura

5.2), los puntos de oscilación son muy específicos y leves, mientras los demás

movimientos se cumplen de acuerdo a lo establecido. La medición de los

diferentes ángulos se muestran en la tabla 5.3.

Tabla 5.3 Medidas de ángulos tomadas de cadera izquierda, Figura 5.6.

Cadera Izquierda Usuario 46° 46.5° 46.5° 45° 45.5° 45.9°

Cinemática Inversa 47° 46° 47° 49° 46° 47° Plataforma 48.5° 48° 48.5° 47.5° 49° 48.3°

De la tabla 5.3, se toma como medida real el ángulo de movimiento del usuario,

se deduce que para la cadera derecha, la máxima variación es de 2.4°, lo cual

representa el 1.3% del movimiento total del servomotor .

Page 99: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

86

Figura 5.7 Prueba de movimiento pierna izquierda en los 3 ejes, en modo

suspendido.

De acuerdo a la prueba de la Figura 5.7, se puede observar que en el caso de la

pierna izquierda, debido a que físicamente es improbable que una persona

levante una de sus piernas de tal manera que los puntos de las articulaciones se

escondan unos tras otros, el único caso en el que se presentan oscilaciones

perceptibles es en el que se muestra de la Figura 5.5. Las medidas de los ángulos

tomados en esta prueba están en la tabla 5.4.

Tabla 5.4 Medidas de ángulos tomadas de pierna izquierda, Figura 5.7.

Pierna izquierda Usuario 129.5° 129° 130.5° 129.5° 130° 129.7°

Cinemática Inversa 130° 132° 130° 131° 129° 130.4° Plataforma 131.5° 131° 130.5° 131° 132° 131.2°

De la tabla 5.4 se toma como medida real el ángulo de movimiento del usuario,

se deduce que para la pierna izquierda, la máxima variación es de 1.5°, lo cual

representa el 0.8% del movimiento total del servomotor .

Page 100: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

87

5.2. PRUEBAS EN MODO PLANICIE

Figura 5.8 Prueba de movimiento de los brazos en los 3 ejes, en modo planicie.

En la prueba de la Figura 5.8 se observa movimientos continuos con leves

oscilaciones perceptibles y las extremidades inferiores se muestran erguidas en

todo el lapso de tiempo que duró esta prueba, las medidas de los ángulos de las

extremidades superiores se muestran en la tabla 5.5.

Tabla 5.5 Medidas de ángulos tomadas a extremidades superiores, Figura 5.8.

Brazo Izquierdo Usuario 70.5° 71° 69.5° 68.5° 70° 69.9°

Cinemática Inversa 68° 68° 67° 69° 67° 67.8° Plataforma 69.5° 69° 68.5° 70° 71.5° 69.7°

Brazo Derecho Usuario 69° 68° 68.5° 69° 68° 68.5°

Cinemática Inversa* 66° 67° 66° 65° 65° 65.8° Plataforma 68.5° 69° 67° 67° 68.5° 68°

*Tomar en consideración que para una de las 2 extremidades se utiliza el ángulo

suplementario ya que el servomotor se encuentra girando en sentido opuesto, por

ejemplo: 180°-114°=66°.

Page 101: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

88

De la tabla 5.5 se toma como medida real el ángulo de movimiento del usuario,

se deduce que para el brazo izquierdo la máxima variación es de 2.1°, lo cual

representa el 1.2% del movimiento total del servomotor. Para el brazo derecho la

máxima variación es de 2.7°, lo cual representa el 1.5% del movimiento total del

servomotor .

Figura 5.9 Prueba de movimiento de codo izquierdo, en modo planicie.

En la prueba de la Figura 5.9 se observa uno de los movimientos más complejos

de ejecutar por parte de la plataforma, en términos de cinemática inversa, ya que

es en ésta posición en la que intervienen el mayor número de variables en el

análisis teórico. La prueba dio como resultado un movimiento continuo y con leves

oscilaciones. Las mediciones del ángulo del codo izquierdo se muestran en la

tabla 5.6.

Tabla 5.6 Medidas de ángulos tomadas de codo izquierdo, Figura 5.9.

Codo izquierdo Usuario 124° 123.5° 124° 123° 122.5° 123.4°

Cinemática Inversa 125° 127° 126° 125° 126° 125.8° Plataforma 127° 128.5° 126.5° 127° 126° 127°

Page 102: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

89

De la tabla 5.6 se toma como medida real el ángulo de movimiento del usuario,

se deduce que para el codo izquierdo, la máxima variación es de 3.6°, lo cual

representa el 2% del movimiento total del servomotor.

Figura 5.10 Prueba de movimiento de los brazos en el plano yz, en modo planicie.

En la prueba de la Figura 5.10 al igual que en modo suspendido, se observan

oscilaciones perceptibles debido a la súper posición de puntos de articulaciones,

dificultando la estimación de los datos para los algoritmos de cinemática inversa.

Tabla 5.7 Resumen de máximas diferencias en ángulo y porcentaje tomadas

desde la tabla 5.1 hasta la tabla 5.6.

MODO SUSPENDIDO MODO PLANICIE

Extremidades Superiores

Extremidades Inferiores

Extremidades Superiores

Diferencia Máxima

Izquierda Derecha Izquierda Derecha Izquierda Derecha

Grados 2 2 1.5 2.2 1.5 2.4 2.1 3.6 2.7 Porcentaje 1.1 1.1 0.8 1.2 0.8 1.3 1.2 2 1.5

De la tabla 5.7 se deduce que en modo suspendido la máxima diferencia se da

en la extremidad inferior derecha (cadera), con 2.4°, los cuales representan 1.3%

del movimiento total del servomotor. En modo planicie la máxima diferencia se

obtiene en la extremidad superior izquierda (codo) con 3.6° los cuales representan

2% del movimiento total del servomotor.

Page 103: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

90

5.3. ESPECIFICACIONES DE FUNCIONAMIENTO Como resultado del presente proyecto de titulación, se tiene un robot imitador

funcional, el cual realiza los movimientos básicos de una persona en tiempo real,

teniendo como sensor principal al sensor kinect que es una tecnología nueva que

poco a poco se ha ido conociendo en el país, además de contar con una placa de

desarrollo que sirve de base para futuros proyectos en los cuales se pueda añadir

control de equilibrio, caminata y otras acciones que están fuera de los alcances

del presente proyecto.

La investigación de este proyecto se centra en dos ejes fundamentales, el primero

va orientado al correcto manejo de los servomotores para que los tiempos de

respuesta sean lo más cortos posibles, es por esto que no se aplicó la técnica de

control de PWM por software. El segundo eje fundamental se centró en encontrar

una técnica matemática que permita obtener datos confiables de los ángulos que

debe tener cada servomotor hasta que la plataforma adopte cierta posición, el

método encontrado se llama: cinemática inversa y es un punto clave para el

correcto desarrollo de este proyecto.

5.4. LISTADO DE COSTOS

5.4.1. COSTO DE MATERIALES

Tabla 5.1 Listado de costo de materiales.

Cantidad Descripción Precio unitario Precio Total

1 Plataforma RoboPhilo $800 $800 1 Placa Axon II $120 $120 2 Módulo Xbee $30 $60 1 Adaptador USB Xbee $30 $30 1 Adaptador micro Xbee $10 $10 1 Sensor kinect $300 $300 1 Batería extra RoboPhilo $30 $30

TOTAL $1350

Page 104: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

91

5.4.2. COSTO DE INGENIERÍA

Se asume un costo de mano de obra de $800 mensuales y un trabajo continuo de

8 meses, por lo tanto, el total de costo de ingeniería sería $6400.

5.4.3. COSTO TOTAL

Tabla 5.2 Listado total de costos.

Rubro Valor

Costo de materiales $1350

Costo de ingeniería $6400

TOTAL $7750

Page 105: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

92

CAPÍTULO 6

CONCLUSIONES Y RECOMENDACIONES

6.1. CONCLUSIONES · La máxima variación de movimiento de los servomotores en condiciones

normales es de 3.6° los cuales representan el 2% del movimiento total de un

servomotor, esto indica que tanto los cálculos mediante cinemática inversa

como los ángulos de movimiento de la plataforma son exactos en un 98%.

· La máxima variación de movimiento de los servomotores se dio en modo

planicie debido a que en este modo las extremidades inferiores de la

plataforma tienen leves movimientos derivados de movimientos bruscos de

las demás extremidades y dichos movimientos de las extremidades inferiores

perturban levemente la medición de los ángulos..

· El costo de este tipo de proyectos de ingeniería es elevado, debido al trabajo

de investigación y desarrollo de aplicaciones, por lo que el presente proyecto

de titulación se puede utilizar para rehabilitar niños, jóvenes y adultos al

promover el movimiento de las extremidades de una forma divertida y

llamativa, además el presente proyecto sirve de base para la implementación

de ideas que ayuden a la teleoperación.

· Al ser utilizado el sensor Kinect para la adquisición de los datos y

considerando que ese es el paso principal para la correcta ejecución del

presente proyecto de titulación, luego de analizar los datos finales, se concluye

que éste hace una estimación de datos bastante acertada y valida los datos de

forma correcta con la interpretación de pixeles que posee en su programación

interna, esto permite tener datos confiables, los cuales son manipulados

posteriormente.

Page 106: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

93

· Al haber utilizado la plataforma humanoide en diversas pruebas y haber

manejado los servomotores mediante las técnicas de PWM por hardware y

PWM por software, se concluye que la técnica de manejo de servomotores de

PWM por hardware posibilita el proceso de imitación en tiempo real ya que no

mantiene al microcontrolador esperando un evento, sino que automáticamente

carga el valor del PWM hacia los servomotores y los mantiene en ese valor sin

importar los demás procesos que se susciten dentro del lazo principal de

programación.

· Después de haber realizado varias pruebas y haber utilizado diferentes

algoritmos para llegar al proceso de emulación de movimientos, se concluye

que la técnica de cinemática inversa es una de las más acertadas y ha hecho

posible el cálculo de variables que son manipuladas, escaladas y aproximadas

a partir de datos reales como en este caso la posición de las articulaciones de

una persona respecto al sensor kinect.

· Las operaciones realizados mediante cinemática inversa para el cálculo de los

ángulos que se envían a los servomotores, sirven como base para futuros

proyectos de investigación que utilicen robots humanoides, ya que las

articulaciones de este tipo de robots no varían en gran porcentaje y la variedad

de movimientos por extremidad que pueden realizar mediante la técnica de

cinemática inversa es muy amplia.

· Se concluye que la plataforma humanoide RoboPhilo supera las expectativas

en el aspecto funcional y se puede comparar con plataformas altamente

sofisticadas como Biolod y Kondo con respecto a movilidad, fácil ensamblaje y

mantenimiento de sus piezas con la ventaja de su bajo costo en el mercado.

· La trama implementada para el envío de datos desde el computador hasta el

microcontrolador de la plataforma humanoide, fue de gran utilidad ya que

envía los datos mediante un identificador para que el microcontrolador analice

donde empieza la lectura de los ángulos, que posteriormente se utilizan en los

servomotores.

Page 107: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

94

· Los módulos de comunicación inalámbrica Xbee permiten un flujo adecuado

de información entre el ordenador y la plataforma humanoide. Las

características de este dispositivo son su tamaño y peso adecuado para

aplicaciones con plataformas humanoides por la gran versatilidad de

movimiento que le proveen al robot.

6.2. RECOMENDACIONES

· Se debería buscar una forma adecuada para incluir el control de los

servomotores mediante la técnica de PWM por software que permita el flujo de

datos entre el computador y la plataforma y no ralentice el proceso de

imitación, tomando en consideración el incorporar una placa adicional para

usarla exclusivamente en la generación de PWM para el accionamiento de los

servomotores.

· La mejora respecto al control debería basarse en la aplicación de algoritmos

de estabilidad para los servomotores mediante técnicas de análisis no lineal

para controlar las leves oscilaciones que presenta la plataforma humanoide en

las extremidades, en funcionamiento normal.

· Debido a las prestaciones que tiene el sensor kinect se puede realizar una

mejora en la interacción con el usuario mediante comandos de voz y actualizar

el HMI implementado para la toma de fotografías automáticamente y el manejo

de más botones o menús virtuales mediante guiado gestual.

Page 108: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

95

REFERENCIAS BIBLIOGRÁFICAS [1]http://www.cienciapopular.com/n/Tecnologia/Androides__Humanoides_y_Cybor

gs/Androides__Humanoides_y_Cyborgs.php

[2]BARRIENTOS A., PEÑÍN L., BALAGUER C., ARACIL R., “Fundamentos de

Robótica”. McGrawn-Hill. Primera edición en español. Madrid - España. 1997.

[3]http://2.bp.blogspot.com/_SxiJ1Q3PDBg/SJwEIwGMXiI/AAAAAAAAACU/gFlTU

WntsK8/s400/00.jpg

[4]Cabrera A., “Normas ISA 5.1”. Instrumentación Industrial. Escuela Politécnica

Nacional. Quito, Ecuador Abril 2012.

[5]http://robotica.wordpress.com/about/

[6]http://www.seguritron.com/que_es_un_robot.htm

[7]http://www.enotes.com/topic/Al-Jazari

[8]Al-Jazari, “The book of knowledge of ingenious mechanical devices”, 1973

[9]http://www.linkmesh.com/robots/articulos/definiciones_de_los_robots.php

[10]http://www.pcworld.com/article/253664/historys_10_most_influential_robots

[11]http://www.fotolog.com/partesitasdevida/32197898/

[12]http://es.noticias.yahoo.com/blogs/cuaderno-historias/elektro-y-sparko-los-

primeros-robots-del-siglo-123846208.html

[13]http://bullyscomics.blogspot.com/2010/05/elektro-2-robot-boogaloo.html

Page 109: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

96

[14]http://ingesaerospacerobotics.blogspot.com/2010/11/introduccion-la-robotica-

historia-la.html

[15]http://robotik-jjlg.blogspot.com/2009_06_01_archive.html

[16]http://www.robobrothers.com/

[17] http://es.scribd.com/doc/62953398/Kinect-Para-Xbox-360

[18]http://www.ideasgeek.net/2010/11/10/funcionamiento-del-sensor-de-

movimiento-en-kinect/

[19]http://www.microsoft.com/en-us/kinectforwindows/purchase/sensor_setup.aspx

[20] WEBB J., ASHLEY J., “Beginning Kinect Programming with the Microsoft

Kinect SDK”. Apress 1ra Edición. New York USA 2011.

[21]http://www.ideasgeek.net/2010/11/10/funcionamiento-del-sensor-de-

movimiento-en-kinect/

[22] http://nexus404.com/Blog/wp-content/uploads2/2007/10/robophilo.jpg

[23] http://www.robophilo.com/live/products/RoboPhilo/manuals/en/web/index.htm

[24] http://robots-argentina.com.ar/MotorServo_basico.htm

[25] http://www.dwengo.org/node/237

[26] http://www.societyofrobots.com/axon2

[27] http://dictionary.reference.com/browse/jitter

[28] http://www.robophilo.com/live/en/index.php#

Page 110: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

97

[29] MATHE L., SIMBÁN D., GÓMEZ G., "Estudio del funcionamiento del sensor

Kinect y aplicaciones para bioingeniería", Argentina, 2012.

[30] http://pages.cs.wisc.edu/~dyer/cs540/notes/17_kinect.pdf

[31]http://www.uhu.es/fernando.gomez/proyecto_manipulador/desarrollo_practica1

.html

[32] http://www.disclab.ua.es/robolab/EJS2/RRR_Intro_3.html

[33] http://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)

[34] http://urriellu.net/es/articles-software/csharp-advantages.html

[35] http://www.avr-tutorials.com/avr-studio-6/avr-studio-6

[36] http://www.electrocomponentes.com/articulos/julio12/atmel.htm

[37]http://www.developeandocsharp.net/2012/01/04/instalacin-de-visual-c-2010-

express-y-algunos-consejos/

[38] http://msdn.microsoft.com/es-es/library/vstudio/kx37x362(v=vs.100).aspx

[39]http://www.buenastareas.com/ensayos/Comunicaci%C3%B3n-Serial-

Asincrona/2882934.html

[40] http://www.olimex.cl/product_info.php?products_id=392

[41] http://www.xbee.cl/

[42] http://www.sparkfun.com/

Page 111: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

98

ANEXO A

ENSAMBLAJE DE LA PLATAFORM A ROBOPHILO A continuación se muestran imágenes del ensamblaje de la plataforma

humanoide RoboPhilo, en cada una de sus etapas:

Estado inicial de la plataforma RoboPhilo.

Ensamblaje de los brazos de la plataforma RoboPhilo.

Page 112: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

99

Ensamblaje de las piernas de la plataforma RoboPhilo.

Ensamblaje del torso de la plataforma RoboPhilo.

Ensamblaje de las extremidades y calibración de los servomotores de la

plataforma RoboPhilo.

Page 113: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

100

Calibración final y pruebas iniciales de la Plataforma RoboPhilo.

Estado final de la Plataforma RoboPhilo.

Page 114: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

101

ANEXO B

MANUAL DE USUARIO INSTALACIÓN DE SOFTWARE PRINCIPAL Para el correcto funcionamiento del HMI desarrollado en C# y la plataforma

humanoide, en primer lugar se deben instalar los siguientes programas

contenidos en el DVD:

· X-CTU

· Virtual Clone Drive

· Visual Studio 2010 Express

· Kinect SDK v1.0

X-CTU (Driver para módulo de comunicación inalámbrico Xbee)

Se tienen los instaladores para las versiones de 32 y 64 bits:

Ø XCTU_32BITS

Ø XCTU_64BITS

Seleccionamos el que corresponda a la arquitectura de nuestro procesador o la

versión de Windows en la que se vaya a instalar el HMI del robot imitador.

Para obtener los drivers y poder conFigurar el módulo Xbee, es necesario instalar

una aplicación llamada X-CTU, como se muestra en la siguiente Figura:

Page 115: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

102

Se deben seguir todos los pasos del instalador hasta finalizar el proceso,

posteriormente abrimos el programa y comenzamos la Configuracióncomo se

muestra en la Figura 4.4, cabe recalcar que al iniciar el programa X-CTU, se debe

seleccionar la velocidad de transmisión a la que se encuentra el módulo, de lo

contrario no se podrá seguir con la configuración. Si los módulos Xbee son

nuevos, el valor de velocidad de transmisión por defecto es 9600.

Page 116: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

103

Como se puede observar en la Figura anterior , luego de ingresar al software de

configuración, se debe situar en la pestaña Modem ConFiguration y

posteriormente se debe dar clic en el botón Read para poder saber la

Configuraciónactual del módulo y poder modificar cierto parámetro según

nuestros requerimientos.

Los datos más importantes a tener en cuenta en la Configuraciónson:

Page 117: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

104

· Destination Address (apunta a una dirección la cual debe coincidir tanto en el

módulo del computador como en el del microcontrolador)

· Coordinador Enable (asigna cuál dispositivo es coordinador y cuál es el

dispositivo final)

· Interface Data Read (indica la velocidad de transmisión, que en este caso es

57600)

Virtual Clone Drive (carga la imagen de un CD o DVD)

El programa Virtual Clone Drive se utiliza para cargar la imagen del archivo

VS2010ExpressESN.iso y posteriormente instalar el programa Visual C#.

Pantalla de instalación de Virtual Clone Drive

Page 118: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

105

De la imagen anterior asociamos a todos los tipos de archivos para tener una

correcta compatibilidad al querer manejar la imagen del CD o DVD.

Damos clic en siguiente, seleccionamos el directorio en el cual se desea que se

guarde el programa y seguimos con la instalación.

Dependiendo de la versión de Windows que se tenga, aparecerá el siguiente

mensaje, el cual debemos aceptar y continuar con la instalación:

Page 119: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

106

Una vez finalizada la instalación de Virtual Clone Drive, podemos continuar con la

siguiente instalación.

Visual Studio 2010 Express

Para ejecutar el instalador de este programa, debemos dar doble clic en la imagen

del DVD llamada: VS2010ExpressESN.iso, con lo cual aparecerá el instalador

como se muestra en la siguiente imagen:

La anterior imagen nos muestra varias opciones a instalar, la que nos interesa es

“Visual C# 2010 Express”, seguimos el proceso de instalación y dejamos que

instale las versiones de .NET Framework que sean necesarias, ya que esta

contiene librerías que se utilizan en el HMI del robot imitador.

Kinect SDK v1.0

Finalmente se instala el software de desarrollo de kinect SDK que contiene

archivos necesarios para la ejecución del HMI del robot imitador además contiene

los drivers necesarios para el correcto funcionamiento del sensor Kinect.

Page 120: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

107

Aceptamos las condiciones de instalación y damos clic en INSTALL, luego

seguimos los pasos necesarios hasta finalizar la instalación.

Con el software instalado se puede comenzar a hacer uso del HMI del robot

imitador.

CONEXIÓN DE LOS PERIFÉRICOS Antes de iniciar el HMI del robot imitador se deben conectar los periféricos

necesarios para su correcto funcionamiento.

En primer lugar se comienza por conectar el sensor Kinect, primero en el

tomacorrientes y luego el USB en el computador en el que instalaron los

programas mencionados anteriormente. Se debe colocar el sensor kinect en una

mesa lo más alta (entre 1 metro y 1 metro y medio) y fija posible, tomando en

cuenta que se debe dejar un espacio de alrededor 3 metros y medio en frente y

diagonal al sensor.

Luego colocamos el adaptador USB del módulo Xbee en el puerto USB del

computador.

Page 121: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

108

MANEJO DEL HMI DEL ROBOT IMITADOR

Comenzamos dando doble clic en el ícono del acceso directo con el nombre:

Robot_Imitador.

El HMI se despliega de la siguiente manera:

Dentro del HMI seleccionamos el modo en el cual deseamos que funcione la

plataforma, se puede escoger entre “modo suspendido” en el cual el robot debe

colocarse en un stand para que posteriormente imite el movimiento de las 4

extremidades el usuario, o se puede escoger “modo planicie” en el cual el robot se

coloca parado en una superficie fija para que imite los movimientos de las

extremidades superiores del usuario.

Luego seleccionamos el puerto en el cual se ha instalado el módulo Xbee, si no

se sabe el puerto en el cual se ha instalado el módulo Xbee se puede hacer lo

siguiente:

Dar clic en inicio, ir a Equipo y dar clic derecho, seleccionar propiedades y luego

dar clic en administrador de dispositivos, desplegar la pestaña Puertos COM y

LPT y obtendremos lo que se muestra en la siguiente imagen.

Page 122: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

109

Como se puede observar en la imagen, el puerto asignado al módulo Xbee es el

COM7.

Antes de dar clic en conectar se debe iniciar la plataforma RoboPhilo mediante el

interruptor que posee en la parte superior izquierda del pecho como se muestra

en la siguiente imagen:

Page 123: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

110

Colocar la plataforma en el stand para el modo suspendido o en un lugar plano y

fijo para el modo planicie.

Colocarse centrado a la cámara y a 2.5 metros aproximadamente frente al sensor

kinect o hasta ver en la pantalla el botón virtual “Imitar” .

Tocar “virtualmente” el botón imitar e inmediatamente el robot comenzará a imitar

los movimientos en las extremidades, que el usuario realice.

Tomar en cuenta los siguientes íconos y avisos que se presentarán durante todo

el proceso:

Este ícono indica que el usuario se encuentra en la posición adecuada

en la que se debe situar para que el robot lo imite correctamente.

Este ícono indica que el usuario se debe alejar del sensor kinect para

que el proceso de imitación se realice correctamente.

Este ícono indica que el usuario se debe acercar al sensor kinect para

que el proceso de imitación se realice correctamente.

Page 124: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

111

En la imagen anterior se muestra al usuario en una posición adecuada respecto al

sensor.

Para que el robot deje de imitar al usuario y se coloque nuevamente en posición

inicial, basta con caminar hacia adelante o hacia atrás hasta salir de la zona de

imitación.

Page 125: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

112

ANEXO C

MANUAL DE MANTENIMIENTO El parámetro principal de mantenimiento de la plataforma es la carga de la

batería. La plataforma con la que se trabaja cuenta con dos batería conectadas en

paralelo que dan un tiempo de autonomía de 30 a 50 minutos dependiendo del

uso y el modo con el que se utilice.

Para cargar la batería de la plataforma se utiliza la placa de control original y se

coloca el conector de la siguiente manera:

Primero se debe sacar el conector de la batería de la placa de control como se

muestra en la siguiente Figura:

Cabe recalcar que si se desea volver a colocar el conector se debe asegurar de

situar el cable negro siempre hacia afuera de la placa.

Page 126: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

113

El conector de la batería se debe conectar a la placa de control original de

RoboPhilo como se muestra en la imagen anterior.

Finalmente se conecta el cargador al orificio correspondiente en la placa de

control original de RoboPhilo como se muestra en la siguiente imagen:

Otro aspecto a tener en cuenta es el cambio de uno de los módulos Xbee, el cual

se encuentra situado en la espalda de RoboPhilo como se muestra en la siguiente

imagen:

Page 127: La versión digital de esta tesis está protegida por la Ley ...bibdigital.epn.edu.ec/bitstream/15000/6336/1/CD-4860.pdf · C#, un lenguaje orientado a objetos y aplicaciones web,

114

Para realizar un cambio en la placa de adaptación del módulo Xbee, basta con

quitar los 4 tornillos que tiene colocado el Xbee.

Si se desea reemplazar las baterías de la plataforma, basta con quitar los tornillos

que tiene la plataforma en la espalda como se observa en la imagen anterior y

abrir el compartimento que tiene bajo el pecho la plataforma como se muestra a

continuación:

Si se desea modificar alguna pieza de la plataforma o cambiar un servomotor,

referirse al manual de RoboPhilo contenido en el DVD, con el nombre: manual-

robophilo-kit.pdf.