You are on page 1of 10

BRAZO MANIPULADOR TIPO SCARA PARA CLASIFICACIÓN DE PIEZAS

UTILIZANDO INFORMACIÓN VISUAL

M en C Fernando Vázquez Torres, Eduardo Rafael Bueno, Tania Jaramillo Torres


Alberto Ocotitla Hernández

Unidad Profesional Interdisciplinaria de Ingeniería y Ciencias Sociales y Administrativas


Calle Té No. 950, Col. Granjas México, Delegación Iztacalco, México, D.F., C.P. 08400
Correo electrónico: upiicsa.robotica@gmail.com

RESUMEN de los robots, principalmente porque se le


En el presente artículo se describe desde un consideraba una derivación de la ingeniería
enfoque informático, el diseño y la construcción de mecánica.
los diversos componentes mecánicos, electrónicos,
y de software de un brazo manipulador de 3 grados El presente trabajo propone un enfoque distinto al
de libertad en configuración SCARA, desarrollado de la ingeniería mecánica, pues no profundiza en
para la clasificación de piezas, utilizando técnicas los aspectos relacionados al diseño de elementos
de procesamiento digital de imágenes y percepción de máquinas y deja de lado la ciencia de los
por computadora. materiales. En su lugar propone abordar la
construcción de un brazo manipulador haciendo
Palabras clave: Robótica, Procesamiento Digital énfasis en los aspectos informáticos, tales como el
de Imágenes, Percepción por Computadora, modelado 3D, la interfase de comunicación y
Microcontroladores PIC, Comunicaciones R232, control entre la PC y el robot, el desarrollo de
PicBasic, ActiveX, Visual Basic. software para la cinemática inversa y el sistema de
percepción.
I. INTRODUCCIÓN
Los brazos manipuladores han sido fundamentales La tarea particular que ha de realizar el brazo robot
en el desarrollo histórico de la robótica, pues desde es la que se describe en el Concurso Nacional de
que Raymond Goertz1 diseñó el primer MiniRobótica, cuyas reglas se pueden consultar en;
manipulador manejado a distancia para la http://www.minirobotica.org .
Comisión de Energía Atómica de EUA en 1951,
los robots manipuladores no han dejado de ser La competencia consiste en construir y programar
vigentes, incluso con una naciente industria un brazo manipulador autónomo, capaz de colocar
enfocada a la integración con los seres humanos, y en su contenedor correspondiente y en el menor
proyectos de robótica espacial, los brazos tiempo, 5 piezas blancas y 5 negras, distribuidas
manipuladores siguen siendo muy utilizados sobre un tablero de 40 x 40 cm, de color gris. El
principalmente en la manufactura, incluso de color y la altura de las piezas no se conocen, pero
robots y máquinas más avanzadas. sí las coordenadas. El robot debe ser capaz de
averiguar el color de las piezas utilizando sensores
La robótica es una rama interdisciplinaria, pues se ó cámaras de video.
requieren conocimientos de mecánica, electrónica,
programación y matemáticas, en este contexto II.MÉTODO
interdisciplinario, cada ingeniero aporta lo propio El desarrollo del proyecto se abordó en 3 etapas
de su especialidad, sin embargo tradicionalmente fundamentales, mecánica del robot, electrónica y
se le ha puesto mayor énfasis a los aspectos físicos desarrollo de software, a continuación se describirá
cada una de las etapas, recordando que este trabajo Para la elaboración de las piezas se eligió Acrílico
hará mayor énfasis en el desarrollo de software. y Sintra de 6 mm de espesor, por ser materiales
fáciles de conseguir y maquinar, el acrílico se
MECÁNICA DEL ROBOT compró por retazos y el Sintra en láminas de 30 x
20 cm.
En el aspecto mecánico la primer tarea consistió en
analizar y decidir la anatomía más adecuada para la Conociendo la anatomía del robot, el sistema de
tarea que iba a realizar el robot, en la literatura se impulsión y los materiales, se comenzó a diseñar el
encuentran 5 configuraciones clásicas de modelo, para esta tarea se utilizó SketchUp2 de
manipuladores robóticos, ver figura 1. Google, por ser un software gratuito y tener la
posibilidad de realizar modelos con materiales y
simulaciones en 3D de forma muy sencilla.

