SISTEMA DE CONTROL SERVO-VISUAL EN 2D PARA EL PROCESO …
Transcript of SISTEMA DE CONTROL SERVO-VISUAL EN 2D PARA EL PROCESO …
SISTEMA DE CONTROL SERVO-VISUAL EN 2D PARA EL PROCESO DE BIN
PICKING SOPORTADO POR UN ROBOT MANIPULADOR
“Trabajo de Investigación”
ANDRÉS FELIPE MURILLO PANES SO
Trabajo de Grado
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA INDUSTRIAL
BOGOTÁ D.C.
2015
GLOSARIO DE TÉRMINOS Y ABREVIACIONES
TCP/IP: Transmission Control Protocol/Internet Protocol. Protocolo de red que provee
comunicación entre dos dispositivos.
Bin picking: En robótica, la selección de un objeto en particular depositado en un
contenedor.
Visual servoing: Control robótico basado en información extraída visualmente.
CTAI: Centro tecnológico de automatización industrial de la Pontificia Universidad
Javeriana.
SMF: Sistema de Manufactura Flexible.
Melfa BASIC: Lenguaje de programación utilizado por el robot manipulador Mitsubishi
MELFA RV-2A.
FireWire: Interfaz de bus serial de alta velocidad desarrollado por Apple, Inc.
Grados de libertad: El número de movimientos independientes (articulaciones) que
puede ejecutar una máquina.
Teach Pendant: Unidad de control y programación operada manualmente.
VBAI: Vision Builder for Automated Inspection (NI Vision Builder®).
Resumen ejecutivo
Una de las aplicaciones más interesantes y desafiantes del campo de la robótica es la
integración de un sistema de visión inteligente a la parte mecánica movible. La posibilidad de
utilizar computadores para detectar la ubicación de objetos organizados de manera aleatoria para
luego organizarlos y catalogarlos es un paso importante en el área de la inteligencia artificial
aplicada.
El uso de un sistema de visión artificial en el reconocimiento integrado a la interacción de
objetos sería muy útil en un contexto industrial, como por ejemplo en una banda transportadora
cuando los productos salen de manera desorganizada, o para asistir a un operario en la búsqueda
de herramientas. Este proceso se denomina Bin Picking.
Para desarrollar el proyecto se buscará primero establecer una comunicación de tipo
industrial entre el computador y el robot. El robot a utilizar será el Mitsubishi MELFA RV-2A
que se encuentra en el CTAI, y cuenta con la funcionalidad del protocolo TCP/IP, que será el
utilizado para comunicarse con el computador. Seguido a esto se deberá crear el algoritmo de
visión inteligente en NI Vision Builder®, utilizando una cámara digital para las imágenes y
creando un sistema de calibración y de coordenadas cartesianas bajo las cuales guiar al robot.
Finalmente, se deberá programar al robot para interpretar las coordenadas cartesianas de la visión
como puntos en el espacio a los cuales moverse, de tal forma que pueda recoger y reconocer los
objetos.
El control servo-visual en 2D es útil en aplicaciones que no requieren de un nivel de
profundidad, como por ejemplo al trabajar con objetos homogéneos en una banda transportadora
con profundidad constante. Esta propuesta debe entonces buscar la posibilidad de implementar el
sistema de Bin Picking en el Centro de Tecnología y Automatización Industrial de la Javeriana.
Introducción
En un SMF se busca siempre la posibilidad tanto de automatización como de adaptación
a cualquier tipo de proceso industrial (Kim, Kim, Kang, Kim, & Lee, 2012). La aplicación de
dichos sistemas se ha vuelto muy común en la industria actual, más sin embargo, hoy en día aún
es común ver fábricas en las cuales se pone a las personas en tareas sumamente repetitivas, como
seleccionar o clasificar partes en una banda transportadora. A este tipo de tareas se le llama D3:
Dirty, Dull and Dangerous (Tareas sucias, aburridas o peligrosas), las cuales se definen como las
tareas que pueden ser desagradables, sumamente repetitivas, o bajo condiciones difíciles que
podrían ser peligrosas para un operario humano (Takayama, Ju, & Nass, 2008).
La posibilidad de adaptar un sistema de Bin Picking a un SMF aumentaría sus opciones
de flexibilidad y adaptabilidad a una gran variedad de procesos industriales.
La visión por computador en sí es un campo de mucha amplitud y utilidad, que incluye
áreas como la inspección automática y el control de calidad. La integración de reconocimiento
visual a una máquina capaz de manipular objetos reales le da la posibilidad al robot de funcionar
sin necesidad de posiciones pre-definidas programadas de antemano (Daewon, Ryan, & H. Jin,
2012). Esta integración entre los dos componentes se denomina control servo-visual, y su
funcionalidad incrementa la adaptabilidad del proceso completo, haciendo posible que el SMF
sea mucho más adaptable.
Al combinar un sistema de visión inteligente con un robot programable en el contexto de
un SMF, sería posible diseñar un medio por el cual automatizar el proceso de selección y
reconocimiento de partes en 2D bajo contextos industriales. Este sistema puede aplicarse en
diversas áreas de la industria, otorgándole al robot manipulador una facultad rudimentaria de
visión mediante algoritmos de procesamiento de imágenes y calibraciones específicas.
El presente trabajo de investigación buscará entonces desarrollar un prototipo que
conecte un sistema de visión inteligente a un robot manipulador de seis grados de libertad. El
objetivo es darle al robot un sistema de reconocimiento visual que pueda detectar objetos
estáticos homogéneos que se encuentran sobre una superficie plana, arreglados al azar, y que
requieren ser paletizados. El trabajo se implementará dentro de las instalaciones del CTAI
utilizando el módulo Vision Builder® de National Instruments.
La elaboración del trabajo constará de tres partes: El diseño de un algoritmo de
procesamiento y calibración de imagen (cámara-computador), el establecimiento de un protocolo
TCP/IP para la comunicación entre el computador y el robot, y la unificación de los datos
obtenidos por la cámara en la programación del robot de manera que pueda moverse e interactuar
con los objetos a trabajar. Es importante establecer que la propuesta de trabajo abarcará
únicamente el reconocimiento de objetos estáticos en dos dimensiones, debido a que el proyecto
es un primer acercamiento a la funcionalidad del bin-picking, y podría ser trabajado en el futuro
para adaptarlo a ambientes más complejos, como los objetos en movimiento.
Antecedentes
El problema del bin picking es de interés para la industria en aplicaciones que requieren
altos niveles de automatización, pero en muchos casos estas tareas se siguen realizando de
manera manual debido a que la aplicación todavía se considera un tema desafiante para la
robótica (Pochyly, Kubela, Kozak, & Cihak, 2010). Compañías como Amazon
(Amazonpickingchallenge.org), que requieren el empaque y paletizado de millones de productos
al día en bodegas de gran tamaño, se encuentran muy interesadas en una respuesta que cuente un
alto grado de flexibilidad.
Existen dos tipos de bin-picking: 2D y 3D. El 3D es útil cuando se necesita añadir una
dimensión de profundidad al proceso, por ejemplo al buscar objetos apilados en un recipiente.
Para el uso de 3D se utilizan sistemas visuales de reconocimiento en 3D mediante varias cámaras
o ultrasonido (Kim, Kim, Kang, Kim, & Lee, 2012). Por otro lado, el proceso en 2D se utiliza
cuando los objetos se encuentran en una superficie plana, tienen la misma altura, y pueden ser
definidos utilizando el plano vertical. Desde mediados de los años 90s se han escrito artículos
sobre el cambio de coordenadas requerido entre un plano cartesiano 2D a la arquitectura de la
interfaz del manipulador (Rahardja & Kosaka, 1996).
En general, los sistemas de bin picking en 2D se utilizan en aplicaciones donde una
tercera dimensión no se necesita, o cuya implementación es demasiado compleja. Objetos
homogéneos esparcidos aleatoriamente, por ejemplo, en una banda transportadora se pueden ver
en muchas industrias. En esos casos, utilizar un sistema en 3D es sencillamente demasiado
complejo para la tarea a realizar, especialmente porque se necesitan sensores extra para la
medición de la profundidad (Kim, Kim, Kang, Kim, & Lee, 2012), mientras que el bin picking en
2D sólo necesita de una cámara para definir las coordenadas x e y. De esta forma, el proceso es
el mismo en ambos casos, excepto por el hecho de que en el sistema 2D, la profundidad de
agarre será siempre una constante definida con anterioridad en el caso a trabajar.
Aplicaciones de este sistema en la industria incluyen la organización y arreglo de
productos en una línea de ensamble, por ejemplo, para organizar las botellas que salen acostadas
de su ciclo de producción, y que deben ser recogidas y enderezadas antes de poder ser llenadas y
tapadas. Este tipo de proceso no requiere de 3D puesto que todas las botellas tienen el mismo
grosor, por lo que es posible tomar la profundidad de agarre como constante. Esto le permite a la
empresa tener un sistema de control servo-visual utilizando sólo una cámara, en lugar de
múltiples cámaras o sensores para detectar el tercer eje.
Otros avances incluyen el desarrollo del visual servoing, o “servo-visión”, el cual
involucra el relacionamiento de información entre lo que el algoritmo visual reconoce y los datos
como coordenadas que recibe el robot. Este sistema permite alta adaptabilidad debido a que no
necesita algoritmos de estimación, sino que un controlador se utiliza para transmitir la
configuración de posición del robot a través de retroalimentación desde la imagen (Fang, Liu, &
Zhang, 2011). En la industria aeroespacial, el trabajo de servo-visión se puede complementar con
múltiples cámaras para posicionamientos a gran escala. De esta manera, el control servo-visual
permite realizar cambios de coordenadas y correcciones de posición sin afectar el campo de
visión de la cámara (Zhao, Xie, & Tu, 2011).
No obstante, aunque en la Pontificia Universidad Javeriana se han realizado diversos
trabajos de grado en los campos tanto de comunicación robot-computador (como en el caso de
“Control supervisorio de un robot manipulador industria l Mitsubishi Melfa utilizando la
plataforma LabVIEW”, el cual únicamente desarrolla la conexión entre LabVIEW y el RV-2A
para su control supervisorio, sin integrarlo con un sistema de visión) así como en la aplicación de
sistemas de visión inteligente para inspección y categorización (“Aplicación de sistemas de
visión por computador (VIR/NIR) para la inspección visual de uchuvas”), hasta ahora no se ha
realizado ningún trabajo involucrando la integración de ambos sistemas mediante herramientas
de control servo-visual.
Por otro lado, la mayoría de aplicaciones de la visión artificial se han basado en el
control de calidad (“Propuesta de un método de control de calidad mediante visión artificial para
las cabezas de tornillos hexagonales en una empresa específica de Bogotá”, “Desarrollo de un
prototipo de laboratorio para el control de calidad de la variable grado de tostión del café tostado
molido, empleando visión artificial”) o aplicándose a trayectorias pre-definidas.
En la universidad también se han realizado trabajos de grado involucrando otro tipo de
robots no industriales, integrándoles sistemas de reconocimiento que no necesariamente son por
medio de visión. Este enfoque se puede ver en “Simulador de trayectorias 2d para un robot tipo
serpiente” en el cual se diseñó software para el control cinemático del robot. Sin embargo, esta
herramienta es únicamente de control, aunque es un buen ejemplo de la integración entre
diferentes protocolos y software de control.
Formulación del problema
Mediante la realización de este trabajo se pretende responder a la siguiente pregunta de
investigación y desarrollo:
¿Cómo desarrollar un sistema de control servo-visual en 2D para el proceso de bin-picking
soportado por un robot manipulador?
Objetivos
Objetivo general
Desarrollar un sistema de control servo-visual en 2D para el proceso de bin-picking
soportado por un robot manipulador.
Objetivos específicos
I. Establecer un medio de comunicación entre el computador y el robot mediante
una conexión de protocolo TCP/IP.
II. Diseñar un algoritmo de calibración, reconocimiento y procesamiento de la
imagen del espacio visual a trabajar.
III. Ajustar las coordenadas dadas por el algoritmo de visión por computador al
sistema de coordenadas usado por el robot.
IV. Programar al robot para realizar la operación utilizando los datos recopilados por
el algoritmo de visión.
V. Definir las trayectorias que el robot debe realizar para permitir el paletizado del
producto.
Metodología implementada
El trabajo constó de dos etapas principales: El proceso de visión por computador, y el
proceso de control del robot. Este último se divide en dos subprocesos: El set-up que le da sus
parámetros iniciales e inicia la comunicación con el computador, y el código de movimiento. La
integración de todo el sistema se realizó utilizando el software NI Vision Builder. Aunque
existen muchas otras herramientas de visión por computador que permiten la transmisión de
comandos vía TCP/IP y poseen un funcionamiento similar, Vision Builder se escogió por su
integración con LabVIEW para realizar cálculos matemáticos con las variables definidas, y por
una medida de conveniencia, puesto que el CTAI de la Pontificia Universidad Javeriana cuenta
con licencias para el uso del software.
Tanto el set-up como el código de movimiento están programados en Melfa BASIC IV,
el lenguaje de programación del Mitsubishi RV-2A, pero los comandos se transmiten de Vision
Builder al robot mediante el uso de su módulo de envío de comandos TCP/IP. Para el proceso de
visión por computador, se creó un algoritmo que ejecuta los siguientes pasos en un único
procedimiento de inspección:
• Adquisición de la imagen
Definición de los parámetros de calibración intrínsecos y extrínsecos de la imagen
Parametrización del espacio de trabajo
• Detección de objetos mediante RGB
• Detección de bordes
• Ajuste de ángulo de rotación de los objetos
• Definición de variables globales
• Creación de la interface gráfica (por motivos puramente estéticos)
• Cambio de coordenadas de milímetros a sistema del MELFA RV-2A
La adquisición de la imagen se realizó con una cámara marca Guppy con conexión
FireWire. La cámara no es de escala de grises, por lo que toma imágenes a color del espacio de
trabajo. La parametrización se hace mediante Vision Builder, midiendo las distancias dentro del
espacio de trabajo y computándolas en el software de tal forma en que se cree una relación
calibrada entre las unidades en pixeles de la imagen y las distancias reales en el espacio de
trabajo.
El algoritmo de detección de objetos funciona encontrando zonas de contraste en un área
definida. Se colocó una plataforma blanca de acetato como contraste para que los cubos
resaltaran más. Se utilizó un módulo de detección de bordes para ajustar la rotación de la
herramienta del robot a la rotación de los cubos. Por tal motivo, el procedimiento consistió en
definir un rango de área en milímetros cuadrados dentro del cual se encuentra el área más oscura
de los cubos, contrastando con el fondo más claro. Esto quiere decir que el algoritmo busca las
áreas más oscuras de la imagen y si se encuentran dentro del rango de área de los cubos, el
sistema detectará el punto medio del área encontrada. Este punto se define con coordenadas X é
Y que se guardan como variables para utilizar en el cambio de coordenadas visión-robot. Una
vez se tengan estas coordenadas, se numera cada cubo encontrado al igual que el número total de
objetos encontrados.
Para el desarrollo del sistema de control servo-visual fue necesario considerar los
diversos de sistemas de coordenadas existentes. En primer lugar están las coordenadas del
espacio del trabajo - es decir, la definición de los ejes de referencia en el plano 2D de la imagen.
En segundo lugar están las coordenadas de cada uno de los objetos a recoger; estas son las
coordenadas del objeto en unidades del mundo real. En tercer lugar están las coordenadas de la
base del robot utilizadas por el lenguaje Melfa BASIC IV, y finalmente las coordenadas de la
herramienta de sujeción del robot con respecto a los cubos detectados en la imagen. Al establecer
una relación entre las coordenadas en unidades reales del espacio de trabajo y del sistema interno
del RV-2A se pudo crear una ecuación de regresión para lograr el cambio de coordenadas de tal
forma que el robot pudiera moverse hacia el punto donde estaba cada cubo. Esta relación se
calculó llevando manualmente al RV-2A hacia cada cubo utilizando su teach pendant y anotando
las coordenadas a las que correspondía cada punto en ambos sistemas.
El proceso de set-up consta del código en Melfa BASIC IV junto con la definición de
parámetros de comunicación entre el computador y el robot. Una vez iniciada la comunicación se
procede a definir variables iniciales necesarias para el robot tales como velocidad de
movimiento, sistema de coordenadas a utilizar, y posiciones no-variables, o constantes, para el
sistema (posiciones de seguridad, la ubicación de la matriz de paletización, etc). Estas son
posiciones que no cambian con cada iteración del código y no dependen de ningún otro
algoritmo o proceso.
IN IC IO
Figura 1. Diagrama de proceso del algoritmo de visión por computador. El proceso de calibración de la imagen se efectuó una única vez; la función llama al proceso cada vez para establecer los parámetros intrínsecos del espacio de
trabajo.
Figura 2. Diagrama de proceso del set-up o configuración inicial del sistema
Finalmente, el algoritmo de movimiento del robot toma las coordenadas trasladadas de
unidades reales a unidades del Melfa RV-2A y las define en una posición variable. Esta es la
posición del cubo #1 que se definió durante el proceso de visión, y a la cual el robot siempre irá
al correr cada iteración. Este programa también está escrito en Melfa BASIC IV, e incluye el
código tanto para interactuar con los objetos como para paletizarlos. Las variables utilizadas son
las coordenadas X é Y ajustadas al lenguaje del robot, y el ángulo de rotación de los cubos que la
herramienta de sujeción debe tomar para poder agarrarlos correctamente.
Al tener los tres algoritmos principales, se debieron integrar en un único sistema que
además permitiera iteraciones basadas en la cantidad de cubos encontrados. Para ello se usó
Vision Builder debido a que permite enlazar todos los algoritmos mediante dos características:
Estados de inspección, y transiciones condicionales.
Figura 3. Diagrama de proceso del movimiento del Melfa RV-2A y proceso de paletizado
Vision Builder funciona con una interface en la que se definen pasos secuenciales, en vez
de código escrito, para definir cada etapa del reconocimiento visual. Estos pasos se denotan con
pequeños cuadros en la interface gráfica del programa, y existen muchas opciones que ejecutan
procesos distintos para necesidades específicas. La unión de varios de estos pasos como proceso
para evaluar un resultado se denomina procedimiento de inspección.
El diseño del código para todo el sistema se realizó en el mismo programa, utilizando
diversas instancias de los denominados estados de inspección para construir el diagrama de flujo
del código. El diagrama de flujo funciona como un nivel de programación adicional, permitiendo
crear transiciones y condicionales de manera visual. Los óvalos representan tareas, llamadas
procedimientos de inspección en Vision Builder. Cada procedimiento puede asignarse a
transiciones que se ejecutan mediante condicionales, y cada uno tiene una transición por defecto
(default) la cual se ejecutará en caso de que el resultado del condicional no se cumpla. De esta
forma, se utilizó el diagrama de flujo principal como una estructura if_then_else que le permite
al sistema realizar todas las funciones requeridas por cada una de sus partes (configuraciones
previas, reconocimiento visual, movimiento del robot, selección de condiciones). El uso de los
procedimientos de inspección permite al sistema integrarse directamente con NI Vision Builder
sin necesidad de utilizar software adicional. La figura 4 muestra el funcionamiento del sistema
completo, mientras que la figura 5 muestra cómo se ven los procedimientos de inspección en
Vision Builder y su funcionalidad en el sistema.
Figura 4. Diagrama de proceso del sistema completo.
Figura 5. Diagrama de estado del sistema. Cada globo es un estado de inspección independiente. Las transiciones de estado a estado están basadas en condicionales ajustables a las variables u outputs de cada algoritmo.
Todos los pasos del algoritmo se pueden resumir de la siguiente manera, incluyendo las
etapas de pre-configuración.
• Se abre el archivo de NI Vision Builder, automáticamente activando el algoritmo
de set-up.
• El set-up inicia el módulo de la comunicación robot-computador, y además
enciende sus servo-motores aparte de definir otros parámetros iniciales.
• Se pasa a ejecutar el main, el cual inicia definiendo todas las posiciones no-
variables a las que el robot deberá ir (posiciones en el paletizado, posiciones
intermedias, posición home, etc.)
• Se ejecuta el algoritmo de visión.
o Se comienza tomando una imagen del espacio de trabajo.
o Se ejecuta la función de parametrización donde se han definido las
características intrínsecas y extrínsecas del espacio de trabajo.
o Se ejecuta el algoritmo de visión donde se define una región de
reconocimiento, se definen umbrales y rangos para las zonas oscuras, se
adquiere el punto medio del área de los objetos encontrados, y se definen
las variables de posición.
o Se define una región de interés alrededor del primer cubo detectado en la
imagen para realizar el ajuste de su ángulo de rotación.
o Se encuentra el ángulo que se forma entre el borde del cubo y las esquinas
de la región de interés. Este es el ángulo que se utilizará para ajustar la
rotación de la herramienta del robot.
Se genera el cambio de coordenadas de milímetros a unidades del RV-2A.
• Dependiendo del número de cubos encontrados, se ejecuta alguna de las
transiciones definidas.
• Si uno o más cubos son detectados, se ejecuta el proceso de paletizado. El robot
se activa y se dirige hacia el cubo No. 1, agarrándolo y llevándolo a una de las
posiciones de paletizado. El robot prosigue a devolverse a su posición inicial.
• Una vez el algoritmo de visión no detecta más cubos, el robot se “reinicia”,
volviendo automáticamente a su posición inicial.
A continuación se muestra el esquema del trabajo realizado. Nótese el cambio de coordenadas
entre el espacio de trabajo y el robot.
TCP/IP
• u O/ \ Firewire
Figura 4. Diagrama del espacio de trabajo
Resultados
Propuesta definitiva
1) Conexión computador-robot:
El trabajo se realizó con ayuda de NI Vision Builder 2013, utilizando el gestor de
dispositivos de comunicación para conectar el robot al computador. En primera instancia, se
identificaron los parámetros requeridos para la conexión TCP/IP entre el MELFA y el
computador. Estos parámetros están definidos por el CTAI, por lo que no es necesario crear
conexiones nuevas. Se conectó un extremo de un cable Ethernet al switch del CTAI y el otro
extremo al computador de trabajo. El computador se configuró con la dirección IP 10.21.7.6,
aunque la dirección IP elegida para éste no tiene ningún efecto sobre la conexión. El sistema
funciona con cualquier dirección IP conectada mientras ésta no esté en uso por otro dispositivo.
Se prosiguió a utilizar el módulo de conexión TCP/IP de NI Vision Builder para definir los
parámetros requeridos por el robot.
El gestor de dispositivos de comunicación permite la creación de una conexión TCP/IP
con cualquier equipo al definir su dirección IP y el puerto requerido. En el caso del MELFA, su
dirección IP en el CTAI es la 10.21.7.8 y su puerto es el 9002. Estos parámetros se pueden
configurar fácilmente en el gestor de dispositivos de NI Vision Builder y se utilizó el procesador
de comandos de Windows para comprobar la conexión exitosa entre ambos dispositivos.
Figura 5. Configuración de los parámetros de conexión TCP/IP en NI Vision Builder
Figura 6. Conexión exitosa entre robot y computador. Es necesario configurar el servidor TCP con el puerto 9002.
Una vez realizada la conexión entre ambos sistemas, es necesario escribir un código que
inicie la comunicación entre NI Vision Builder y el MELFA RV-2A. Esto se hace en el módulo
del paso de inspección TCP I/O, el cual permite transmitir comandos textuales mediante la
conexión TCP/IP. Dando click en Send, es posible elegir el dispositivo establecido (en este caso
el Melfa) al cual transmitir el código, y de igual forma el software permite la transmisión de
variables y outputs definidos en pasos anteriores como cadenas de texto.
Figura 7. Módulo de envío de comandos TCP al Melfa RV-2A. Cada línea debe iniciar con los caracteres "1;1;" por definición. Nótese el uso de variables de inspección (éstas se envían como sus resultados numéricos).
La configuración de inicio también fija todos los parámetros iniciales del robot, tales y
como velocidad, tipo de coordenadas a usar, etc. Gracias a Vision Builder, es posible fijar este
módulo de inicio como una “opción de prendido” o de set-up. Esto quiere decir que el código
configuración inicial se ejecuta una vez se abre el archivo Vision Builder, por lo que correrá una
única vez en lugar de hacerlo cada vez que se ejecute el programa completo.
Device D irection CommandMelfa Send 1; l;CNTLONMelfa Send 1; 1;RSTALRM
Melfa Send 1; l;EXECJO VRD 10.0Melfa Send 1; l;SRVO N
W ait W a it 1000 msMelfa Send 1; 1;EXECJOVRD 50
W ait W a it 1500 msMelfa Send 1; l;EXECH CLO SE 1
W ait W a it 2000 msMelfa Send 1; ljEXECH O PEN 1
W ait W a it 2000 ms
Figura 8. Comandos de configuración inicial del Melfa RV-2A. El comando CNTLON inicia la conexión entre el computador y el robot. Es extremadamente importante que este comando sea la primera línea de código de todo el
sistema, o nunca existirá conexión.
Como se puede notar en la figura 10, cada línea de código que demande una tarea física
de parte del robot (en este caso el comando SRVON que le ordena encender sus servo-motores)
debe puntearse con el comando WAIT. Este comando le indica al código que debe esperar una
cantidad determinada de milisegundos antes de enviar la próxima línea. La razón para esto es que
NI Vision Builder no es el controlador predeterminado para el uso del Melfa RV-2A, y
simplemente envía los comandos de manera textual sin ninguna confirmación de “ejecutado” por
parte del controlador del robot. El robot posee la funcionalidad de enviar un comando cuando la
pinza está cerrada, abierta, o entre-cerrada, pero esto únicamente proporciona información sobre
el estado de la herramienta, y no sobre el cumplimiento de una tarea por parte del robot.
Aunque los códigos como CNTLON y RSTALARM se ejecutan automáticamente, los
comandos físicos tienen cierta demora para ser interpretados y llevados a cabo por la máquina.
Por tal motivo, fue necesario tomar el tiempo de cuánto le tomaba al robot llevar a cabo cierta
acción física, y ajustar los tiempos de espera entre línea y línea manualmente. En este caso, al
robot le tarda aproximadamente un segundo encender sus servo-motores, por lo que SRVON es
seguido de una espera de 1000 ms antes de enviar la próxima línea de código; esto le da tiempo
suficiente al RV-2A para realizar la tarea. Si no se hace esto, los próximos comandos se
transmiten antes de que el robot haya terminado de procesar el último, y no se ejecutan. Al tener
todos estos parámetros configurados, ya es posible el envío de comandos desde NI Vision
Builder hacia el RV-2A mediante el protocolo TCP/IP.
H an d c h e c k
c o n n e c to r
n u m b e rs
S íg n a l
S e t t in g p in s fo r th e o p e n /c lo s e s e t t in g o f t h e h a n d
C o m m e n ts
O p e n H a lf o p e n C lo s e d
1 General purposeinput 900 0 1 1C orresponds to hand 1
2 General purposeinput 901 1 1 0
Figura 9. Uso del sensor OPEN-CLOSED de la herramienta del RV-2A.
(Mitsubishi Melfa RV-2A Instruction Manual)
2) Algoritmo de visión por computador:
El proceso de adquisición de la imagen consta de la transmisión de datos desde la cámara
web hasta el computador. Sin embargo, para poder lograr esto, es necesario organizar los
parámetros del video de tal forma que se optimice la grabación de la imagen. Se utilizó una
plataforma blanca hecha de vinilo como superficie para colocar los cubos, debido a que permite
que los otros colores resalten bajo la luz blanca. La cámara toma una foto del espacio del trabajo
con cada iteración del estado de inspección, en lugar de una grabación continua. Esto se hizo
para evitar cambios en los parámetros que el robot utiliza cada vez que se corre una iteración del
proceso completo.
La captura de la imagen es seguida de la calibración, de tal forma que se creó un plano
cartesiano con coordenadas de referencia del mundo real, en milímetros. Para calibrar la imagen
NI Visión Builder posee una función de calibración en la cual se “entrena” al algoritmo para
equiparar puntos de referencia pre-establecidos. El algoritmo calcula la distancia en pixeles entre
ambos puntos, y luego físicamente se mide la distancia real en milímetros entre ambos puntos. El
resultado es una calibración que permite definir a cuántos pixeles en la captura de la cámara
equivalen los mismos milímetros en el mundo real. Esta calibración se mantiene constante
mientras que la cámara se mantenga a la misma altura en todo momento, por lo que es
importante que esté bien asegurada y sujetada en todo momento. Es posible tomar varias
imágenes de referencia para mejorar la calibración, pero en este caso se utilizó sólo una puesto
que todos los elementos a trabajar son los mismos.
Figura 10. Captura de la imagen del espacio de trabajo.
Figura 11. Interface de calibración de la imagen. Es posible cambiar las unidades del mundo real con las que secalibra. Para este trabajo se utilizaron milímetros.
Posterior a la calibración, se define un eje y un sistema de coordenadas sobre la imagen
de referencia. Se estableció el eje de coordenadas de tal forma que el sistema de puntos utilizado
por el Melfa RV-2A apuntara siempre hacia coordenadas positivas. Es decir, las coordenadas X e
Y siempre aumentan al moverse alrededor del espacio de trabajo. Esto hace más fácil calibrar las
variables que definen la posición de cada cubo al sistema de referencia del robot sin necesidad de
realizar mayores ajustes. Como se puede ver en la figura 12, es posible definir el eje de
coordenadas y el ángulo de corte entre ambos ejes manualmente.
Esta calibración del espacio de trabajo se realiza una sola vez, y en lugar de ejecutarse
con cada iteración del algoritmo, NI Vision Builder simplemente llama a la función definida para
definir los parámetros intrínsecos del espacio de trabajo. Debido a que la cámara siempre se
encuentra a una altura constante, la calibración nunca cambia puesto que la cantidad de pixeles
equivalentes a cada unidad real siempre permanecerá igual.
Figura 12. Definición del eje de calibración.
Con la imagen calibrada, se pasa a la etapa de detección de los cubos. Para ello se utilizó
el módulo de detección de objetos. Este módulo permite fijar un área de trabajo adentro del
espacio de trabajo, dentro de la cual se aplicó el algoritmo de reconocimiento de objetos. El
algoritmo funciona aplicando filtros de color a la sección fijada. Se utilizó el modelo RGB (red,
green, blue), y se ajustaron los niveles de tal forma que resaltaran los objetos más oscuros sobre
la superficie blanca. Los niveles del color rojo funcionan en un umbral entre 120 y 140
dependiendo de la iluminación de la que se disponga, por lo que se deben ajustar de acuerdo a la
situación. El filtro debe ser lo suficientemente laxo para asegurar que todos los cubos sean
reconocidos, pero lo suficientemente estricto para que el algoritmo no reconozca las sombras y
las formas ajenas a los cubos que se alcancen a encontrar en el área definida.
El módulo de reconocimiento “reconoce” los objetos que se encuentran en el filtro
asignado. Para ello, se fijó un rango de área máximo y mínimo para el umbral establecido, y el
algoritmo reconoce los objetos que se encuentren en éste. Aunque todos los cubos tienen las
mismas dimensiones, diferencias en la iluminación, y otras variables como las sombras de
objetos cercanos pueden hacer que el área que se ha reconocido como llena para un cubo sea más
o menos grande que el área de un cubo distinto. Al igual como con el umbral, se estableció el
rango basado en prueba y error, pero se encontró que el área está entre 200 y 400 milímetros
cuadrados.
Figura 13. Módulo de reconocimiento RGB, definición de umbrales de color.
El algoritmo permite fijar cualquier variable del objeto detectado (rea, punto del centro
del área, perímetro, puntos superiores, centro de inercia, etc) tanto en unidades de pixeles como
en milímetros. Las variables tomadas en milímetros de denominan variables calibradas ya que
obedecen a los parámetros que se definieron en la función de calibración anteriormente. Para el
sistema se eligió detectar únicamente el centro de área para obtener las coordenadas del punto en
donde se encuentra el cubo, al igual que para asignar un número de referencia a cada uno de los
objetos detectados.
Variables
Variables Current Valué Operation New Valuéj 0 ...: Inspecton
X coordínate 59 r 581437 Set to Detectar cubos - Object [lj.Center ofMass.X (Calib 59,58144i.... Y coordínate1.... objects
56,5940723
Set to Detectar cubos - Object [lj.Center of Mass.Y (Calib 56,59407 Set to Detectar cubos - # Objects 3
OperationDo notSet Set to Constant
9 Set to Measurement Set to Inital Valué Increment Deaement
Comment123
Detectar cubos -Object [l].Certer ofMass.X t
Edit Variables ÜK Cancel
Figura 14. Se procede a guardar las coordenadas como variables de inspección, al igual que el número de objetosencontrados.
Figura 15. Módulo de reconocimiento de objetos, definición de filtros y parámetros. Se eligieron como parámetros las coordenadas del punto central del área del cubo en milímetros.
Figura 16. Algoritmo de reconocimiento en funcionamiento. Se debe aplicar un análisis de sensibilidad para que los objetos de estudio sean detectados por el algoritmo, pero que aquellos que no lo sean, como el área oscura de la
esquina inferior derecha, no se incluyan.
En este punto, el módulo sólo detecta los puntos centrales de los cubos, por lo que su
rotación no es tomada en cuenta. Por tal razón, se debió crear otro módulo que ajustara la pinza
de sujeción del RV-2A con el objetivo de que siempre tomara los cubos por sus lados planos, en
lugar de tomarlos por las aristas. Esto asegura una sujeción de mayor calidad, ya que al momento
de depositar los objetos en la matriz de paletización estos pueden no encajar correctamente si se
han agarrado de manera inadecuada.
Para poder realizar este ajuste fue necesario definir una segunda región de interés dentro
de la región de interés ya creada. Gracias a que el algoritmo de detección de objetos asigna le
asigna un número automáticamente a cada cubo detectado, este espacio se definió alrededor del
cubo #1 debido a que siempre habrá al menos un objeto a detectar en la región de interés. La
nueva región se definió como un rectángulo que siempre se proyecte sobre la el cubo #1 de la
imagen. De esta forma se asegura que siempre exista un ángulo de referencia entre el borde del
cubo detectado y las dos esquinas izquierdas del rectángulo del área de interés sin importar la
rotación que tenga el cubo. El objetivo es medir el ángulo que crea el borde rotado del cubo con
las esquinas del rectángulo.
Figura 17. Definición de la segunda región de interés sobre el cubo #1.
Para poder medir el ángulo de rotación se utilizó el módulo de detección de bordes rectos
de Vision Builder. Este módulo busca áreas en donde la imagen tenga cambios bruscos de
tonalidad (claro a oscuro, oscuro a claro) que se encuentren en una línea recta. El módulo
permite la selección de la dirección en que se está buscando el borde adentro de la región de
interés; es decir, se detecta el primer borde avanzando por arriba, por abajo, izquierda, o derecha.
Para el trabajo se seleccionó la dirección del barrido de izquierda a derecha, de modo que se
detecte el primer borde izquierdo del cubo. Se hizo de esta manera para que al encontrar el
ángulo entre el borde y las esquinas de la región de interés se tuviera un ángulo entre 0° y 90°, y
además debido a que los grados de rotación de la herramienta del RV-2A incrementan al rotar
hacia la derecha. Esto permite que el ángulo encontrado en este paso sea sumado al ángulo de
rotación que el robot tiene en su posición inicial. En la configuración del módulo se minimizó el
grado de contraste necesario para detectar el borde, ya que el área de detección es pequeña y sólo
contiene al objeto a analizar. El borde generado es una línea recta definida por los dos puntos que
tocan la región de interés.
Figura 18. Configuración del módulo de detección de bordes. El barrido se realiza de izquierda a derecha y elalgoritmo arroja el primer borde encontrado.
Figura 19. Detección del borde izquierdo del cubo a analizar.
Seguido a esto se utilizó el módulo Geometría para hallar el ángulo creado por el borde
del cubo con las esquinas de la región de interés. El módulo permite la medición de elementos
geométricos en la imagen utilizando variables creadas en otros pasos. La característica
geométrica que se utilizó fue la creación de un ángulo definido por 3 puntos. Estos puntos son las
dos esquinas izquierdas de la región de interés del cubo, y el punto inferior del borde detectado
anteriormente. Estas selecciones permiten que se cree el ángulo formado entre el plano justo en
frente del robot y las caras planas del cubo a recoger.
Figura 20. Selección de los parámetros para la construcción del ángulo de rotación.
El ángulo de rotación se ajusta al movimiento de la pinza del RV-2A pues este se
encuentra ubicado justo en frente del espacio de trabajo. El grado de rotación de la herramienta
es de 90° al estar en posición horizontal justo en frente de los cubos, por lo que para realizar el
ajuste basta con sumarle 90° al ángulo detectado por el módulo de Geometría del sistema. Esto
quiere decir que si el cubo se encuentra rotado 45° con respecto al plano de referencia, la pinza
se colocará en un ángulo de 135°, lo cual le permite agarrar el cubo por los lados planos de las
caras. Como el ángulo máximo que se puede hacer entre el cubo y el rectángulo es de 45° antes
de que se comience a detectar la cara siguiente, el grado máximo de rotación de la pinza del
robot estará siempre entre 90° y 135°.
Figura 21. Uso del módulo de geometría para hallar la rotación del cubo con respecto a la pinza del robot.
Los outputs que recoge el sistema durante cada una de las etapas de reconocimiento y
ajuste son ingresados como variables a utilizar en los procesos siguientes. El algoritmo de
detección de objetos define tres variables cruciales para el proceso: El número de objetos
detectados, y las coordenadas cartesianas del centro de área de cada uno de los objetos. Estas
variables se guardan en NI Vision Builder como valores numéricos, y son de carácter global; es
decir, pueden ser utilizadas por cualquier otro módulo como parámetros, e incluso por otros
procedimientos de inspección. La variable número de objetos se utilizó para crear las
transiciones condicionales del ciclo principal, mientras que las variables de las coordenadas X y
las coordenadas Y se definen como la posición en milímetros del cubo #1 en el espacio de
trabajo. En este punto se cuenta con todas variables necesarias para proseguir. Sin embargo, los
valores de las coordenadas que se midieron en la etapa de reconocimiento deben guardarse como
variables para poder trabajar con ellas y editarlas más adelante.
Adicionalmente, y como elemento opcional, se diseñó una interface gráfica para el
sistema. La interface no sirve un propósito práctico como tal, pero permite comprobar que los
cubos han sido reconocidos y que sus coordenadas se muestran correctamente. El diseño es
puramente estético, pero permite demostrar la funcionalidad de las variables de NI Vision
Builder entre cada estado. Para realizar la interface, se utiliza el gestor de texto del software, el
cual permite el uso de variables globales o del mismo estado de inspección como cadenas de
texto. Este mismo principio se utilizó para la programación de los comandos TCP/IP del Melfa
RV-2A. El algoritmo de visión le asigna un número a cada objeto encontrado utilizando una
selección vertical, por lo que el cubo número 1 siempre es el que está más “arriba” en la pantalla.
Esta asignación fue muy útil a la hora de programar los movimientos del Melfa RV-2A, puesto
que el algoritmo reemplaza internamente el cubo No. 1 por el próximo más cercano a éste una
vez el primero ya no está. En el diseño de la interface gráfica, se utilizaron los puntos X e Y en
milímetros del centro de área de cada cubo para escribir el número de cada uno en esta posición,
así como el output mismo de la variable como cadena en la esquina de la pantalla.
Figura 22. Utilización de variables en la asignación textual de cada cubo.
Figura 23. Interface gráfica del sistema visual terminado.
3) Cambio de coordenadas
El último paso para finalizar el sistema de visión es la traducción de las coordenadas; de
milímetros del mundo real sistema utilizado por Melfa BASIC. De esta forma, cada coordenada
X e Y se ajustan mediante una forma matemática para asemejarse lo más posible a lo utilizado
por el robot. El procedimiento consistió en arreglar varios cubos en diversos puntos del espacio
del trabajo, anotar sus coordenadas en milímetros, y luego manualmente colocar la pinza del
robot sobre cada uno de ellos, anotando sus coordenadas respectivas en el sistema Melfa BASIC.
De esta forma se obtuvieron dos conjuntos de puntos: Milímetros reales y unidades del robot.
Mediante la ayuda de Microsoft Excel, se calculó una línea de tendencia entre ambos conjuntos,
tomando las coordenadas reales como variable independiente (de manera que se pudieran utilizar
las variables del algoritmo de visión como parámetros de entrada) y las del robot como
independientes.
Tabla 1. Interpolación de coordenadas visión-robot
Coordenadas X (mm) Coordenadas X (Melfa)
86,94 456,63
85,47 460,4
154,44 540
129,8 523,73
203,3 606,23
211,74 611
78,53 482,92
146,36 574,38
Coordenadas Y (mm) Coordenadas Y (Melfa)
34,87 -80,63
90,77 -5,81
86,25 -13
203,01 127,28
114,54 18,23
25,4 -81
El resultado de la regresión arrojó el mejor dato R2 al utilizar una regresión polinómica
de segundo grado para las coordenadas X, y una regresión lineal para las coordenadas Y. Sin
embargo, debido a la alta sensibilidad del algoritmo de visión y la precisión del robot, al igual
que para tener en cuenta cualquier pequeño movimiento que pueda tener la cámara alrededor de
su eje de posición, las constantes de regresión se deben ajustar y calibrar antes de cada uso para
obtener la mayor precisión posible. De acuerdo a la medición de puntos que se realizó, las
ecuaciones que mejor describen al sistema están definidas de la siguiente manera:
X = - 0 . 0 0 2 2 X 2 + 1 .7 8 4 3 * + 334.49
Y = 1 . 1 3 8 2 y - 116.62
En estas ecuaciones, X son las coordenadas del eje X que utiliza el robot, las
coordenadas del eje X en milímetros, mientras que Y / y lo son para los ejes Y. Ahora bien, estos
son modelos puramente teóricos que aunque sirven para definir la idea general del sistema, no se
ajustan al 100% a la realidad. Los coeficientes R2 de las ecuaciones son de 0.92 y 0.99 para las
coordenadas X é Y respectivamente. Esto significa un margen de error de casi el 9% (tomando
ambos valores, el margen puede llegar hasta 0.92 * 0.99 = 0.9108 de confiabilidad) para la
regresión, lo cual sería muy significativo si se buscara encontrar el centro de área de cada cubo al
milímetro. Sin embargo, este no es el caso; la pinza sujetadora del RV-2A tiene un área de
sujeción mucho más grande que los objetos que necesita recoger, por lo que no necesita llegar
siempre al punto exacto para lograr agarrarlos. Por tal motivo, algunos parámetros de las
ecuaciones se ajustaron manualmente de manera que se pudiera obtener la mayor precisión
posible a la hora de hacer el cambio de coordenadas en NI Vision Builder.
Para realizar el proceso de ajuste se utiliza el módulo de Calculadora que ofrece el
programa, el cual abre un módulo de LabVIEW donde se puede usar el lenguaje de
programación G para manipular los datos mediante las ecuaciones calculadas. La ventaja de esto
es que hace sencillo el poder cambiar cualquier constante de la ecuación en caso de que se
requiera mejorar la precisión del robot debido a condiciones externas ajenas al sistema.
El módulo de la calculadora requiere de la definición de inputs y outputs. Los primeros
son los parámetros que se cambian mediante los cálculos en LabVIEW, y los últimos se definen
como valores que actualizan la definición de otra variable. De esta forma, se pueden aplicar
ambas ecuaciones de la regresión para X y para Y utilizando las coordenadas milimétricas como
las variables de entrada.
Se inició creando los operadores que directamente cambian los valores de las variables de
entrada. Estos toman el lugar de X e Y en las ecuaciones, y se crean constantes para definir la
ecuación de regresión como algoritmo en G. El resultado final es una variable de posición X e Y
calibrada siguiendo las mismas reglas de la ecuación de regresión. El resultado final es un par de
coordenadas que cuentan con una precisión entre 92% y 99%, pero que están sujetas a cualquier
cambio en la posición de la cámara, o movimientos que puedan llegar a cambiar la configuración
inicial del espacio de trabajo establecido.
Figura 24. Parámetros de entrada de las variables en LabVIEW. Es posible elegir variables de inspección como en este caso, o cualquier otro tipo (incluyendo variables del sistema).
Figura 25. Variables de salida. Estas son las variables que cambiarán los valores de los inputs al pasar por elprocesamiento en LabVIEW.
Figura 26. Uso de LabVIEW para ajustar las coordenadas reales a las del Melfa. Nótese como la variable X sigue una regresión polinómica de segundo grado mientras que Y es simplemente la ecuación de una recta.
Con este paso se finaliza el algoritmo de visión por computador. En este punto se tiene un
programa que reconoce los objetos a trabajar en 2D, puede ubicar sus coordenadas en unidades
reales, y traducir dichas coordenadas a un sistema que el Melfa RV-2A pueda utilizar para
interactuar con los cubos.
4) Movimiento del robot
Ahora bien, aunque se intentó diseñar el sistema para que el robot pudiera paletizar una
cantidad variable de cubos, no se logró encontrar una opción en NI Vision Builder que permitiera
utilizar condicionales en el lenguaje Melfa BASIC IV. Por tal razón, aunque el algoritmo puede
reconocer una cantidad ilimitada de cubos, y el robot puede repetir el ciclo para recoger tantos
cubos como sea necesario, el algoritmo le permite devolverse y paletizarlos para una cantidad
pre-determinada de posiciones. La solución consistió en utilizar el diagrama de estado como un
condicional principal bajo el cual se hacían transiciones entre cada estado de inspección. Cada
estado de inspección (óvalo en el diagrama) puede definir una serie de transiciones que sí
permiten el uso de condicionales. La manera de aplicar esto al algoritmo fue un poco ortodoxa,
pero otorgó una solución satisfactoria al problema. Existen dos tipos de transiciones:
Condicionales, y por defecto. Los condicionales funcionan como el IF de cualquier lenguaje de
programación, mientras que las transiciones por defecto (default) funcionan como un ELSE. La
variable principal que se utilizó para manejar estos condicionales fue la variable de número de
objetos detectados por el proceso de visión.
Como se puede evidenciar en la Figura 23, el proceso es sencillo: Si ninguna de las
condiciones de las transiciones se cumple, se ejecuta la transición por defecto. Si se cumple una
de ellas, se pasa al estado indicado por la transición. Se puede ir de un estado a otro hasta la
compleción del condicional, efectivamente creando un ciclo sin necesidad de utilizar un FOR.
Como muestra la figura, al iniciar el código el sistema primero arregla sus condiciones iniciales,
inicia el algoritmo de visión donde se detectan los cubos y se configuran las variables, y
dependiendo del resultado ejecuta uno de tres posibles pasos. Estos pasos se iteran hasta que el
número total de objetos es 0, punto en el cual el robot se reinicia a su posición inicial (Reset)
para finalmente terminar la ejecución del código.
Seguido a la creación de los condicionales se prosiguió diseñando el código del Melfa
que toma las nuevas variables X, Y utilizándolas para indicar la posición a la que debe ir el robot
para agarrar un cubo. Se vuelve a utilizar el módulo de comandos TCP/IP, de los cuales se creó
uno para cada iteración del algoritmo de paletizado. Al igual que con los comandos de la
configuración inicial, se envía cada comando físico con un retraso cierta cantidad de
milisegundos de tal forma que el robot tenga tiempo de ejecutar el movimiento antes de que se le
envíe la próxima instrucción. Se debió utilizar prueba y error para ajustar este mecanismo para
asegurar que los comandos no se interpolaban al llegarle al robot antes de que éste terminara la
tarea anterior, y al mismo que fueran lo suficientemente cortos como para que todo el proceso no
tardara demasiado tiempo.
Figura 27. Diagrama de estado en Vision Builder utilizando transiciones condicionales.
Figura 28. Condicional para la detección de 1 cubo.
Para utilizar las variables calibradas en las coordenadas del robot, se utilizó la opción de
insertar resultado del módulo de envío de comandos. Esta opción despliega el módulo de las
variables, y al insertarlas se definen como un valor numérico escrito entre dos signos de
desigualdad (< , >). Se insertó el resultado para las coordinadas X é Y calibradas con las
ecuaciones halladas anteriormente, y el resultado del ángulo encontrado para la rotación de los
cubos en la coordenada “C” del robot.
El resto del código funciona igual que el lenguaje Melfa BASIC lo hace en su controlador
normal. Se deben definir las posiciones a las que el robot irá mediante 7 coordenadas diferentes
(equivalentes a seis grados de libertad sumadas a el movimiento de la banda transportadora). Los
comandos sencillamente definen las posiciones a las que el robot irá, tanto sus movimientos
intermedios como la posición exacta del cubo #1. El Melfa siempre recogerá el cubo designado
como el #1, por lo que no es necesario preocuparse por la cantidad de cubos que utilice el
sistema.
Figura 29. Envío de comandos TCP/IP al robot Melfa. Es importante dejar un tiempo de espera de aproximadamente dos segundos después del comando los comandos físicos para que los servomotores puedan
funcionar sin interrupciones.
El ciclo finaliza con la paletización de los cubos. Utilizando el teach-pendant, se llevó
manualmente al robot a cada posición deseada de la matriz de paletización, y se anotaron sus
coordenadas respectivas. Las coordenadas deben estar escritas con los parámetros X, Y, Z del
teach-pendant (esta parte es importante ya que también se pueden definir con Joint,
proporcionando un valor en el que cada una de las articulaciones del robot debe estar en lugar de
coordinadas en un espacio tri-dimensional). Para ello se utiliza el botón XYZ en el teach-pendant
y se cambia cada coordenada de forma independiente. Se define cada una de estas posiciones
para cada condicional del sistema: Si se detectan tres cubos, se irá a la posición tres al finalizar;
si se detectan dos se irá a la posición dos, y lo mismo con sólo un cubo. El prototipo únicamente
funciona para el paletizado de 3 cubos, pero es posible añadir más posiciones en caso de
necesitar una mayor cantidad de cubos.
Figura 30. Teach-pendant del Mitsubishi MELFA RV-2A en función deshabilitada. La llave de la esquina superior derecha debe moverse hacia "Enable" para poder mover el robot manualmente.
Restricciones de la solución
El mayor problema a la hora de correr el sistema se encuentra en la etapa de visión por
computador. Es necesario que el espacio de trabajo cuente con iluminación adecuada por medio
de una fuente de luz controlada, o de lo contrario el módulo de reconocimiento de objetos
identificará las partes más sombreadas de los cubos como parte de los objetos, saliéndose del
rango operativo del reconocimiento. En casos donde la iluminación del espacio no sea suficiente
para que el algoritmo reconozca los cubos, se puede contrarrestar el efecto aumentando la
apertura del lente al máximo posible, maximizando la cantidad de luz que le llega a la cámara.
En general, la falta de iluminación puede ocasionar que se dejen de detectar objetos que
se encuentran en el espacio de trabajo o que se reconozcan zonas oscuras de la imagen como
objetos. Esto último es particularmente problemático pues puede causar que el robot se mueva
hacia lugares peligrosos cercanos al espacio de trabajo tratando de llegar a zonas donde no hay
nada.
Figura 31. Espacio de trabajo con iluminación insuficiente.
Figura 32. Espacio de trabajo con iluminación adecuada.
Aparte de la iluminación, el prototipo posee una inhabilidad para interactuar con una
cantidad variable de objetos. Esto se debe en gran parte a la interfaz del software utilizado, al
igual que las diferencias entre el controlador de NI Vision Builder y el controlador real del Melfa
RV-2A. Por tal razón, es necesario programar X iteraciones de los algoritmos de recogida y los
comandos de transición para poder recoger X cubos. Es decir, si se quiere recoger X cubos, se
deben codificar X transiciones junto con X posiciones en la matriz de cubos. Una de las ideas
que se intentó implementar para tratar con este problema fue la de definir una variable N que
tomara el valor de la cantidad de cubos detectados por el algoritmo de visión. Esta variable
controlaría la cantidad de posiciones a las que el robot debería ir, definiendo N posiciones con
anterioridad en la matriz.
De esta manera, la idea era que si el algoritmo detectaba 8 cubos, el robot tomaría el
primer cubo y lo pondría en la posición “8” previamente definida. La próxima iteración del
algoritmo detectaría 7 cubos, por lo que el robot ahora pondría el siguiente cubo en la posición
“7”, y así sucesivamente. Sin embargo, esta opción demostró no ser factible de implementar
debido a la forma en que Vision Builder le envía información al robot. Al enviar el comando
EXECPN con N tomando valores de números enteros, el controlador no responde y no reconoce
el comando como “EXECP8” que sería la forma de definir la posición “8” para el robot.
Sin embargo, la solución definitiva planteada en este trabajo cumple con el requerimiento
de reconocer una serie de objetos y permitir que el Melfa RV-2A interactúe con ellos. La
restricción queda entonces en la necesidad de definir el máximo de objetos que el robot puede
recoger, y programar la misma cantidad de posiciones en la matriz a las que el robot debe ir.
Otra restricción de la solución está en la calibración de la cámara con el espacio de
trabajo. Aunque la cámara está firmemente sujeta a un riel metálico, el más mínimo movimiento
de la mesa en donde está atornillada puede cambiar la dirección a la que apunta, cambiando
completamente su calibración con las coordinadas cartesianas de referencia. Para sobrepasar este
problema se utilizó la ecuación de regresión para las coordenadas X é Y del espacio de trabajo.
Si la cámara se llega a mover, todas las coordenadas se mueven con ella, por lo que la
calibración deja de funcionar y el robot deja de ir al lugar indicado, moviéndose a un punto
cercano más no exacto del cubo a donde se programó. Con el sistema de regresión se pueden
cambiar los parámetros a donde se mueve el robot; es decir, si la cámara cambia su posición, es
posible arreglar la constante (o la ecuación entera) para la coordenada X ó Y sin necesidad de
tener que re-calibrar el sistema entero.
Este método demostró ser más fácil y eficiente a la hora de asegurar que el robot funcione
en todo momento, con la desventaja implícita de tener que probar que la ecuación de regresión
en uso funciona para la calibración actual cada vez que el prototipo se vaya a utilizar. De lo
contrario, puede haber situaciones en las que el cambio de coordenadas haga que el robot pierda
precisión a la hora de recoger los objetos, y se mueva varios centímetros en direcciones
incorrectas causando inconsistencias en el proceso, o incluso daños mecánicos en el RV-2A.
Validación de la solución
El prototipo logra reconocer objetos homogéneos en 2D con características previamente
definidas, aparte de las restricciones planteadas anteriormente de iluminación, y variables
externas al sistema. Sin embargo, como se planteó en la sección de restricciones, es necesario re
validar las ecuaciones de regresión utilizadas por el robot cada vez que se vaya a ejecutar el
código, al igual que la funcionalidad del ajuste de rotación para los objetos. Una vez que las
constantes están en orden, el robot puede ir a cualquier punto del espacio de trabajo con
suficiente precisión para agarrar cada uno de los cubos sin importar dónde se encuentren; pero la
calidad de este agarre afecta el proceso de paletizado, por lo que hay dos etapas que deben
validarse: Agarre y paletizado.
Las ecuaciones de regresión pueden dar un pequeño margen de a la hora de recoger los
objetos, particularmente para las coordenadas X error (aproximadamente del 8% puesto que el
coeficiente R2 de la regresión es del 92%). Esto se debe a la pinza del robot se ubica de manera
horizontal sobre los cubos, haciendo que las coordenadas que la mueven horizontalmente tengan
mayor margen de error que las que la mueven verticalmente a lo largo del plano de referencia.
Sin embargo, con una buena definición de las constantes de la ecuación este margen no es lo
suficientemente grande como para que el robot no recoja los cubos de manera adecuada.
Para probar la funcionalidad de la solución, se realizaron 5 corridas del algoritmo
completo, tomando 3 cubos en cada interacción; lo cual equivale a que el RV-2A recogiera 15
cubos en total. Para cada prueba, la cámara se movió unos grados con respecto a su eje de
rotación, y se devolvió a su posición inicial. Esto se hizo para comprobar qué tanto se
desajustarían los parámetros de la calibración y de las ecuaciones de regresión para el cambio de
coordenadas y para el ángulo de rotación, dado que estos desajustes le quitan precisión al robot a
la hora de alcanzar los cubos, haciendo necesario re-configurar las constantes de las ecuaciones
de regresión. Gracias a la inclusión del sistema de rotación para la herramienta del robot, los
cubos siempre son tomados por sus lados planos; esto permite que a la hora de ser depositados en
la matriz de paletizado se minimice el margen de error al dejarlos caer.
La prueba buscó entonces evaluar tanto el agarre como el paletizado de cada objeto. Se
ubicó un cubo en la misma posición del espacio del trabajo, rotado aproximadamente en la
misma dirección, y corriendo el algoritmo completo. El robot agarra el objeto y lo deposita en el
mismo espacio de la matriz de paletizado, pero dependiendo de la calidad del agarre, el cubo
puede resbalar, deslizarse, o salirse de su posición una vez soltado de la pinza de sujeción.
Debido a que las coordenadas programadas para cada posición de la matriz son constantes, las
únicas variables en el proceso son los pequeños cambios de posición y rotación que pueda tener
el cubo al ser colocado en el espacio de trabajo. Si el cubo es sujetado por sus lados planos (en
lugar de las aristas, por ejemplo), la precisión del proceso de paletizado es de mayor calidad que
si los tomara sin rotar la herramienta.
Al correr las pruebas, en uno de los 5 casos se debieron cambiar las constantes de ambas
ecuaciones; siendo necesario alterar el valor de la constante de la regresión en la calculadora de
LabVIEW que se encuentra dentro del algoritmo de visión. Es decir, al cambiar ligeramente el
ángulo en que la cámara apunta al espacio de trabajo, de 15 interacciones con los cubos, se
debieron ajustar las constantes de la ecuación de regresión de las coordenadas X é Y para 3 de
ellas. El margen de error tiende a ser de aproximadamente 0,5 cm para la ecuación de regresión
de las coordenadas X, lo cual le da al RV-2A suficiente precisión para recoger todos y cada uno
de los cubos sin importar su posición en el espacio de trabajo. Sin embargo, el robot tiende a
tener una mayor precisión para los cubos que se encuentran más cerca de este, a diferencia de
aquellos que se encuentran a una mayor distancia.
Los resultados de dichas pruebas se evidencian en la siguiente tabla, donde se probó el
resultado de la ecuación de regresión para 5 corridas del algoritmo, cada corrida interactuando
con 3 cubos en posiciones diferentes del espacio de trabajo para un total de 15 interacciones. El
resultado muestra si luego de realizar el cambio de coordenadas y que el robot se acercara a la
pieza, logró agarrarla con éxito o no (un fracaso se define como no agarrar el cubo, o que se
cayera de la pinza en el trayecto hacia la matriz de paletizado).
Debido a la naturaleza si/no de la recogida y el paletizado de los cubos, el éxito del
prototipo no está en llegar siempre al punto exacto detectado por el algoritmo de visión, sino
tener la precisión suficiente para que la pinza de sujeción logre acercarse lo suficiente al objeto
como para agarrarlo sin dejarlo caer. En últimas, la razón por la que el robot puede fallar al
recoger los cubos se debe a una diferencia entre lo reconocido por el algoritmo de visión y lo
traducido por las ecuaciones en el cambio de coordenadas, lo cual puede ocurrir cuando la
cámara es movida de su posición original; cambiando los parámetros intrínsecos de la imagen del
espacio de trabajo.
En la prueba, un resultado correcto en el agarre se denomina “sujeción” cuando el cubo
logra ser tomado por la herramienta del robot. Esto no tiene en cuenta la calidad del agarre
mismo, únicamente que la pinza haya logrado agarrar y levantar el cubo del espacio de trabajo.
Por otro lado, un resultado es correcto en el proceso de paletizado si el cubo, una vez sujeto, fue
depositado en su orificio correspondiente en la matriz de paletizado sin caerse, rebotar, o salirse
de éste. La pinza baja los cubos hasta una altura de dos centímetros por encima de la matriz de
paletizado y los suelta para que encajen. Se decidió usar esta altura y no una menor puesto que
cuando ya hay cubos localizados dentro de la matriz, la pinza podría chocar contra estos y
dañarse, por lo que se hizo por motivos de seguridad. Por esta razón, en ocasiones el cubo puede
no encajar completamente, pero si al menos logra entrar en la abertura (a veces al ser depositado
queda rotado verticalmente por lo que no encaja en la matriz), este resultado también se
considera como un paletizado correcto. Esto se debe a que ni los cubos ni los agujeros en la
matriz tienen dimensiones completamente simétricas, por lo que al ser soltados desde cierta
altura se pierde el control sobre ellos y variables externas al sistema pueden llegar a dictar la
forma en que caen en la matriz de paletizado.
Tabla 2. Resultado de pruebas para el prototipo
# Prueba Coordenadas X en milímetros
Coordenadas X del robot
Coordenadas Y en milímetros
Coordenadas Y del robot
Ángulo de rotación de
la pinzaAGARRE PALETIZADO
1 199,35 626,93 209,09 117,60 102 SUJECIÓN CORRECTO2 199,08 616,43 178,20 97,34 128 SUJECIÓN INCORRECTO3 193,04 606,22 210,57 113,64 106 SUJECIÓN CORRECTO4 148,33 556,89 171,05 85,64 125 NO SUJECIÓN INCORRECTO5 195,82 597,20 222,97 130,17 125 NO SUJECIÓN INCORRECTO6 123,05 543,61 222,93 139,14 123 SUJECIÓN CORRECTO7 85,74 496,76 194,45 103,91 121 SUJECIÓN INCORRECTO8 98,50 506,85 134,61 21,46 130 SUJECIÓN CORRECTO9 112,30 521,39 173,52 83,82 100 SUJECIÓN CORRECTO10 124,58 540,06 131,52 26,92 120 SUJECIÓN CORRECTO11 68,29 476,62 105,58 -3,02 92 SUJECIÓN CORRECTO12 85,50 455,16 116,14 24,95 121 SUJECIÓN CORRECTO13 175,55 631,03 150,32 46,73 114 NO SUJECIÓN INCORRECTO14 130,72 549,11 168,89 74,04 126 SUJECIÓN CORRECTO15 79,44 494,39 221,75 123,89 100 SUJECIÓN CORRECTO
En 10 de 15 pruebas (67% de los casos), tanto el proceso de agarre como el proceso de paletizado fueron exitosos. La precisión
del sistema es mucho mayor cuando la cámara se mantiene fija en su eje de rotación, pero esta prueba demuestra la funcionalidad del
prototipo, así su precisión pueda mejorarse restringiendo la cantidad de variables externas que pueden entrar en el sistema.
Evaluación del impacto de la solución propuesta
A continuación se define la cotización de todos los elementos utilizados para la creación
del prototipo. El rango del precio podría estar entre COP $45.000.000-$50.000.000 al
implementarlo en una empresa; pero el código funciona. Este prototipo funciona exclusivamente
con el MELFA RV-2A, pero sería perfectamente posible implementar el mismo sistema para
cualquier otro robot manipulador que permita inputs vía Ethernet mediante una conexión
TCP/IP.
Tabla 3. Cuadro de presupuesto para el prototipo.Herramienta Precio (2015)
Mitsubishi MELFA RV-2a (usado) $40.940.000
Licencia NI Vision Builder $4.643.700
Horas hombre (144 horas en total) $816.500
Cámara web $30.000
Total $46.430.200
Aunque el costo nominal del prototipo es elevado, su precio está concentrado
mayormente en el robot y la licencia del software. Por tal motivo, el prototipo es mucho más
rentable para una empresa que ya cuente con ambos elementos, ya que el diseño de los
algoritmos no tiene un costo implícito. No obstante, este sistema no busca desplazar al operario
humano de todas las tareas que requieran tanto visión como interacción mecánica, sino de
proteger la integridad de aquellos operarios que trabajen en procesos de tipo DDD (Dirty, Dull,
Dangerous), como ya se ha explicado anteriormente en este trabajo.
Conclusiones y recomendaciones
Todos los objetivos iniciales planteados en el proyecto fueron ejecutados con éxito; se
creó un sistema prototipo que realiza la tarea de control servo-visual para el proceso de bin-
picking en el CTAI de la Pontifica Universidad Javeriana. El prototipo puede reconocer e
interactuar con objetos homogéneos en 2D con características previamente definidas, y
proporciona una interfaz gráfica para el sistema.
El bin-picking puede ser utilizado para mejorar procesos de tipo DDD (Dirty, Dull,
Dangerous) donde sea preferible reemplazar al operario humano por un sistema automatizado de
control servo-visual. El sistema desarrollado en este trabajo cuenta con suficiente precisión para
reconocer, agarrar y paletizar todos los objetos que se encuentran en su espacio de trabajo,
aunque se debe restringir la entrada de variables físicas externas al sistema. Debido a la
naturaleza pequeña y uniforme de los cubos utilizados, no se probó si el sistema funciona con
objetos heterogéneos o de mayor peso. Sin embargo, aún quedan espacios en los que se podría
trabajar utilizando este prototipo: El sistema desarrollado en este trabajo sólo funciona en un
espacio 2D, por lo que se podría plantear el mismo sistema para un espacio en 3D en el futuro,
mediante la adición de un sensor adicional que proporcione las coordenadas de profundidad (por
ejemplo, una cámara situada en el plano horizontal).
Por otro lado, el prototipo no logra interactuar con una cantidad variable de N objetos
debido a las limitaciones de las plataformas utilizadas. La utilización de otro robot, o de otro
software de reconocimiento visual, podrían resolver este problema al permitir variabilidad en la
cantidad de objetos a trabajar. Adicionalmente, aunque el sistema ya cuenta con una interfaz
gráfica propia de la plataforma NI Vision Builder, también se podría evaluar la posibilidad de
desarrollar una aplicación móvil que permita la comunicación de estos datos hacia un lugar
remoto, al igual que la integración del sistema completo con una plataforma de ERP.
Lista de referencias
Daewon, L., Ryan, T., & H. Jin, K. (2012). Autonomous Landing of a VTOL UAV on a Moving Platform Using Visual Servoing.
Fang, Y., Liu, X., & Zhang, X. (2011). Adaptive Active Visual Servoing of nonholonomic Mobiel Robots.
Freeman, H. (1988). Machine Vision: Algorithms, Architectures, and Systems. San Diego: Academic Press, Inc.
Institute of Computer Technology - Vienna University of Technology. (2006). TCP/IP Protocol Suite, RFC, IP Addresses, IP Forwarding.
Kim, K., Kim, J., Kang, S., Kim, J., & Lee, J. (2012). Vision-Based Bin Picking System for Industrial Robotics Application.
Kohrt, C., Pipe, A., Schiedermeier, G., Stamp, R., & Kiely, J. (2008). A Robot Manipulator Communications and Control Framework.
Kristensen, S., Estable, S., Kossow, M., & Brosel, R. (2001). Bin-picking with a solid state range camera.
Mitsubishi Electric Factory Automation. (2009). MELFA Industrial Robots Consistent Quality - Precise Control.
National Instruments. (2009). NI Vision Builder for Automated Inspection Tutorial. Austin, Texas.
Pochyly, A., Kubela, T., Kozak, M., & Cihak, P. (2010). Robotic Vision for Bin-Picking Applications of Various Objects. ISR Robotik.
Quintana, D. F. (2011). Control supervisorio de un robot manipulador industrial Mitsubishi Melfa utilizando la plataforma LabVIEW.
Rahardja, K., & Kosaka, A. (1996). Vision-Based Bin-Picking: Recognition and Localization of Multiple Complex Objects Using Simple Visual Cues.
Snyder, W., & Qi, H. (2010). Machine Vision. Cambridge: Cambridge University Press.
Sonka, M., Hlavac, V., & Boyle, R. (2013). Image Processing, Analysis, and Machine Vision. Stamford: Cengage Learning.
Takayama, L., Ju, W., & Nass, C. (2008). Beyond Dirty, Dangerous and Dull: What Everyday People Think Robots Should Do. HRI '08 Proceedings o f the 3rdACM/IEEE international conference on Human robot interaction, 25-32.
Zhao, Y., Xie, W.-F., & Tu, X.-W. (2011). Multiple cameras visual servoing used for large scale.
Apéndices
APÉNDICE A: Especificaciones del robot Mitsubishi MELFA RV-2A
Model Units RV-2ADegrees of freedom 6
Driving method AC servomotor (J1 to J3 and J5 axis brake attached)
Position sensing method Absolute encoderMaximum load capacity (rating) kg 2
Maximum reach radius mm 621
Working area
1
Deg.
320 (-160 to +160)
2 180 (-45 to +135)
3 120 (+50 to +170)
4 320 (-160 to +160)
5 240 (-120 to +120)
6 400 (-200 to +200)
Maximum speed
1
Deg./s
150
2 150
3 180
4 240
5 180
6 330
Repeat position accuracy mm ±0.04Ambient temperature °C 0 to 40
Weight kg Approx. 37
Tool wiring *1
6 wires for hand-check work (4-point inputs and 2 power supply
lines, the hand unit); 4-point outputs for air-hand (the shoulder unit); 1- point output for motor-driven hand (the hand unit); 4 spare wires (0.3
mm2 in size, arranged from the base through the end of fore-arm).
Tool air-tubing
Primary: 06*2 ports Secondary: 04*4 ports
Protective structure IP30
APÉNDICE B: Especificaciones del controlador del MELFA RV-2A
Model Unit CR1-571Path control method PTP control and CP control
Number of controlled axes Axis Concurrent control of up to 6 axesCPU 64bit RISC/DSP
Main functions
Indirect interpolation, direct interpolation, 3-dimensional radii interpolation, palletizing, condition branching, subroutines, multi-tasking, optimum adjustable speed control, optimum override control, optimum route connection, etc.
Programming language MELFA-BASIC IV or MoveMaster language (MoveMaster Command)
Position teaching method Direct and remote teaching, and MDI method
Memorycapacity
Number of teaching points Point/prg 2,5
Number of steps Step/prg 5Number of programs Program 88
Externalinput/
General-purposeinput/output Point 16/16 (max. when using options: 240/240)
output Exclusive Point Allocated by general input/output (1 “STOP” point is fixed)
Hand opening/closing Point 4/0 (when using options: 4/4)RS-232C Port 1 (for the connection of a PC, vision sensor, etc.)RS-422 Port 1 (for exclusive to the connection of teaching box)
Interface Hand-exclusive slot Slot 1 (electric hand and pneumatic hand interface only)
Expansion slot *1 Slot 0 (when option is used: 3 [for expansion options])
obot input/output Channel 1 (for connecting parallel I/O unit)Ambient temperature °C 0 to 40
Ambient humidity %RH 45 to 85Powersupply Input voltage limit V 180 to 253VAC, single phase
207 to 253VAC, single phase at CEPower capacity *2 kVA 0.7
Grounding 100 or less (D-type grounding)Structure Self-supported floor type, open structure
Outside dimension *3 mm 212 (W) x 290 (D) x 151 (H)Weight *3 kg Approx. 8
Protective structure IP20 (IP54: when using CR1 protective box)
APÉNDICE C: Imágenes adicionales del espacio de trabajo
Figura 33. Cámara Guppy FireWire utilizada para el reconocimiento visual.
Figura 34. Objetos a recoger por el robot.
Figura 35. Mitsubishi MELFA RV-2‘
Figura 36. Espacio de trabajo completo (no incluye la matriz donde se organizan los cubos).