CD-4860.pdf

Anuncio
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.
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
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
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
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.
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.
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.
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.
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
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
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
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.
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.
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
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].
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.
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].
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].
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
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.
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
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.
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].
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.
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
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.
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].
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
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].
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].
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).
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].
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).
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].
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, RB024S, 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).
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].
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].
25
Mínimo
Medio
Máximo
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].
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
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]
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.
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.
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].
Convertidor
USB a serial
Conector USB
Figura 2.18 Esquema de puerto de comunicación USB a serial “Axon II” [26].
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).
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].
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].
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.
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
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.
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).
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].
࢔
ቂ
૙
࢕
૙
ࢇ ࢖
ቃ ൌ ൣ࢚࢏࢐ ሺࢗ࢏ ǥ ࢗ࢔ ሻ൧ሺ૜Ǥ ૛ሻ
૙ ૚
39
3.2.2.
DEDUCCIÓN DE LAS ECUACIONES DE CINEMÁTICA INVERSA PARA
UN ROBOT CON TRES GRADOS DELIBERTAD ROTACIONALES
Z
a2
l3
pz
px
(px, py, pz)
r
py
Y
q1
X
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.
px
q1
py
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:
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:
pz
d
r
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:
ࢊ૛ ൌ ࢘૛ ൅ ࢖ࢠ૛ 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:
a2
q2
d
l3
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:
ࢗ૛ ൌ ‫ܛܗ܋‬
ି૚
ࢇ૛ ૛ ൅ ࢒૜ ૛ െ ሺ࢖࢞૛ ൅ ࢖࢟૛ ൅ ࢖ࢠ૛ ሻ
ቆ
ቇሺ૜Ǥ ૟ሻ
૛ࢇ૛ ࢒૜
42
El ángulo faltante se obtiene mediante una modificación a la Figura 3.11 (Figura
3.12), como se muestra a continuación:
a2
b2
q3
q2
Ȉ
l3
d
m3
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:
‫ ܛܗ܋‬ᢥ ൌ
࢓૜
࢒૜
࢓૜ୀ ࢒૜ ‫ ܛܗ܋‬ᢥ
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:
ࢗ૜
ൌ ‫ܖ܉ܜ‬
ି૚
‫ۇ‬
‫ۈ‬
‫ۉ‬
࢒૜ ‫ ܛܗ܋‬ቆ૚ૡ૙ െ ‫ܛܗ܋‬
ି૚
ࢇ૛ ૛ ൅ ࢒૜ ૛ െ ሺ࢖࢞૛ ൅ ࢖࢟૛ ൅ ࢖ࢠ૛ ሻ
ቆ
ቇቇ
૛ࢇ૛ ࢒૜
ࢇ૛ ൅ ࢒૜ ‫ ܖܑܛ‬ቆ૚ૡ૙ െ ‫ି ܛܗ܋‬૚ ቆ
૛
૛
ࢇ૛ ൅ ࢒૜ െ
ሺ࢖࢞૛
൅
૛ࢇ૛ ࢒૜
࢖࢟૛
൅
࢖ࢠ૛ ሻ
ቇቇ
‫ۊ‬
‫ ۋ‬ሺ૜Ǥ ૚૙ሻ
‫ی‬
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.
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.
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:
47
cbz
hmi
hmc
cdi
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.
y
x
z
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
48
persona como de la plataforma son los mismos, así que la denominación cdi
continúa siendo la misma.
cbz
cbz
hmc
mui
y
a)
hmi
x
cdi
bri
cdi
b)
mui
hmc
hmi
y
z
Figura 3.18 a) Esquema de articulaciones RoboPhilo, plano xy b) Esquema de
articulaciones RoboPhilo, plano yz
hmi
y
x
Figura 3.19 Gráfica del movimiento del brazo izquierdo de la plataforma,
únicamente en el plano xy.
49
bri
y
z
Figura 3.20 Gráfica del movimiento del brazo izquierdo de la plataforma,
únicamente en el plano yz.
cdi
Figura 3.21 Gráfica del movimiento del codo izquierdo de la plataforma.
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:
51
࢈࢘࢏ ൌ ࢚ࢍି૚ ൬
࢖࢟
൰ ሺ૜Ǥ ૚૚ሻ
࢖ࢠ
El ángulo hmi se calcula mediante el análisis del gráfico de la Figura 3.8.
Y
a2
q3
l3
py
r
(px, py, pz)
q3'
px
X
pz
Z
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:
a2
l3Cos(180-q2)
q3
cdi
l3
l3Sen(180-q2)
Figura 3.23 Triángulo tomado de la Figura 3.22, para el cálculo del ángulo q3.
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.
r
q3’
px
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:
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:
py
py
q3
q3
a)
hmi
q3’
q3’
b)
r
hmi
r
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 q 3 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:
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
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.
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.
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:
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.
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].
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
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
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.
63
cdi
bri
hmi
pri
rdi
cri
cdd
brd
hmd
prd
rdd
crd
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
2
bri
E4
6
OC3B
3
hmi
E5
7
OC3C
4
cdd
L3
38
OC5A
5
brd
L4
39
OC5B
6
hmd
L5
40
OC5C
Timer 3
Timer 5
64
7
rdi
H4
16
OC4B
8
pri
H3
15
OC4A
9
cri
H5
17
OC4C
10
rdd
B6
25
OC1B
11
prd
B5
24
OC1A
12
crd
B7
26
OC1C
Timer 4
Timer 1
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,
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.
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
B
Pedir datos de articulaciones al
sensor kinect
Ejecutar cálculos de cinemática
inversa
Escalar y corregir ángulos
A
67
A
Empaquetar datos de ángulos y
añadir cabecera de estado.
Enviar datos empaquetados al
microcontrolador mediante
comunicación serial
Recibir datos empaquetados en
el microcontrolador
Separar datos empaquetados
No
Cabecera de estado=activo
Si
Convertir ángulos en valores de PWM
Enviar valores de PWM a servomotores
Enviar dato de regreso al computador
mediante comunicación serial
¿Dato recibido en
computador?
Si
B
No
C
C
68
C
FIN
Figura 3.34 Diagrama de flujo, modo suspendido.
Modo planicie:
INICIO
E
Pedir datos de articulaciones al
sensor kinect
Ejecutar cálculos de cinemática
inversa
Escalar y corregir ángulos
Mantener constantes y en posición inicial a
servomotores de extremidades inferiores
Empaquetar datos de ángulos y
añadir cabecera de estado.
D
69
D
Enviar datos empaquetados al
microcontrolador mediante
comunicación serial
Recibir datos empaquetados en
el microcontrolador
Separar datos empaquetados
No
Cabecera de estado=activo
Si
Convertir ángulos en valores de PWM
Enviar valores de PWM a servomotores
Enviar dato de regreso al computador
mediante comunicación serial
¿Dato recibido en
computador?
Si
E
No
F
F
70
F
FIN
Figura 3.35 Diagrama de flujo, modo planicie.
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 ReceptorTransmisor 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].
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].
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].
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.
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:
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
Identificador
2
cdi
3
bri
4
hmi
5
6
7
8
9 10
cdd brd hmd rdi pri cri
Ángulos de servomotores
11
rdd
12
prd
13
crd
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.
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
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.
11
3
1
4
9
10
5
12
2
6
8
7
Figura 4.7 Descripción de cada área del HMI implementado.
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.
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
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:
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.
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
Cinemática Inversa*
Plataforma
Brazo Derecho
Usuario
Cinemática Inversa
Plataforma
ഥ
ࢄ૚
ࢄ૛
ࢄ૜
ࢄ૝
ࢄ૞
ࢄ
56.5° 56° 55.5° 56° 55.5° 55.9°
57°
57°
56° 58° 56° 56.8°
58.5° 57.5° 58° 57° 58.5° 57.9°
59°
60°
60.5°
59°
59°
61°
58.5° 58° 58.5° 58.6°
58° 59° 60° 59.2°
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°.
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.
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 .
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 .
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°.
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°
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
Extremidades
Extremidades
Superiores
Inferiores
Diferencia
Máxima
Grados
Porcentaje
Izquierda
Derecha
2
1.1
1.5
0.8
2
1.1
Izquierda
Derecha
1.5
0.8
2.4
1.3
2.2
1.2
MODO PLANICIE
Extremidades
Superiores
Izquierda
2.1
1.2
3.6
2
Derecha
2.7
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.
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
$1350
TOTAL
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
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.
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.
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.
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-losprimeros-robots-del-siglo-123846208.html
[13]http://bullyscomics.blogspot.com/2010/05/elektro-2-robot-boogaloo.html
96
[14]http://ingesaerospacerobotics.blogspot.com/2010/11/introduccion-la-roboticahistoria-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-demovimiento-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-demovimiento-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#
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-2010express-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-SerialAsincrona/2882934.html
[40] http://www.olimex.cl/product_info.php?products_id=392
[41] http://www.xbee.cl/
[42] http://www.sparkfun.com/
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.
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.
100
Calibración final y pruebas iniciales de la Plataforma RoboPhilo.
Estado final de la Plataforma RoboPhilo.
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:
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.
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:
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
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:
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.
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.
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.
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:
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.
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.
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.
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:
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: manualrobophilo-kit.pdf.
Descargar