La figura 2 ilustra el volumen de trabajo de un


robot SCARA, como se pude observar, se cubre sin
problemas el tablero y los contenedores,
considerando enlaces de 30 cm, que es el largo de
las láminas de Sintra.

Fig. 1 Configuraciones clásicas

Después de analizar las configuraciones, se eligió


el manipulador en configuración SCARA
(Selective apliance arm robot for assembly) por sus
siglas en inglés.

Este manipulador puede realizar movimientos Fig. 2 Volumen de trabajo de un robot SCARA
horizontales de mayor alcance debido a sus dos
articulaciones rotacionales, además también puede Para las articulaciones se diseñaron soportes en
hacer un movimiento lineal en su tercera forma de “C” con acrílico, dentro de las cuales se
articulación. fijaron los actuadores, se decidió utilizar
servomotores de aeromodelismo, por ser de fácil
El único sistema de impulsión que se consideró adquisición y control, así como tener una buena
para el proyecto fue el eléctrico, pues la hidráulica relación peso-torque, cada articulación se formó
y la neumática son disciplinas ajenas a la colocando dos servomotores sobrepuestos para
Ingeniería Informática. disminuir la fatiga en los ejes, tal como se puede
apreciar en la figura 3.
Fig. 3 Soporte de los servomotores

Por cada articulación se utilizó un servomotor


HITEC H311 y un VIGOR VS-2, la razón es Fig. 5 Efector final
porque tienen el sentido de giro invertido, de esta
forma ambos servos reciben el mismo ancho de La base es una caja de madera de 2 cm de espesor,
pulso para ubicarse en la posición deseada. con medidas exteriores de 20 x 20 cm, se diseñó de
esta forma y con esas medidas para facilitar su
Los enlaces se formaron fijando las piezas de colocación frente al tablero de la competencia, ver
Sintra a los costados de los servomotores, tal como figura 6.
se muestra en la figura 4, cada enlace tiene 30 cm
de largo.

Fig. 6 Robot colocado frente al tablero

Fig. 4 Enlace ELECTRÓNICA DEL ROBOT

El efector final se diseñó específicamente para la La etapa electrónica se divide en 2 partes, la de


competencia, pues las piezas tienen una rondana de comunicación con la computadora y la de control
metal en su cara superior, por ello un servomotor de los servomotores.
HITEC de ¼ de escala hace bajar o subir una guía
que tiene un imán en el extremo, así el efector final Para la comunicación se implementó una interfaz
sostiene la pieza hasta que el servo eleva la guía serial entre la PC y 1 microcontrolador
liberando la pieza por presión, la figura 5 muestra PIC16F628, a 9600 baudios sin paridad y con 1 bit
el mecanismo. de parada.
En la norma R232 se establecen voltajes de –3V a
-25V como “1” lógico y de 3V a 25V para el “0”
lógico, por lo tanto se tuvo que utilizar el circuito
integrado MAX232, que es un convertidor de
señales R232 a niveles TTL. La figura 7 muestra el
diagrama de conexiones para una comunicación
serial asíncrona entre una PC y un
microcontrolador.

Fig. 9 Distribución de pines en el PIC16F628

A continuación se muestra un ejemplo en lenguaje


PicBasic3 para realizar la recepción de datos desde
una terminal R232

'UPIICSA IPN - Ing. Informática


'Ejemplo de comunicación serial asíncrona

INCLUDE "MODEDEFS.BAS" ‘ definiciones R232


CMCON = 7 ‘Puerto A digital
DATO_ RECIBIDO VAR BYTE ‘ variable para el dato
TRISA = %11111 ‘ Puerto A como entrada
TRISB = %00000000 ‘Puerto B como salidas
SERIN PORTA.1,T9600,DATO_RECIBIDO ‘ Recepción
END

Fig. 7 Comunicación serial asíncrona


