BRAZO HUMANOIDE CONTROLADO VIA IMAGEN PARA MANIPULACIÓN REMOTA DE OBJETOS Juan Carlos Miguel Ángel Gonzáles Lévano, Renzo Daniel Padilla Montoya, Students Members Ricardo Palma University – Perú, {jkma3005, Daniel.dpm9} @gmail.com Adviser P.Huamani , member Ricardo Palma University-Perú [email protected] Abstract— The presentation of this project is based on a robotic structure formed by two articulated arms, controlled by computer. This requires a Kinect module is used in conjunction with two software applications that allow sensing of the position of the person, so you can capture the real-time movements made by each user, these are processed in software environments Rhinoceros / Grasshopper and added Firefly. These environments offer us a set of compatible with the Arduino development board, which allows us to perform the interaction of the physical world with the digital, once processed the information, the module sends signals to the respective joint performing the same movement. Additionally, it has a device which allows mapping the position of the fingers so that the robot by servomotors imitates the movement. Keywords— Robotic structure, Arduino, articulated arms, Grasshopper, Kinect, Rhinoceros, Firefly, Servomotors. I. NOMENCLATURA MPU: ADC: I2C: ICSP: NURBS: Multiple Process Unit Analogic Digital Conversor Inter-Integrated Circuit In Circuit Serial Programming Non-Uniform Rational B-spline T II. INTRODUCCION eniendo en consideración la realidad de una industria de competencias y riesgos, es que se propone realizar el diseño y control de un brazo articulado con 4 grados de libertad, con una mano robótica con articulaciones de los 5 dedos, capaz de mover objetos, mediante un sistema de control Maestro – Esclavo basado en imágenes “…sistemas maestro-esclavo … el operador actúa moviendo el efector final de un manipulador maestro cuyos movimientos deben ser reproducidos por el efector final del manipulador esclavo.” [1]. El sistema se compone de una estructura mecánica, que utiliza como mecanismos de actuación de las articulaciones, a servomotores que realizan el movimiento angular. Además, posee una etapa de control electrónico, basado en tarjetas de desarrollo Arduino Uno y Arduino Mega 2560, basadas en los AVR ATmega 328p y ATmega 2560, respectivamente, las cuales se utilizarán como interfaz para enviar las señales de control de posicionamiento de los servomecanismo, ,y además realizan la adquisición de datos de los sensores para el control de la mano a través basado en sensores de flexión. Para la toma de imágenes que realiza el usuario se está usando el módulo Microsoft Kinect que es una interfaz basada en una cámara IR, camára RGB y micrófono, que permite reconocer los movimientos y comandos de voz para lograr interactuar con la PC sin necesidad de tener contacto físico [2]. Para el procesamiento de esta imagen se usa el programa Rhinoceros el cual es una herramienta para el modelado de tres dimensiones basado en NURBS. [3, 4]. Es un software agregado para Autodesk es usado normalmente para el diseño industria, la arquitectura, diseño naval, entre otros. Dentro del software Rhinoceros, está instalado su plugin Grasshopper, que entre sus componentes de trabajo se encuentra “Firefly” que tiene todo un menú dedicado y compatible con la tarjeta Arduino [5], interfaz que va a permitir la manipulación de las articulaciones conectadas a la tarjeta. III. DESARROLLO Para el desarrollo del presente proyecto, se tuvo que tener en cuenta la potencia de alimentación que requerían los servos y el torque necesario para la dinámica del brazo, así como también el reconocimiento espacial de la posición del usuario frente al módulo kinect, A. Diseño Se procedió a realizar el siguiente diagrama de conexiones para poder lograr el control de un solo brazo y luego proceder a la réplica del control para el segundo brazo. Fig. 1 Diagrama de bloques de funcionamiento del proyecto B. Programación La programación se desarrolló en el entorno IDE de arduino mediante lenguaje C para el mapeo y el control de las manos así como la programación de la transmisión inalámbrica mediante los módulos Xbee. Fig. 2 Diagrama de bloques del funcionamiento de la mano robótica mediante la lectura de los sensores de flexión y la comunicación serial entre micro-controladores. Para la kinect programación del control mediante la toma de imágenes del se procedió a instalar el SDK v1.8 para poder ser reconocido por la computadora. Una vez reconocido se utilizó la librería de Rhinoceros, Firefly, en este entorno la programación se realiza de manera gráfica mediante la colocación de bloques donde cada uno cumple funciones independientes. Una y abrir vez logrado este reconocimiento procedemos a conectar el kinect el grasshopper para que mediante la conexión de bloques de programación lograremos el reconocimiento de las articulaciones de una persona (Usuario), la ventaja del programa es que permite graficar las articulaciones en un entorno de 3 dimensiones dándonos las coordenadas de cada articulación, tal como se muestra en la figura 3. El número máximo de articulaciones que detecta el kinect utilizando este programa es de 19, de las cuales para el movimiento de los brazos solo utilizaremos las coordenadas correspondientes a los hombros, codos, y muñecas, Fig. 3 - Diagrama de bloques del reconocimiento de las articulaciones (19 puntos en el espacio tridimensional de articulaciones del cuerpo humano) mediante el programa Rhinoceros y Grasshopper (a) (b) (c) Fig. 4 (a) Imagen captada por la cámara RGB del Kinect. (b) Imagen captada por la cámara IR del Kinect. (c) Imagen tridimensional de las articulaciones obtenida mediante el software Rhinoceros C. Pruebas OBTENCIÓN DEL ÁNGULO DE LA ARTICULACIÓN DEL CODO Para la obtención del ángulo que forma el codo, se crean los vectores que simularán el brazo y antebrazo, a partir de la imagen obtenida con el Kinect y Grasshopper. Para de esta manera, los servomotores que se posicionarán en ese ángulo determinado, emularán los movimientos de los músculos del brazo. “La cinemática del brazo del robot trata con el estudio analítico de la geometría del movimiento de un robot con respecto a un sistema de coordenadas de referencia fijo….”[6]. Fig. 5 Ángulo de Articulación del codo. Dónde: A: Coordenada cartesiana del Hombro Derecho B: C oordenada cartesiana del Codo Derecho C: Coordenada cartesiana de la Muñeca Derecha Vector del brazo → R = A − B …(1) Vector del antebrazo → S = C − B …(2) Ángulo formado entre el brazo y antebrazo: →→ R∙S ) …(3) θ = arccos( |R||S| → → Obtención del ángulo de la articulación vertical del hombro Fig. 6 Ángulo de articulación vertical del Hombro Dónde: B: Coordenada cartesiana del Codo Derecho D: Coordenada cartesiana del Cuello E: Coordenada cartesiana de la Cintura Vector del brazo → Vector del antebrazo T = B − D …(4) → Ángulo formado entre el Brazo y la Columna vertebral: U = E − D …(5) → → T∙U ) …(6) θ = arccos(|T||U| → → ETAPA DE CONTROL DE LA MANO. Para la lectura de los movimientos de las articulaciones de los dedos, se optó por la utilización de sensores de flexión, los cuales basan su resistividad en propiedades del carbono que al estar curvado, su resistencia varía en relación con el radio de curvatura, a menor radio, mayor será su resistividad [7]. Estos sensores se acoplaron en cada dedo de la mano derecha, montándolos sobre un guante, para así medir el grado de flexión que realiza cada dedo. El sensor de flexión utilizado, el cual es el sensor de flexión de 4.5 pulgadas varía su resistencia de un valor nominal cuando no está curvado que es de 10 KΩ , a un valor máximo, cuando tiene la máxima curvatura (90º) de 20 KΩ. [8]. Fig. 7 Acoplamiento de los sensores de flexión en un guante, y tarjeta de adquisición de datos basada en Arduino MEGA 2560 Para lograr la adquisición del sensor, para su conversión analógica a digital fue mediante un divisor de tensión, de la cual su ecuación de lectura está dada por la siguiente fórmula: 5xRs V …….(7) V s = 10KΩ+Rs Una vez sensado el valor de flexión de los dedos, se requiere un sistema de posicionamiento para los dedos de la estructura robótica. Para ellos se tomó en base al movimiento de flexión y extensión [9] de los dedos, que son realizados por los tendones flexores “en los cuatro últimos dedos sólo hay un tendón extensor … en el pulgar dos tendones…” [10]. Fig. 8 Músculos de la región posterior del antebrazo y tendones extensores de los dedos. (Latarjet “Anatomía Humana” 4ta Edición. p.570) Para emular los movimientos de flexión y extensión de cada dedo, se diseñó un sistema basado en hilos de nylon que emulan a los tendones flexors y extensores, conectados a cada estructura mecánica de los dedos articulados, los cuales serán accionados mediante servomotores. (a) (b) Fig. 9 Sistema articulado de las mano robótica, mediante hilos de nylon y servomotores. ETAPA DE GIRO DEL ANTEBRAZO Para realizar los movimientos de Supinación y Pronación que corresponden al giro del antebrazo. “En pronación, el antebrazo está exactamente en la prolongación del brazo, siguiendo su eje... En supinación, el antebrazo forma con el brazo un ángulo abierto en sentido lateral.” [101] Página 536. M. Latarjet, R, Liard“, Anatomía Humana” Tomo I, 4ta Edición. Editorial Panamericana, 2004, p. 536. Fig. 10 Movimientos de Supinación y Pronación del antebrazo Se sensó dicho movimiento, utilizando un módulo MPU6050, que incorpora un acelerómetro y un giróscopo. Este módulo se situó en la parte superior de cada antebrazo (derecho e izquierdo), teniendo como estado inicial, la posición de “pronación”. Cada módulo envía los datos sensados a su respectiva tarjeta de interfaz y procesamiento que será constituida por tarjetas Arduino Mega, utilizando el Bus de comunicación I2C [11, 12] . Una vez siendo adquiridos los datos por la tarjeta, se realiza un procesamiento de las señales, utilizando el Filtro de Kalman [13]; esto debido que, tanto los datos del acelerómetro como del giróscopo, poseen ruido y gran sensibilidad a las perturbaciones, lo cual hace necesario realizar un filtrado y predicción de los datos tomados, para corregir las desviaciones. De ambos datos (giróscopo y acelerómetro), se obtienen los ángulos de rotación en cada eje, de los cuales solo se utilizará el ángulo de rotación X (Roll o ángulo de alabeo). Fig. 11 Ángulos de rotación en los ejes X, Y, Z para el módulo MPU6050 Los datos que se obtienen del acelerómetro (medición de las aceleraciones en los ejes X, Y y Z) se introducirán a la siguiente fórmula para obtener la rotación alrededor del eje X: ….(8) Asimismo, la ecuación que permitirá determinar el ángulo de rotación en el eje X a partir de los datos del Giróscopo, se basa en la ecuación mostrada a continuación. Cabe resaltar que el giróscopo mide la velocidad angular, por lo cual la determinación del ángulo, depende del ángulo en un instante anterior. Ángulo X = Ángulo X anterior + n∆t …(9) Una vez obtenido, los ángulos de rotación alrededor del e je X, tanto a partir del Acelerómetro y a partir del giróscopo, se procesan utilizando el Filtro de Kalman utilizando el procesador de la tarjeta Arduino Mega 2560. Fig. 12 – Respuesta en el Tiempo de la Señal filtrada (Filtro de Kalman), Señal del Giroscopio y Señal del Acelerómetro. Una vez obtenido los datos filtrados, se envían las señales filtradas a las tarjetas de control, que se encuentran ligadas a la estructura robótica de los brazos; estas tarjeta enviarán las señales de posicionamiento a los servomotores que realizarán el movimiento de los antebrazos. Para realizar esta comunicación de manera inalámbrica, se utilizan módulos Xbee, que se basan en el protocolo de comunicación Zigbee. ETAPA DE RECONOCIMIENTO DE POSICIÓN FRENTE A KINECT Al realizar las pruebas frente al kinect se encontró que este no distingue si la persona se encuentra de frente o de espalda, se optó por utilizar algunas herramientas de procesamiento digital de imágenes. Por lo cual, valiéndonos de la Web Cam de la Laptop utilizada, se capturó una fotografía antes de realizar el procesamiento de movimiento de los brazos robóticos. Una vez capturada la imagen, se procedió a separarla en sus canales de color y posteriormente realizar una segmentación de cada imagen retirando los 2/3 de filas de la parte superior de cada cuadro capturado. Seguidamente, se continuó con la aplicación de una operación de histograma para determinar un posible umbral, y así realizar una búsqueda de pixeles para reconocer la zona de la cabeza (por el tipo de color de cabello).Como este procedimiento no permite una completa segmentación, se tuvo que complementar con el uso de operaciones morfológicas de dilatación y erosión, utilizando elementos estructurantes en forma de líneas verticales y horizontales. Esto permitió atenuar aquellos pixeles correspondientes a aquellas zonas de marcos o líneas encontradas en el fondo de la imagen capturada. Una vez realizada la segmentación completa, se finalizó con un condicional que permitió realizar una cuenta de pixeles mayor, siempre y cuando la persona se encuentre dando la espalda al Kinect. Mientras que si se encontraba dando el frente, dicho suma de pixels fue mínima debido al hallazgo de pixeles correspondientes al rostro, con valores superiores al tono de gris intermedio, aproximadamente. Fig. 13 - Resultado del Procesamiento digital para detectar posición de Espalda hacia el Kinect. Fig. 14 - Resultado del Procesamiento digital para detectar posición de Frente hacia el Kinect. Fig. 15 - Diagrama de bloques del procesamiento digital de imágenes. IV. RESULTADOS Se logró captar los movimientos en tiempo real de una persona usando el dispositivo Microsoft Kinect, procesando estas imágenes mediante el software Grashopper, para así generar una imagen de las articulaciones y sus movimientos en la pantalla de un computador. Fig. 16 – Proyección del usuario en el programa Rhinoceros. Una vez obtenidos las imágenes en tiempo real de los movimientos de una persona, se procesaron las coordenadas generadas, para formar vectores que nos permiten expresar los ángulos de movimiento de las articulaciones del brazo. Estos ángulos calculados, fueron procesados con mediante las tarjetas de desarrollo Arduino Uno y Mega 2560, para replicarlos en los servomotores que forman las articulaciones de la estructura del brazo robótico. Fig. 17 – Replicación en la estructura robótica de los movimientos del brazo derecho I. CONCLUSIONES ● La telemanipulación en tiempo real de objetos, mediante un control vía imagen de los movimientos de una persona, se puede hacer posible utilizando el módulo Microsoft Kinect, como módulo de adquisición de imágenes y utlizando como herramienta de procesamiento de imagen y control, el software Rhinoceros, en su entorno Grasshopper y su agregado Firefly. Con este sistema se obtiene una correcta adquisición de los movimientos de las articulaciones de los brazos, en las tres dimensiones. A este sistema, se le agrega el sensado de las posiciones de rotación del antebrazo utilizando un módulo de giróscopo y acelerómetro; además para el sensado de las articulaciones de los dedos, se complementa con un guante donde se acoplan sensores de flexión para cada dedo. ● El grado de precisión de los movimientos replicados por la estructura robótica del brazo y la mano, depende de un entorno donde la persona situada frente al Kinect, debe tener total libertad de espacio, y no haya otras personas situadas en el ángulo de enfoque del Kinect. Además, otro factor es el torque que poseen los servomotores, con un torque superior al necesario para elevar el peso de la estructura, la precisión mejora. Para el movimiento de rotación del antebrazo (supinación y pronación), se hace uso de un módulo basado en giróscopo y acelerómetro, para el cual se requiere filtrar las señales obtenidos por ambos parámetros, utilizando un Filtro de Kalman, el cual reduce el error generando una alta precisión del posicionamiento. II. OBSERVACIONES Esta estructura responde a los movimientos en tiempo real del operador a una buena precisión, pero con limitaciones físicas en cuanto al armado de la estructura, debido a torques que manejan los servos colocados en cada articulación III. RECOMENDACIONES Se debe hacer un análisis de potencia y torque para los servomotores utilizados en el brazo robótico, ya que algunas articulaciones (como la del hombro y codo), son las que requieren de mayor torque para lograr un movimiento más fluido y preciso. IV. REFERENCIAS [1] A. Ollero. “Robótica, manipuladores y robots móviles” 1ra Edición. Editorial Marcombo. Barcelona. 2001. P. 401. [2] J. Webb and J. Ashley. “Beginning Kinect Programning with the Microsoft Kinect SDK”. Appres Editorial. 2011 [3] A. Payne, r. Issa, “Grasshopper Primer for version 0.6.0007” 2nd Edition. Traducción Francisco Calvo y Khaterine Cáceres. 2009. [4] R. Cheng. “Inside Rhinoceros 5.0” 4th Edition. Delmar Cengage Learning. 2013. [5] J. Ruiz. “Entornos Gráficos para la programación Plataforma Open Hardware Arduino”. 2011. Pp. 13-26. [6] K. Fu, R. Gonzalez, C. Lee, “Robótica: Control, detección, visión e inteligencia” . 1ra. ed. McGraw Hill. México. 2009. Pp. 13, 15-18. [7] S. Dixit and N. Shingi. “Implementation of Flex sensor and Electronic Compass for Hand Gesture Based Wireless Automation of Material Handling Robot” International Journal of Scientific and Research Publications, Volume 2. Issue 12, December 2012 pp. 1-2. [8] Spectra Symbol. “Flex Sensor” [Online]. Available: http://www.spectrasymbol.com/flex-sensor , [9] L. Testut, A. Latarjet. “Compendio de Anatomía descriptiva” 22° Edición. Editorial Masson. Barcelona. 2001. P. 127 [10] L. Testut, O. Jacob. “Compendio de Anatomía Topográfica” Salvat Editores. Barcelona. 1976. Pp. 417-418. [11] Philips Semiconductors. “The I2C-bus and how to use it (including specifications)” 1995. [12] V. Himpe. “Mastering the I2C Bus” Editorial Elektor. 2011. [13] M. Grewall and A. Andrews. “Kalman Filtering. Theory and Practice with MATLAB”. 4th Edition. Willey Editorial. 2015. [14] M. Rashid. “ Electrónica de Potencia”. 2da. ed. Prentice Hall, México,1993. [15] A. Barrientos, L. Peñìn, C. Balaguer, R. Aracil, “Fundamentos de Robótica ”, 1ra. ed., McGraw Hill, España, 2003. [16] C. Chang, L. Carson, “Sensores y Actuadores” . 2da. ed. Pearson.España. 2012. [18] Pallas, R. “Sensores y Acondicionadores de Señal ”. 4ta. ed., Marcombo, México, 2007. [19] M. Perez, M. Readman, “Servomecanismos Digitales” , 1ra Ed. Horizonte. Guadalajara 2010. [20] H. Leyton. “ Desarrollo, implementación y prueba de un filtro de Kalman del tipo UKF para un vehículo áereo no tripulado ”, Universidad EAFIT. Medellín. 2009. [21] R. Faludi. “ Building Wireless Sensor Networks: with ZigBee, XBee, Arduino, and Processing ”, 1ra Ed. O'Reilly Media. EE.UU. 2011. [22] F. Netter. “Atlas de Anatomía Humana”. 3ra Edición. Editorial Masson. 2003 pp.437-447. [23]J. Gosling, P. Harris, J. Humpherson, I. Whitmore and P. Willan. “Anatomía humana” 2da Edición. Editorial Mosby/Doyma Libros. Hong Kong. 1994. pp. 3.21-3.28 [24] R. Putz, R. Pabst. “Atlas de Anatomía Humana Sobotta”. 21° Edición. Editorial Médica Panamericana. España. 2001. Pp181-183. [25] Página 536. M. Latarjet, R, Liard“, Anatomía Humana” Tomo I, 4ta Edición. Editorial Panamericana, 2004, p. 536. V. BIOGRAFÍA Renzo Daniel Padilla Montoya, estudiante de 9no ciclo de la Universidad Ricardo Palma, Se desarrolla en programación en el entorno Arduino desarrollando trabajos de investigación para el Cecos Brigurp, y el laboratorio de Control de la Universidad. Ponente en INTERCON 2014 en el concurso de proyectos. Juan Carlos Gonzáles Palma, Brigadista del estudios de de la Univeridad. Ponente en INTERCON 2014 Lévano, Estudiante de 10mo ciclo de la Universidad Ricardo voluntariado Cecos Brigurp. Se encuentra desarrollando investigación para el Cecos- Brigurp y el laboratorio de Control en el concurso de proyectos.