BRAZO HUMANOIDE CONTROLADO VIA IMAGEN PARA

Anuncio
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.
Descargar