Un servomotor es un actuador eléctrico que tiene la
capacidad de ubicarse en cualquier posición dentro
Se eligió este microcontrolador por ser compatible
de su rango de operación, está conformado por un
con el PIC16F84, sin embargo el PIC16F628 tiene
motor, una caja reductora y un circuito de control,
el doble de memoria de programa, USART y reloj
ver figura 10, los servomotores tienen 3 terminales:
interno de 4 Mhz, lo cual simplifica el circuito y
reduce el costo del mismo.
• Terminal positivo: Alimentación del motor.
La figura 8 muestra el la distribución de los pines • Terminal negativo: Tierra del motor.
en el circuito integrado MAX232 y la figura 9 • Entrada de señal: Señal de control PWM.
muestra los pines del PIC16F628.

Fig. 8 Distribución de pines en el MAX232 Fig. 10 Servomotor desarmado


La figura 11 ilustra la relación entre el ancho de
pulso y la posición de los servomotores HITEC.

Fig. 12 Regulador de voltaje MC7805CT

DESARROLLO DE SOFTWARE

El software se divide en dos partes, la primera


Fig. 11 Relación PWM – ángulo en enfocada al sistema de percepción del robot, y la
Servomotores HITEC segunda orientada a calcular la cinemática inversa4
y crear una interfase con el sistema electrónico,
El microcontrolador es el encargado de recibir ambos sistemas se desarrollaron en Visual Basic 6
serialmente 3 datos, correspondientes a los ángulos por su facilidad para el diseño de interfases
de las articulaciones del robot, posteriormente gráficas y comunicaciones seriales. El sistema de
envía el ancho de pulso correspondiente a cada percepción del robot se encarga de las siguientes
servomotor, esto se repite dentro de un bucle tareas:
infinito, de esta forma se garantiza que el robot
siempre este manteniendo su posición. • Adquirir imágenes desde una cámara web
• Procesar la imagen
A continuación se muestra un ejemplo en lenguaje • Obtener el color de las piezas
PicBasic para generar el ancho de pulso, en este
• Determinar el origen de las coordenadas
ejemplo el envío de la señal se encuentra dentro de
• Obtener las coordenadas relativas al robot
un bucle que hace moverse al servomotor, desde
• Exportar en archivo de texto los colores
–90° a 90°, considerando el rango de la señal desde
correspondientes a cada pieza.
1 a 2 ms,

Dato_PWM var byte ' Variable para el ancho de pulso


La cámara que se utilizó fue una WebCam marca
Genius, modelo VideoCam GE11, que tiene las
FOR Dato_PWM = 100 to 200 step 1' 1 a 2 ms siguientes características:
PULSOUT PORTB.0, Dato_PWM
NEXT Dato_PWM
END • Interfaz USB 1
• Sensor CMOS de 352x288
La fuente de alimentación del sistema se • Enfoque de lentes manual
implementó con un cargador de una Laptop, sin • Imagen en formato JPG
embargo se tuvo que modificar pues a la salida • Video en formato AVI
entregaba únicamente 12 y 5V, para aprovechar • 30 fotogramas por segundo
ambas salidas se le soldó un MC7805CT, que es un
regulador de voltaje a la salida de 12V para La cámara se montó sobre un soporte de aluminio
obtener 5V a 1A, suficiente para alimentar los elevado a 1 metro del tablero, ubicado frente al
servomotores, y la salida de 5V se utilizó para el robot. La adquisición de las imágenes se
circuito con el microcontrolador, ver figura 12. implementó haciendo uso de un control ActiveX
desarrollado en el Grupo de Robótica de la unidad, • Conversión a escala de grises
llamado UPIICSA CAM, que es de libre • Suavizado espacial
distribución y se puede descargar de la siguiente • Aumento del contraste
página web: http://upiicsa.no-ip.org • Umbral binario
• Recorte
Un control ActiveX es en esencia un componente • Determinación del origen de coordenadas
de software reutilizable, que se puede insertar en
• Determinación del color de las piezas
aplicaciones o en páginas de Internet bajo el
sistema operativo Windows. A continuación se
En el lenguaje Visual Basic, para contener una
muestra un ejemplo en lenguaje Visual Basic 6,
imagen se utiliza una matriz de 3 dimensiones,
para crear una ventana de visualización y capturar
donde los 3 elementos de la primera dimensión
una imagen desde una cámara Web utilizando el
corresponden a los colores del modelo RGB5 y los
control UPIICSA CAM.
elementos de la segunda y tercera dimensión como
números de 8 bits (0 a 255), donde cada número
‘Inicio de la WebCam y captura de una imagen en un
‘control PictureBox
representa la intensidad luminosa del modelo RGB
Private Sub Command1_Click() en determinado punto de la imagen.
UPIICSACam1.Iniciar
UPIICSACam1.Mostrar_Visualizacion
UPIICSACam1.Enviar_imagen_al_portapapeles
Un concepto importante es el histograma, que es
Picture1.Picture = Clipboard.GetData un gráfico de distribución de frecuencia de los
End Sub niveles de intensidad de la imagen para cada uno
de los colores del modelo RGB, ver figura 14.
Como se puede apreciar el utilizar componentes
reutilizables de software, minimiza el tiempo de
desarrollo de aplicaciones. En la figura 13 se
muestra la aplicación del ejemplo en tiempo de
diseño y en tiempo de ejecución.

