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.