viernes, 1 de mayo de 2015

Programa para brazos roboticos

Programa para que un brazo robótico diferencie bolas de goma-espuma azules y rojas en una cadena de producción

IMG_6115

Este proyecto se ha desarrollado para solucionar un problema real en un sistema de producción de bolas de goma- espuma, concretamente en el proceso de empaquetado.
El objetivo del proyecto es conseguir que un brazo robótico identifique bolas de goma- espuma en una cinta transportadora que pueden ser de color rojo o azul.  Para eso tendrá que diferenciar qué bolas son de color azul, cuáles son rojas y la posición de cada una de ellas.
Si a la cinta llegan bolas que no han sido pintadas, el robot no debe cogerlas y, si hay bolas rotas, debe diferenciarlas de las que están bien para no empaquetarlas, meterlas en una caja de defectuosos y alertar al trabajador de que parte del proceso de fabricación anterior no está funcionando correctamente.
Para solucionar este problema se utiliza una cámara y se desarrolla un programa escrito en lenguaje C, en el entorno Visual Studio,  haciendo uso de las librerías openCV.

Ejecución del programa
El programa analiza imágenes hechas con una cámara. Se ha hecho de esta manera porque el robot tiene que empaquetar bolas que no están en movimiento, se acumulan en una plataforma. Pero sería posible analizar vídeo o imágenes en tiempo real haciendo una modificación mínima en el código del programa.
La salida del programa está compuesta por una ventana de ejecución y  una imagen. En la ventana de ejecución aparece un menú en el que se pueden elegir diferentes imágenes para analizar. Cada imagen es un posible caso que se puede dar, ya sea con un cambio en la intensidad o ángulo de iluminación, aparición de bolas rotas, bolas que no son rojas o azules, bolas que están juntas o una mezcla de todos los casos anteriores. Se ha desarrollado así para demostrar que es un sistema bastante robusto a pesar de que en visión artificial los sistemas son bastante limitados ante este tipo de casos.
A continuación se muestran las  salidas del programa cuando se analizan algunas de estas imágenes:
Imagen “A”: bola roja y azul
imagen1









menu1
Como se puede ver, el programa identifica las dos bolas en la imagen, y en la ventana de ejecución se muestra el número de bolas azules, bolas rojas, bolas azules rotas, bolas rojas rotas y la posición de cada una de ellas para que el robot las manipule. También  controla el robot diciéndole lo que tiene que hacer en cada caso y por qué orden.
 Imagen “G”: bolas rotas
imagen2
menu2
En este caso el programa  identifica el color de cada bola, si está defectuosa o no, y su posición. Después da dos órdenes al robot: que meta las bolas defectuosas en una caja y que empaquete las que están bien.
Imagen “J”: Bola de distinto color
imagen 3
imagen j
El programa funciona correctamente ya que sólo identifica las bolas roja y azul.
Imagen “O”: bolas juntas
imagen
ventana
Vemos que, aunque con menos precisión, el programa identifica las bolas que están juntas.
Imagen “M”: cambio en el ángulo de iluminación
imagen M
ventana M
Identifica las bolas idenpendientemente del lado en que que esté el foco de luz.
Imagen “Q”: bolas juntas del mismo color y bolas defectuosas
imagen Q
ventana Q
El programa diferencia las bolas juntas aunque sean del mismo color.
Imagen T: bola y bola rota juntas
imagen T
ventana T
Imagen “I”: Cambio en intensidad de iluminación
imagen I
ventana I
En esta imagen se ha aumentado la intensidad de iluminación y se han añadido dos bolas con diferentes colores y tamaños para comprobar que el programa sólo identifica una bola roja o azul y con un tamaño determinado.

No hay comentarios:

Publicar un comentario