Fig. 14 Histograma RGB de una imagen

Dentro del procesamiento digital de imágenes se


distinguen dos tipos básicos de operaciones, las
Fig. 13 Ejemplo UPIICSA CAM en tiempo de operaciones punto a punto y de entorno, también
diseño y en ejecución llamados filtros espaciales ó convolución espacial.

Para el procesamiento y análisis de las imágenes se Los métodos punto a punto se caracterizan por
utilizó un control ActiveX llamado UPIICSA actuar sobre píxeles individuales de la imagen, en
IMAGE PROCESSOR también desarrollado en el las operaciones de entorno el valor de cada píxel es
Grupo de Robótica de la Unidad, que se puede modificado por las contribuciones de sus píxeles
descargar libremente de la página web del grupo. vecinos, en esencia es la multiplicación de un
conjunto de píxeles de la imagen original por un
Las operaciones que se implementaron fueron las patrón matricial de ponderación que constituye la
siguientes: máscara o kernel de convolución, ver figura 15.
Fig. 17 Filtro para suavizado espacial

Después se aumentó el contraste con la finalidad


de facilitar la diferenciación de las zonas negras y
Fig. 15 Filtrado espacial de 3x3 píxeles blancas del fondo gris. El método implementado en
el control ActiveX aumenta el contraste dividiendo
La primera operación que se implementó fue la la matriz por la función seno del incremento,
conversión a escala de grises, debido a que las donde 1 y 99 son el máximo y mínimo nivel de
imágenes a color tienen diferentes valores RGB en contraste respectivamente, esta operación es punto
cada píxel, por lo tanto se requieren tres cálculos, a punto y se puede expresar de la siguiente manera:
esto no ocurre en las imágenes a escala de grises
pues los valores RGB son iguales y solo se precisa F(x,y) = (x,y)/ seno(i)
un cálculo. La conversión a escala de grises es una
operación punto a punto y esta dada por la Donde i es un valor entre 1 y 99
siguiente función:
En la figura 18 se muestra el resultado de aumentar
F(x,y) = (R(x,y) + G(x,y) + B(x,y))/3 el contraste a una imagen.
La figura 16 muestra el resultado de aplicar una
conversión a escala de grises sobre una imagen.

Fig. 18 Aumento del contraste

Después se aplicó un umbral binario para facilitar


la lectura del color de la pieza, esta es una
operación punto a punto que puede expresarse en
forma de función de la siguiente manera:
Fig. 16 Histograma de una imagen a color y de
una imagen a escala de grises F(x,y) = 0 si (x,y) < u
255 si (x,y) > v
Posteriormente se realizó un suavizado espacial
basándose en una máscara de 3x3 píxeles, el filtro En donde u y v son los umbrales inferior y superior
que se utilizó se muestra en la figura 17. respectivamente. La figura 19 muestra el resultado
de aplicar un umbral binario con u = 25 y v = 120.
Para la lectura del color de las piezas, se dibuja un
recuadro sobre cada una de las coordenadas, en
cada recuadro se cuenta el número de píxeles
blancos y negros, así se decide el color de la pieza.
Las funciones en el control ActiveX reciben 4
parámetros, correspondientes a las coordenadas
iniciales y finales de la porción de imagen sobre la
Fig. 19 Imagen original y resultado de aplicar cual se hace el conteo, ver imagen 22.
un umbral binario

Posteriormente se recorta la imagen para obtener


una subimagen que muestre únicamente al tablero,
ver figura 20, esta función requiere 4 parámetros,
correspondientes a las coordenadas iniciales y
finales del recuadro con la porción de imagen de
interés.

Fig. 22 Análisis de la imagen

Las coordenadas para el robot se convierten a una


configuración en la que el origen está en el
extremo inferior izquierdo y se exportan en
archivos de texto, para la posterior lectura desde el
Fig. 20 Recorte de una imagen
software de cálculo de la cinemática inversa y
control del robot. A continuación se muestra parte
Conociendo las dimensiones de la imagen
del código del software de percepción y en la
recortada y las dimensiones del tablero, se puede
figura 23 se muestra la interfaz gráfica del mismo.
establecer una relación entre centímetros y píxeles
en la imagen, así es posible leer el color de una ‘Se inician los controladores de la WebCam y se muestra una ventana
‘de visualización
pieza conociendo sus coordenadas en el tablero, UPIICSACam1.Iniciar
este puede tener 4 configuraciones para el origen UPIICSACam1.Mostrar_Visualizacion
‘Se captura una imagen, se convierte a escala de grises, se suaviza y
de las coordenadas (ver figura 21) por ello el ‘se aumenta el contraste.
UPIICSACam1.Enviar_imagen_al_portapapeles
software realiza una lectura de todas las piezas UPIICSAImagePro1.Copiar_del_portapapeles
considerando las 4 posibles configuraciones, así se UPIICSAImagePro1.Convertir_a_escala_de_grises
UPIICSAImagePro1.Suavizar_imagen_a_grises
logra conocer el origen al encontrar una UPIICSAImagePro1.Contraste_grises HScroll1.Value
configuración en la cual todas las coordenadas UPIICSAImagePro1.Enviar_al_portapapeles
‘Se aplica un umbral binario
apuntan a una pieza, pues en el resto algunas UPIICSAImagePro2.Copiar_del_portapapeles
UPIICSAImagePro2.Umbral_Binario 25, 120
coordenadas apuntan a zonas en gris. UPIICSAImagePro2.Enviar_al_portapapeles
‘Se recorta la porción de imagen correspondiente al tablero
UPIICSAImagePro3.Copiar_del_portapapeles
UPIICSAImagePro3.Recortar x1, y1, x2, y2
UPIICSAImagePro3.Enviar_al_portapapeles
UPIICSAImagePro4.Copiar_del_portapapeles
‘Se analiza la imagen para decidir el color de una pieza
Blancos = UPIICSAImagePro4.Area_blanca(Cx - 5, Cy - 5, Cx + 5, Cy + 5)
Negros = UPIICSAImagePro4.Area_negra(Cx - 5, Cy - 5, Cx + 5, Cy + 5)
If Blancos > Negros Then
. PColor(X).Text = "Pieza Blanca"
Else
PColor(X).Text = "Pieza Negra"
End If
Fig. 21 Posibles orígenes de coordenadas
Fig. 23 Interfaz del software de percepción
Fig. 24 Resolución de la cinemática inversa por
La segunda parte del software se encarga del método geométrico
calculo de la cinemática inversa y del control de
los servomotores del robot, el objetivo de la A continuación se muestra el cálculo de la
cinemática inversa consiste en encontrar los cinemática inversa para un manipulador de dos
valores que deben adoptar las articulaciones del grados de libertad en configuración SCARA.
robot para que su extremo se posicione y oriente ‘Se declaran las variables a utilizar
según la posición deseada. La cinemática inversa Dim X, Y, mag, dir, cat, hip, ang_h, ang_b, pi As Single
‘Se leen las coordenadas objetivo
es en general más problemática que la cinemática X = Text1.Text
directa, algunos de los problemas frecuentes son: Y = Text2.Text
‘Se establece el largo de los eslabones
hip = 30
• El punto pedido está fuera del alcance. ‘Se convierten las coordenadas cartesiana a polares
• Los enlaces chocan unos con otros. pi = 3.14159265358979
mag = Sqr((X * X) + (Y * Y)) ‘magnitud del vector
• El punto se puede alcanzar mediante dos o dir = (Atn(X / Y) * 180) / pi 'dirección del vector
más combinaciones. ‘Se calcula el angulo del hombro
cat = mag / 2
ang_h = (cat / hip)
El método implementado utiliza relaciones ang_h = ((Atn(ang_h / Sqr(-ang_h * ang_h + 1)))*180)/pi
trigonométricas y cálculos geométricos sobre los ‘Se calcula el angulo del brazo
elementos del robot, recurriendo a la resolución de ang_b = ang_h * 2
ang_h = (90 - ang_h) + dir
triángulos formados por los elementos y
articulaciones del robot, este procedimiento es Los anchos de pulso que se aplicarán a los
adecuado para manipuladores de pocos grados de servomotores se envían al microcontrolador
libertad. utilizando el control MSCOMM incluido en Visual
Basic. A continuación se muestra un ejemplo para
En la figura 24 se muestra un ejemplo enviar un byte serialmente por el puerto COM1.
considerando un brazo tipo SCARA de dos grados
de liberad. En la figura 24-A se muestran las 'Se establece el puerto a utilizar, se configura y se abre
coordenadas cartesianas de los puntos, en la Figura Private Sub Command1_Click()
MSComm1.CommPort = 1
24-B se ven los dos puntos en coordenadas polares, MSComm1.PortOpen = True
en la figura 24-C se aprecia el calculo MSComm1.Settings = "19200,n,8,1"
En la figura 26 se muestra la interfaz gráfica del
trigonométrico para obtener el ángulo del primer End Sub
software
'se envia de control del robot.
un byte
vector, y finalmente en la figura 24-D se muestran Private Sub Command2_Click()
los ángulos de los dos vectores. MSComm1.Output = Chr(100)
End Sub
A continuación, en la figura 25 se muestra el III. CONCLUSIONES
aspecto de la interfaz gráfica del software de
calculo de la cinemática inversa y control del Se ha presentado el desarrollo de un proyecto de
manipulador. robótica haciendo énfasis en el desarrollo de
software y en el diseño de interfases, este enfoque
abre un espectro interesante de aplicaciones, entre
las cuales se podrían mencionar las siguientes:

• Control de robots vía Internet para


ambientes virtuales de aprendizaje.
• Control por comandos de voz y
reconocimiento de imágenes.
• Desarrollo de Simuladores en 3D
• Desarrollo de lenguajes de programación
para robots en alto nivel y en lenguaje
natural

El manipulador se llevó a concursar al 3er


Concurso Interpolitécnico de MiniRobótica, en la
Fig. 25 Interfaz gráfica del sistema de control categoría de “Brazo Manipulador”, en donde
del manipulador obtuvo el primer lugar con amplia ventaja, pues el
resto de prototipos utilizaron sensores para detectar
En la figura 26 se muestra el aspecto del conjunto el color de la pieza.
formado por el brazo manipulador, el tablero, los
contenedores, el soporte con la cámara, así como la El prototipo es susceptible de muchas mejoras, sin
computadora que controla el sistema. embargo actualmente es funcional y sirve como
plataforma para la enseñanza de la robótica.

IV. REFERENCIAS
[1] Raymond Goertz: pionero de la robótica,
http://en.wikipedia.org/wiki/Raymond_Goe
rtz
[2] SketchUp: Software de Modelado 3D,
www.sketchup.com
[3] PicBasic: Lenguaje de alto nivel basado en
Basic para microcontroladores PIC:
http://www.melabs.com/products/pbc.htm
[4] Cinemática inversa por trigonometría:
www.x-robotics.com/cinematica.htm
[5] Fundamentos del color, modelo RGB:
http://www.digitalfotored.com/grafico/rgb.h
tm

Fig. 26 Conjunto del brazo manipulador

You might also like