ANDRÉS FELIPE RUIZ MONTOYA - USB
Transcript of ANDRÉS FELIPE RUIZ MONTOYA - USB
1
SISTEMA DE VISIÓN ARTIFICIAL PARA LA IDENTIFICACIÓN DE OBJETOS
MEDIANTE CÓDIGOS QR EN SISTEMAS AUTOMATIZADOS DE ALMACENAMIENTO
Y RECUPERACIÓN (ASRS).
ANDRÉS FELIPE RUIZ MONTOYA
UNIVERSIDAD DE SAN BUENAVENTURA MEDELLÍN
FACULTAD DE INGENIERÍAS
INGENIERÍA ELECTRÓNICA
MEDELLÍN
2017
2
SISTEMA DE VISIÓN ARTIFICIAL PARA LA IDENTIFICACIÓN DE OBJETOS
MEDIANTE CÓDIGOS QR EN SISTEMAS AUTOMATIZADOS DE ALMACENAMIENTO
Y RECUPERACIÓN (ASRS).
ANDRÉS FELIPE RUIZ MONTOYA
Trabajo de grado presentado para optar al título de Ingeniero Electrónico
Asesor: Gustavo Meneses Benavides, Magíster (MSc) en Ingeniería.
UNIVERSIDAD DE SAN BUENAVENTURA MEDELLÍN
FACULTAD DE INGENIERÍAS
INGENIERÍA ELECTRÓNICA
MEDELLÍN
2017
3
Dedicatoria
Quiero dedicar el presente proyecto de grado, a mis padres que fueron el gran motor para que el
sueño de ser un gran profesional fuera posible, siempre estuvieron presentes con su apoyo
incondicional en todo lo que necesitara, también a mi novia que represento un gran apoyo durante
gran parte de la carrera y a todas las personas que estuvieron acompañándome en este proceso
académico y que me dieron fuerzas para seguir adelante con la carrera universitaria.
4
Agradecimientos
Agradecer a mis padres por el apoyo incondicional que me brindaron para realizar mi carrera
universitaria, a mi asesor Gustavo Meneses Benavides que fue de gran ayuda para guiarme en el
desarrollo este proyecto de grado y también en gran parte de mi carrera, a los diferentes
profesores de la Facultad de Ingenierías que durante toda la carrera universitaria ayudaron a que
mi conocimiento académico incrementara en el campo de la electrónica y en la formación
personal, a mis compañeros de estudio que también ayudaron de una u otra forma en que este
proyecto saliera adelante y lograr los resultados esperados.
5
Tabla de contenido
Resumen .................................................................................................................................... 10
Introducción ............................................................................................................................... 12
1. Planteamiento del Problema ............................................................................................ 15
2. Justificación ..................................................................................................................... 16
3. Objetivos .......................................................................................................................... 17
3.1.Objetivo general ........................................................................................................... 17
3.2.Objetivos Específicos. .................................................................................................. 17
4. Marco teórico ................................................................................................................... 18
5. Estado del arte ................................................................................................................. 34
6. Desarrollo del proyecto ................................................................................................... 39
6.1.Mecanismo cartesiano .................................................................................................. 39
6.1.1.Motores paso a paso ................................................................................................ 40
6.1.2.Actuador eléctrico y gripper .................................................................................... 41
6.1.3.Driver para los 3 motores paso-a-paso .................................................................... 45
6.1.4.Diseño de circuito para fuente y módulo de comunicación. ................................... 47
6.1.5.Cámara con conexión IP .......................................................................................... 49
6.1.6.Cámara inalámbrica ................................................................................................. 50
6.1.7.Interfaz de usuario ................................................................................................... 52
6.1.7.1Programa decodificador de códigos QR ................................................................ 53
6.1.7.2Adquisición y procesamiento de fotos .................................................................. 55
6.1.7.3 Comunicación entre Matlab, el módulo Bluetooth y la plataforma Arduino ....... 55
6.1.8.Estantería ................................................................................................................. 56
6.1.9.Interfaz gráfica ......................................................................................................... 58
7. Migracion a Raspberry Pi ................................................................................................ 62
6
8. Conclusiones .................................................................................................................... 63
9. Trabajos a futuro .............................................................................................................. 65
10. Referencias ...................................................................................................................... 66
7
Lista de tablas
Tabla I Comparación códigos QR y RFID………………………………..……………….…30
Tabla II Características técnicas Raspberry Pi..….………………………………………..…31
8
Tabla de figuras
Fig. 1. Descripción de la ruta metodología .................................................................................... 13
Fig. 2. Sistema de almacenamiento de toma y entrega automáticas as/rs quickstore microshuttle”
[12] ................................................................................................................................................. 19
Fig. 3. Sistema AS/R LaSDAI-H [13]............................................................................................ 19
Fig. 4. Descripción del funcionamiento RFID [3] ......................................................................... 21
Fig. 5. Comunicación entre etiqueta, lector y host (computadora central) [4] ............................... 22
Fig. 6. Código de barras. Cada carácter o digito está formado por un conjunto de módulos [11] . 24
Fig. 7. Diferentes tipos de códigos de barras [15] .......................................................................... 25
Fig. 8. Etapas de funcionamiento de un sistema de visión artificial [6] ........................................ 30
Fig. 9. Comparativo con plataformas similares a Raspberry Pi [18] ............................................. 32
Fig. 10. Raspberry Pi 2 [16] ........................................................................................................... 33
Fig. 11. Algoritmo de reconocimiento de patrones [1] .................................................................. 34
Fig. 12. Detección de bordes [10] .................................................................................................. 36
Fig. 13. Entorno de trabajo y herramientas Image Processing de MATLAB ................................ 36
Fig. 14 Raspicam [20] .................................................................................................................... 37
Fig. 15. Dispositivo Piface [20]. .................................................................................................... 38
Fig. 16. diagrama de bloques de todo el proceso ........................................................................... 39
Fig. 17. Mecanismo cartesiano ....................................................................................................... 40
Fig. 18. Motor paso a paso, NEMA 17, utilizado para la construcción del mecanismo cartesiano.
Aspecto físico, dimensiones y diagrama de conexión. ................................................................... 41
Fig. 19. Pinza construida en aluminio utilizada en las pruebas. .................................................... 42
Fig. 20. Segunda pinza probada, fabricado en una impresora 3D con material ABS. ................... 43
Fig. 21. Tecera pinza utilizada. Elección definitiva para el prototipo. .......................................... 44
Fig. 22. Ensamble del conjunto pinza-actuador lineal ................................................................... 45
Fig. 23. Conexión entre driver L298n y la plataforma Arduino Uno ............................................. 46
Fig. 24. Tarjeta con driver de los motores paso-a-paso y conectores de los servomotores. ......... 47
Fig. 25. Fuente y módulo Bluetooth ............................................................................................... 48
Fig. 26. Conjunto final de tarjetas. ................................................................................................. 49
Fig. 27. Cámara con conexión IP ................................................................................................... 50
Fig 28. Capturadora de video ......................................................................................................... 51
9
Fig. 29. Cámara inalámbrica y receptor de 2.4 GHz ...................................................................... 51
Fig. 30 Mecanismo cartesiano completo ........................................................................................ 52
Fig. 31. Invocando las ibrerias utilizadas para decodificar códigos QR ....................................... 53
Fig. 32. Fragmento del código de programa en lenguaje C utilizado para decodificar codigos QR
........................................................................................................................................................ 54
Fig. 33. Algoritmo de Matlab que invoca el código en llamado “qrdecode” ................................. 54
Fig. 34. Líneas de código del script con el algoritmo para tomar fotos y almacenarlas. ............... 55
Fig. 35. Script de Matlab con el algoritmo de comunicación serial ............................................... 56
Fig. 36. estantería con su distribución ............................................................................................ 57
Fig. 37. Mecanismo cartesiano y estantería con objetos ................................................................ 58
Fig. 38. Interfaz de usuario creada en Matlab como gui (graphical user interface) ..................... 59
Fig. 39. Información recolectada después de realizar en escaneo .................................................. 61
10
Resumen
Se presenta el proceso de diseño e implementación de un sistema de visión artificial que se apoya
en la captura de imágenes, códigos de respuesta rápida (QR: Quick Response), comunicaciones
inalámbricas, algoritmos de procesamiento y dispositivos mecatrónicos, para realizar tareas de
ubicación y recuperación automática de objetos en un ambiente con condiciones controladas. El
sistema está conformado por dos partes principales: la cámara inalámbrica y su soporte, que
integra elementos de mecatrónica y comunicación inalámbrica; y el componente de visión
artificial que se encarga de procesar las imágenes obtenidas por la cámara. A través de una
interfaz de usuario que será desarrollada para controlar el sistema, se tendrá la posibilidad de
realizar acciones sobre objetos de prueba, que pueden adaptarse a aplicaciones de control de
inventario o aquellas similares a las realizadas en sistemas de almacenamiento y recuperación
automática (ASRS: Automatic Storage and Retrieval Systems). Con este trabajo de grado se
pretende hacer un aporte teórico y práctico en cuanto al desarrollo de sistemas de identificación y
recuperación automática de objetos que no estén basados en tecnologías tradicionales como los
códigos de barras y las etiquetas de identificación de radiofrecuencia (RFID). Se busca explorar
las posibilidades de la codificación QR en cuanto a desempeño, teniendo en cuenta sus
características de bajo costo de implementación y su facilidad de lectura con dispositivos
móviles.
PALABRAS CLAVE
Códigos QR, Visión artificial, Procesamiento digital de imágenes, control de inventario.
11
Abstract
The process of designing and implementing an artificial vision system based on image capture,
rapid response codes (QRs), wireless communications, processing algorithms and mechatronics
devices is presented, this in order to perform the automatic retrieval of objects within an
environment with controlled conditions. The system consists of two main parts: the wireless
camera and its support, which integrates elements of mechatronics and wireless communication;
and the artificial vision component that is responsible for processing the images obtained by the
camera. By means of a user interface that will be developed to control the system, it will be
possible to perform actions on test-objects, which can be adapted to applications of inventory
control or those similar to those made in systems of storage and automatic recovery ( ASRS:
Automatic Storage and Retrieval Systems). With this degree work is intended to make a
theoretical and practical contribution to the development of systems for automatic identification
and retrieval of objects that are not based on traditional technologies such as bar codes and radio
frequency identification (RFID) tags. The objective is to explore the possibilities of QR coding in
terms of performance, taking into account its low-cost implementation features and ease of
reading with mobile devices.
KEYWORDS
QR codes, Artificial vision, Digital image processing, inventory control.
12
Introducción
En el presente proyecto de grado se desea desarrollar un sistema experimental de visión artificial
para la identificación y recuperación automática de objetos, haciendo uso de códigos de respuesta
rápida QR (Quick Response). El usuario a través de una interfaz gráfica podrá saber cuántos
artículos se encuentran almacenados en una determinada estantería y cuáles son sus ubicaciones
en la misma para, de esta forma, poder recuperar el artículo que desee.
Después de realizar una búsqueda bibliográfica sobre temas relacionados, se evidenció que a
nivel local no existen experimentación o implementaciones de sistemas de almacenamiento y
recuperación automática (ASRS por sus siglas en inglés) que estén basados en métodos de
codificación flexibles y de bajo costo en su implementación como los códigos QR.
En la figura se muestran de manera gráfica la descripción de la ruta metodológica con las etapas
seguidas para el desarrollo de este proyecto:
13
Fig. 1. Descripción de la ruta metodología
Para el diseño e implementación del sistema propuesto se seguirán los pasos o etapas que se
describen a continuación:
1. Construcción del prototipo de soporte para el desplazamiento en los ejes “X” y “Y” de la
cámara, con el uso de actuadores eléctricos y un microcontrolador.
2. Desarrollo de los algoritmos para lectura de códigos QR, estos algoritmos se desarrollarán
con la ayuda de diferentes librerías para el procesamiento de imágenes.
Construcción de prototipo de soporte de la
cámara
Desarrollo de los algoritmos para la lectura de códigos QR
Generación de códigos
QR
Pruebas con computador para evaluar el algoritmo de lectura
Pruebas con cámaras
inalámbricas
Creación de base de
datosPrueba del
sistema integrado
14
3. Generación de códigos QR, esto se realizará con ayuda de un software llamado
“XRenQRCode V1.00”, que permite generar códigos QR fácilmente de acuerdo con los
requerimientos de este proyecto.
4. Pruebas para evaluación del algoritmo con la cámara que tiene incorporada el computador
5. Pruebas de calidad de imagen utilizando cámaras inalámbricas, se evaluará la confiabilidad de
las imágenes obtenidas de los códigos QR cuando se utilizan cámaras inalámbricas
6. Elaboración de bases de datos fotográficas
7. Pruebas de funcionamiento del sistema integrado de lectura y procesamiento de códigos QR
con cámara inalámbrica
15
1. Planteamiento del Problema
Después de realizar un proceso de búsqueda bibliográfica, en bases de datos académicas como
Springer y Science Direct y también en motores de búsqueda tradicionales, se encontró que la
mayoría de los sistemas de almacenamiento y recuperación automática (ASRS por sus siglas en
inglés) se apoyan en tecnologías de codificación ampliamente conocidas como identificación por
radiofrecuencia (RFID) y códigos de barras de una dimensión. A nivel local no se han encontrado
sistemas basados en métodos de codificación flexibles y de fácil implementación como los
códigos QR. Se evidencia entonces la falta de experimentación y de propuestas nuevas basados
en tecnologías de más bajo costo y más fácil acceso que las tradicionalmente empleadas en los
sistemas ASRS.
16
2. Justificación
A partir de este trabajo de grado se busca contribuir con una propuesta que muestre formas
alternativas para la implementación de sistemas ASRS, o partes de estos, con tecnologías menos
costosas y con un enfoque que no esté basado en soluciones propietarias, que son cerradas en
cuanto a modificaciones por parte del usuario. Según las consideraciones realizadas antes de
comenzar este proyecto y evaluando su posible impacto en el medio local, se estima que el uso de
formas de codificación alternativa y que son de fácil lectura a través de dispositivos de uso
masivo, como los teléfonos móviles y dispositivos similares, pueden representar áreas
interesantes de estudio y experimentación en el futuro cercano.
17
3. Objetivos
3.1.Objetivo general
Implementar un prototipo para la recuperación automatizada de objetos utilizando técnicas de
visión artificial y códigos de respuesta rápida (QR).
3.2. Objetivos Específicos.
Implementar un dispositivo electromecánico que permita realizar barridos con una
cámara sobre un plano cartesiano para la posterior identificación de objetos sobre este.
Desarrollar un algoritmo para la lectura de códigos QR a partir de las imágenes
tomadas con una cámara instalada sobre un mecanismo cartesiano
Realizar pruebas de precisión de lectura de códigos QR utilizando el conjunto de
cámara inalámbrica y mecanismo cartesiano
Determinar las condiciones para la migración del sistema realizado a una plataforma
de desarrollo (Raspberry Pi)
18
4. Marco teórico
Sistema de almacenamiento y recuperación automatizada (ASRS)
Los desarrollos en campos como la robótica y la automatización industrial se reflejan en
aplicaciones en el campo de la logística en la forma de lo que hoy en día se conoce como
sistemas de almacenamiento y recuperación automatizada ASRS (Automated Storage and
Retrieval Systems). Estos sistemas permiten mover elementos de inventario, mercancía o
similares en espacios como bodegas, repositorios y bibliotecas, entre otros. Los ASRS fueron
desarrollados en Japón en 1966 por una compañía que se encarga de brindar soluciones
automatizadas en materia de logística a las demás empresas, los objetivos de este desarrollo
incluían disminuir la carga de trabajo y ahorrar costos, para esto se tuvieron en cuenta aspectos
como: (1) el uso efectivo del espacio (2) mejorar la eficacia del almacenaje (3) disminuir costos
en contratación de personal y mano de obra en el almacén, (4) mejorar los niveles de gestión.
Los sistemas ASRS están conformados por los siguientes elementos:
• Estructura de almacenamiento: constituida por el estante que soporta las cargas contenidas en
el sistema (ASRS).
• Maquina S/R (Storage/Retrieval): esta se encarga de recoger la carga en la estación de entrada
y recuperarla y colocarla en la estación de salida.
• Módulos de almacenaje: Se denomina así a los contenedores de carga almacenada.
• Una o varias estaciones P&D (Pickup-and-Deposit): es allí donde se entregan los materiales o
se extraen del sistema de almacenaje, se puede realizar de forma manual o con un vehículo de
guiado autónomo (AGV por sus siglas en inglés).
• Sistema de control: es el encargado de manejar la totalidad del ASRS.
19
Fig. 2. Sistema de almacenamiento de toma y entrega automáticas as/rs quickstore microshuttle” [1]
Fig. 3. Sistema AS/R LaSDAI-H [2]
Los vehículos guiados automáticamente (AGV) disponen de diferentes sistemas de guiado y
de un sistema de control algo complejo, esto hace que se diferencien dos grandes grupos: uno
de ellos está constituido por aquellos para los cuales su sistema de comunicación y control no
20
tiene comunicación con el entorno donde se desplaza, es decir que son autónomos, trabajando
de forma automática y sin tener comunicación con el entorno donde se desplaza. El otro
grupo es el de los sistemas AGV complejos, es decir, aquellos donde la comunicación con el
entorno es fluida y fundamental, porque continuamente se envían las ordenes a los vehículos
y los movimientos a realizar, como se demuestra en [3] y [4]. algunos de los AGV que se
utilizan en almacenes están basados en rutas ya preestablecidas (guiados con líneas pintadas o
por láser). Estos sistemas no son muy flexibles y no tienen capacidad para resolver
situaciones no previstas, si en la ruta del AGV hay algún objeto que obstaculice el paso esto
hará que este se bloquee y se interrumpa la circulación de mercancías hasta que se retire el
obstáculo y se reinicien el sistema. Otro inconveniente que presenta es la gran dificultad para
trabajar en un entorno rodeado de personas, puede ocurrir un accidente con facilidad como se
menciona en [5].
Sobre el funcionamiento específico de los vehículos de guiado autónomo o automático,
podemos decir que estos pueden ubicar y recuperar objetos de inventario utilizando
dispositivos mecatrónicos incorporados a su estructura.
Códigos RFID (Radio Frequency Identification)
Los RFID o “sistemas de identificación por radiofrecuencia” son una nueva tecnología o
propuesta tecnológica que es aplicada a la identificación de objetos, y en algunos casos de
animales, a distancia y sin contacto. Para esto se requiere una etiqueta (tag) RFID compuesta
por un microchip que lleva también incorporada una antena de radio que sirve para reconocer
únicamente al elemento que porte la etiqueta.
Para leer los datos almacenados en la etiqueta, se necesita un lector. Normalmente se usa un
dispositivo que tenga una o varias antenas que emitan ondas de radio y que reciban las
señales reflejadas por la etiqueta RFID. Una vez se haga esto se procede a procesar los datos
leídos en un computador. La figura 4 ilustra esto.
21
Fig. 4. Descripción del funcionamiento RFID [6]
Los microchips de las etiquetas RFID pueden ser de solo lectura o re-grabables, estando estos
últimos abiertos a más posibilidades puesto que se puede modificar la información o
agregarle información adicional a la que ya se encuentra grabada, lo cual lo convierte en algo
muy útil referente al seguimiento de objetos que porten la etiqueta RFID por ejemplo
movimientos en diferentes procesos de fabricación y almacenaje, estudios biométricos en
animales, movimientos en diferentes procesos de fabricación y almacenaje, etc.
Los sistemas RFID trabajan en las bandas de frecuencia de 125 o 134 kHz. Para baja
frecuencia y 13MHz para alta frecuencia, aunque también es posible que trabajen en otros
rangos de frecuencia. Como se hace referencia en [6]
Un típico sistema de RFID se constituye por 4 componente principales que son: Las etiquetas
(tags), lectores, antenas y un host o computador central, como lo mencionan en [5]. Una
etiqueta RFID se conforma por un microchip y una antena flexible que se instala sobre una
superficie de material plástico. El dispositivo lector se utiliza para leer además de escribir
información en el tag. En la actualidad, usualmente se utilizan etiquetas adhesivas de
identificación. Estas etiquetas inteligentes pueden ser impresas y adheridas a cada artículo.
Cuando el lector emite una onda de radio y la etiqueta o tag se encuentra en el rango de
22
lectura, esta responde identificándose a sí misma. Se denomina rango de lectura a la distancia
o radio dentro del cual un lector puede comunicarse con una etiqueta. [7]
Fig. 5. Comunicación entre etiqueta, lector y host (computadora central) [7]
Códigos de barras
Reseña histórica
En 1932 en la universidad Harvard University en la Escuela de administración de negocios
(School of Business Administration) se desarrolló un ambicioso proyecto de grado liderado
por el estudiante Wallace Flint, este proponía que los clientes de un supermercado marcaran
en una tarjeta perforada los artículos que deseaban comprar, luego introducían esta tarjeta en
un sistema automático que les proporcionaría lo que habían marcado.
El código de barras en conocemos hoy nació en 1948. Bernard Silver un estudiante graduado
de Drexel Institute of Technology de filadelfia, escuchó por casualidad al presidente de una
cadena de supermercados cuando este le pedía a un decano de la universidad que realizara
una investigación para desarrollar un sistema donde se pudiera identificar los artículos a la
hora de cobrarlos. Bernard con ayuda de su amigo Normand desarrollaron el primer código de
barras tras un año de investigar. Este código de barras recibió el nombre de “bull’s eye code”
23
por qué consistía en una serie de círculos concéntricos para que pudiera ser leído en cualquier
dirección, como se demuestra en [11]. En la actualidad los códigos de barras se usan
mundialmente como un sistema de codificación de uso extendido, esto ya que han sido
populares para la marcación de productos y su posterior comercialización, entre otros usos.
Definición
Un código de barras es un sistema de codificación que fue creado con el objetivo de
identificación de objetos, obteniendo información de este. Este sistema de codificación es
exitoso por la gran fiabilidad que presenta en la recolección automática de datos,
minimizando los errores humanos que se puedan presentar a la hora de ingresarlos
manualmente.
Se puede definir como un patrón formado por espacios paralelos y barras que codifica
información mediante el ancho de estos elementos. [11]
Nomenclatura
La visualización de los códigos de barra suele presentarse mediante barras verticales; barras
negras y espacios que representan caracteres de información, donde el ancho de estas puede
ser variable. Un código de barras se puede presentar de la siguiente manera: como se
menciona en [11]
Modulo: unidad mínima o básica de un código
Barra: elemento oscuro dentro del código. Equivale al binario 1
Espacio: componente claro dentro del código. Equivale al binario 0
Carácter: conformado por barras y espacios. Usualmente equivale a un carácter
alfanumérico.
24
Fig. 6. Código de barras. Cada carácter o digito está formado por un conjunto de módulos [11]
25
La figura muestra diferentes tipos de códigos de barras:
Fig. 7. Diferentes tipos de códigos de barras [8]
Códigos de barras lineales
Códigos de barras apilados
Códigos de barras matriciales
Códigos de barras compuestos
Códigos postales
26
Códigos QR
Los códigos QR o respuesta rápida (Quick Response) son una evolución del popular código
de barras. Este es un código de barras que permite representar en un gráfico bidimensional
más de 4000 caracteres alfanuméricos y que se utiliza para almacenar información en una
matriz de puntos bidimensionales, tanto vertical como horizontal, que contiene información
codificada en ella, diferenciándose del código tradicional ya que este solo puede almacenar
información en una sola dimensión horizontal.
Para interpretar o leer un código QR es necesario un dispositivo que tenga previamente
instalado un lector y una cámara que pueda tomar fotos. Anteriormente solo las empresas
disponían de lectores diseñados para esto. Pero en la actualidad, con las nuevas tecnologías de
telefonía móvil, esto ya no es un problema.
Para la decodificación de un código QR se debe tener en cuenta los siguientes ocho aspectos
[7]
1. Localizar y obtener una imagen del símbolo QR y establecer una matriz de bits
“1” y “0”, reconociendo en esta los módulos blancos y negros.
2. Leer la información de formato. Obtener el nivel de corrección de errores y el tipo
de patrón que se empleó para la máscara de datos.
3. Leer la información de versión (si aplica) y determinar el tamaño en módulos del
símbolo.
4. Aplicar la máscara de datos a la matriz en la región de codificación mediante la
operación XOR.
5. Obtener los codewords de datos y de corrección de errores de acuerdo a la versión
que se leyó.
6. Detectar los posibles errores en los codewords de datos, a partir de los codewords
de corrección de errores y del nivel de corrección que se detecte.
7. Dividir los codewords de datos que se corrigieron en segmentos de acuerdo a los
indicadores de modo y a los contadores de caracteres encontrados.
27
8. Decodificar todos los caracteres de acuerdo a su modo de codificación y
concatenar los resultados para obtener la cadena original, Lo que se desea realizar
en mi tesis es implementar un algoritmo en Matlab y con la ayuda de una cámara
inalámbrica se pueda detectar e identificar códigos QR. [7]
La identificación de productos mediante el uso de códigos de barras ha sido investigada
durante décadas y se aplica constantemente en la práctica. Hoy en día no hay casi ningún
producto de consumo que no posea un código de barras o algún medio de codificación. Con
la introducción de códigos de barras 2D, la capacidad para codificar datos ha aumentado
dramáticamente, y, en consecuencia, la posibilidad de almacenar más datos en el propio
código. La mayor capacidad para almacenar datos en un código 2D abre nuevas posibilidades,
como la transferencia de la información básica acerca de un producto, como las instrucciones
de uso, método de transporte, etc., sin la necesidad de datos de vinculación del código de
barras con una base de datos donde se almacenan más informaciones, como es el caso de los
códigos de barras lineales convencionales. Por otra parte, para el reconocimiento de códigos
2D se necesita un hardware y software más exigentes que para leer otras formas de
codificación menos elaboradas.
Estos códigos son de gran capacidad de almacenamiento de información y se han utilizado
para publicar información promocional de productos o hasta incluso claves de acceso a
diferentes aplicaciones. Estos se pueden encontrar fácilmente en revistas y vallas
publicitarias. El objetivo de estos es hacer que los usuarios utilicen sus dispositivos móviles
para poder leerlo, posteriormente este lo re-direccionará a la empresa que creo este código
mediante su sitio web o algo similar.
Algunas de las ventajas de usar códigos QR son:
- Es una herramienta de bajo costo que permite conocer un mensaje con rapidez.
- Gracias al auge de la implementación de los códigos QR en la publicidad se ha generado
herramientas prácticas para crear de manera automática y simple códigos QR, estas
herramientas son gratuitas.
28
- Innovación y modernidad: cuando una empresa usa esta herramienta, le aporta a tener una
imagen de modernidad, también de adaptación a las nuevas tecnologías.
Procesamiento de imágenes
En el procesamiento digital de imágenes se deben tener en cuenta varios aspectos como por
ejemplo la percepción psico-visual del ser humano. Este es uno de los factores más
importantes porque independientemente del tratamiento que se le realice a una imagen, el
observador será quien diga si la imagen le gusta o no según su percepción. El procesamiento
digital de imágenes es un campo de investigación abierto y en gran crecimiento, como se
evidencia en [9]. El principal objetivo del procesamiento de imágenes es mejorar la calidad de
estas para una siguiente utilización e interpretación.
La visión computacional (visión artificial) tiene como función principal reconocer y localizar
objetos en un lugar con la ayuda del procesamiento de imágenes. La visión computacional es
considerada por algunas personas como “el estudio del procesamiento de imágenes para
construir máquinas con capacidades similares a las humanas”. [10]
El objetivo de la visión artificial es extraer de una imagen las suficientes características para
su posterior interpretación por computador.
Dependiendo del entorno donde se realice la aplicación, los pasos a seguir como se menciona
en [10] pueden ser:
Aplicación industrial
Captura de la imagen
Definición de la región de interés donde se realizará las medidas
Iniciación de las tolerancias para determinar si la pieza es o no correcta
Ejecutar las medidas
Generar salida apropiada [10]
29
Aplicación científica
Captura de la imagen
Hacer un proceso de mejora
Determinar qué elementos se van a medir
Ejecutar la medida
Almacenar las medidas y realizar procesos gráficos o estadísticos [10]
Un sistema de visión artificial, para que tenga buen desempeño, depende en mayor parte de
los componentes que lo conforman, para que el sistema funcione de manera adecuada, existen
varias tareas.
Captación: Proceso por el cual se obtiene la imagen
Pre-procesamiento: Se incluyen técnicas tales como el realce de detalles y la reducción del
ruido
Segmentación: Procedimiento que fracciona una imagen en objetos que sean de nuestro
interés
Descripción: Procedimiento en el cual se obtiene propiedades adecuadas para discriminar un
objeto de otro, por ejemplo, forma y tamaño
Reconocimiento: Procedimiento que permite asociar un significado a un grupo de objetos
identificados. [10]
30
Fig. 8. Etapas de funcionamiento de un sistema de visión artificial [10]
La tabla muestra algunas diferencias entre los códigos QR y los códigos RFID, ambas
tecnologías de amplio uso en la actualidad.
Tabla I Comparación códigos QR y RFID
Ítem
Tipos de datos Cualquier tipo Cualquier tipo
Acceso on-line Puede acceder directamente No puede
Costo Bajo Alto
Seguimiento URL Puede Puede
Lectura 1 ítem Múltiples ítem
Dispositivos de
decodificación
Cualquier computador, celulares con
software de decodificación
Lectores RFID
Interferencias Sin interferencias Pueden interferir en las lecturas otros
tags cercanos
31
Minicomputador o plataforma de desarrollo Raspberry Pi
Raspberry Pi es un SBC (Single Board Computer) ideado inicialmente para impulsar la
educación de las tecnologías de información en Reino Unido. En la siguiente tabla se
mencionaran las especificaciones técnicas de esta placa.
Tabla II Características técnicas Raspberry Pi, modelo B [11]
Precio aproximado US $ 35
Sistema en un chip (SoC): Broadcom BCM2836
CPU: 900 Mhz quad core ARMv7 Cortex-A7
GPU: Broadcom VideoCore IV, OpenGL ES 2.0,OpenVG 1080p30 H.264 high-
profile encode/decode, 250 MHz
Memoria (SDRAM)iB: 1024 MiB
Puertos USB 4 USB 2.0 (via integrated USB hub in LAN9514)
Salidas de vídeo HDMI | Composite
Salidas de audio: TRS connector | 3.5 mm jack, HDMI
Entradas de audio: Ninguno, pero se puede agregar un micrófono USB o una tarjeta de sonido
Almacenamiento: Micro Secure Digital / MicroSD
Conector de red: 10/100 Ethernet RJ45
Periféricos de bajo nivel: 40 pines de propósito general entrada/salida (GPIO), Serial Peripheral Interface
Bus (SPI), I²C, I²S,[5], Universal asynchronous receiver/transmitter (UART)
Reloj en tiempo real: Ninguno
Potencias nominales: ~650 mA, (3.0 W)
32
Fuente de alimentación: 5 V (DC)
Tamaño: 85.0 x 56.0 mm x 17mm
Peso aproximado: 40g
Fig. 9. Comparativo con plataformas similares a Raspberry Pi [12]
33
Fig. 10. Raspberry Pi 2 [13]
En esta tarjeta, Raspberry Pi, se pueden instalar distintos sistemas operativos y distribuciones, de
este modo se crea un entorno de desarrollo o se puede utilizar para una necesidad en específico.
Algunos de los sistemas operativos a destacar son los siguientes como se menciona en [14]:
Raspbian: basado en devian, fue diseñado específicamente para la CPU de la Raspberry Pi
ARMv6. Y se orientó a la enseñanza informática.
UBUNTU mate: Distribución basada en ubuntu pero con entorno de escritorio Mate.
Windows CE: SO desarrollado por Microsoft para sistemas embebidos, compatible con
procesadores ARM.
OpenELEC: Distribución con único propósito, desarrollado como centro multimedia.
34
5. Estado del arte
En el año 2010 en la Universidad Pontificia Javeriana, se realizó una tesis sobre el diseño y la
implementación de un “Control de un almacén de ASRS desarrollado en una herramienta gráfica
para pruebas de control”. Es este desarrollo no se usaron lectores de códigos de ningún tipo, todo
fue programado en un controlador lógico programable (PLC); se definieron ubicaciones únicas en
una base de datos que se creó antes de correr el programa, entonces, se sabía cuál iba a hacer la
ubicación de cada artículo dependiendo del código que ya tenía [15].
En la Universidad de las Fuerzas Armadas ESPE de Ecuador, utilizando procesamiento digital de
imágenes, se diseñó y construyó un sistema automatizado de almacenamiento y recuperación
(AS/RS), para sistemas de producción flexible en el laboratorio CNC de la extensión Latacunga.
Este sistema lo diseñaron para almacenar y recolectar artículos relacionados a la industria
mecánica, para el reconocimiento de dicha materia prima usaron un algoritmo de reconocimiento
de rectángulos, cuadrados y cilindros, el algoritmo fue desarrollado mediante la herramienta
IMAQ de LabView. [16]
Fig. 11. Algoritmo de reconocimiento de patrones [16]
En la Universidad Nacional Mayor de San Marcos, Lima-Perú, y en la universidad de las islas
Baleares en España, se han desarrolla sistemas ASRS, estos sistemas son automatizados por
completo y se memoriza las ubicaciones de todos los artículos, cuando llega un artículo nuevo al
almacén, a este se le debe asignar un código o referencia, y después se debe trazar una ruta de
donde se desea almacenar.
35
En la Universidad de Alicante, investigadores desarrollaron una innovadora tecnología
implementada sobre vehículos que permiten el movimiento y transporte de carga es espacios
complejos sin necesidad de que una persona lo conduzca, esta tecnología representa múltiples
ventajas con respecto a las existentes en la actualidad. Organiza la información del entorno
captada por los sensores de modo que la forma de los obstáculos que se detectan interfiera en la
localización del vehículo. Además esta tecnología se puede implementar en cualquier vehículo
comercial [5]. Adicionalmente, se le puede adicionar un lector de códigos QR para que detecte
objetos y los pueda almacenar o recuperar.
Con relación a los desarrollos de los lectores de códigos y después de realizar una búsqueda en el
mercado, se encontró un lector de códigos QR llamado RT900, este se basa en el procesamiento
de imágenes 2D pero este dispositivo fue creado básicamente para la industria. La idea de nuestro
proyecto es que sea un desarrollo en cierto sentido más académico, más abierto a la investigación
y desarrollo, en principio, en un entorno universitario.
Como ya se mencionó anteriormente, para el reconocimiento de un código 2D (del tipo QR) es
necesario un hardware y un software más exigente, en la universidad Novi Sad, Serbia, se realizó
una investigación en la que se describen la mayoría de tipos de código de barras 2D, especifican
como son codificados y decodificados, también se explica cuál es su capacidad para almacenar
datos y su posible aplicabilidad. Uno de los métodos para decodificar este tipo de códigos es
mediante el uso procesamiento digital de imágenes [17].
Existen varias técnicas para la segmentación en procesamiento digital de imágenes; en la
Universidad Nacional Mayor de San Marcos, Perú, realizaron una revisión bibliográfica sobre
segmentación de imágenes y sus principales técnicas. La segmentación divide una imagen
dependiendo del tipo de problema que se va a solucionar, ellos se basaron en 3 tópicos
fundamentales:
1. Detención de bordes
2. Umbralizacion
36
3. Basado de regiones.
Fig. 12. Detección de bordes [18]
Estas técnicas, se deben implementar en un software capaz de procesarlas, uno de estos
programas es MATLAB (Matrix Laboratory) de la compañía Mathworks, este es un software
matemático que ofrece un entorno de desarrollo integrado (IDE), tiene un lenguaje de
programación propio que es el lenguaje M, cuenta con cajas de herramientas (tooolboxes) para
ampliar sus capacidades, para el caso de procesamiento digital de imágenes se emplea el toolbox
llamado “Image Processing”.
Fig. 13. Entorno de trabajo y herramientas Image Processing de MATLAB
37
En la Universidad de Barcelona, en el año 2014, se realizó un estudio sobre la viabilidad de
construir un “Sistema de visión de bajo costo basado en Raspberry Pi”, utilizaron las Raspberry
Pi 2, el ambiente de trabajo consistió en el IDE Eclipse trabajando en forma remota con
Raspberry en la cual se producía la compilación y ejecución del código, utilizaron librerías de
visión de OpenCV, usaron la cámara que la fundación Raspberry comercializa llamada
RaspiCam, esta es capaz de capturar video en los siguientes modos: 1080p@30fps, 720p@60fps,
480@90fps [19].
Fig. 14 Raspicam [19]
Este la ejecución de este proyecto se dividió en tres partes [19]:
1- Sistema de adquisición de imágenes: Usaron librerías de OpenCV.
2- Procesado de la imagen: uso de funciones específicas de OpenCV.
3- Entrada/Salida: Uso de entradas y salidas de Raspberry y del dispositivo Piface.
38
Fig. 15. Dispositivo Piface [19]
Concluyendo que si se pueden utilizar sistemas como estos para realizar tareas sencillas.
39
6. Desarrollo del proyecto
A continuación, se describe en un diagrama de bloques todo el proceso desarrollado en este
proyecto:
Fig. 16. Diagrama de bloques de todo el proceso
6.1. Mecanismo cartesiano
En la construcción del mecanismo cartesiano X-Y se utilizó un sistema que se usa en impresoras
3D, en particular la impresora del proyecto abierto y colaborativo denominado Prusa, este está
compuesto por 3 motores paso a paso, ejes roscados y lisos y algunos acoples, se realizaron
varias adaptaciones de estos elementos para que cumplieran los objetivos propuestos en este
trabajo de grado. En el caso particular se adquirieron los elementos a través de la empresa Make-
R de Colombia la cual comercializa los elementos de un prototipo de impresora adaptada por
ellos que se denomina Prusa Tayrona. Con el fin de reducir los costos de implementación el
marco de soporte de la estructura no se adquirió, sino que se desarrolló en madera.
Matlab: Usuario realiza da orden de escaneo inicial.
Tarjeta controladora: Recibe orden del usuario a
travez de bluetooth y ejecuta linea ordenes para los motores paso a paso.
Dispositivo cartesiano: Recibe ordenes del
arduino y realiza dezplazamientos en X - Y,
toma fotos y las envia Matlab.
Matlab: Recibe la fotos obtenidas por la
camara y las procesa, luego almacena la
información recopilada.
Matlab: Muestra articulos disponibles en estanteria y espera ordenes del usuario
para recuperación.
Tarjeta controladora: Recibe orden de recuperar objeto especifico y ejecuta
linea de comando correspondiente a la
ubicación de este.
Dispositivo cartesiano: Recibe las ordenes de
arduino y se desplaza a la posicion que esta
almacenado el articulo solicitado
dispositivo cartesiano: Realiza dezplasamiento en eje Z y recupara el objeto.
envia a Matlab aviso de recuperacion exitosa
Matlab: Recibe mensaje de
recuperacion exitosa.
40
Fig. 17 Mecanismo cartesiano
6.1.1. Motores paso a paso
Los motores utilizados para realizar los movimientos del mecanismo cartesiano son del tipo
bipolar. Se realizaron pruebas de funcionamiento de cada uno de los motores paso a paso del
mecanismo cartesiano, para esto se construyó un circuito provisional con drivers L293d y se
realizó un programa de prueba para la plataforma de prototipado rápido Arduino Uno, esto se
realizó para verificar la rapidez de los motores y el funcionamiento de los driver para los
motores paso a paso.
41
Fig. 18. Motor paso a paso, NEMA 17, utilizado para la construcción del mecanismo cartesiano. Aspecto
físico, dimensiones y diagrama de conexión.
6.1.2. Actuador eléctrico y gripper
Para realizar la ubicación o recuperación automática de los elementos se requiere de un actuador
tipo pinza (gripper). En este orden de ideas se realizaron varias pruebas con diferentes tipos de
pinza, se probó con una pinza (1) fabricado en aluminio, esta presentó varios problemas, uno de
ellos fue que se atascaba a veces cuando realizaba su apertura y también el hecho de que es muy
grande y, para este prototipo, no cumple con los requerimientos. Con ayuda del estudiante
Andrés Ríos del Semillero de Investigación en Robótica y Mecatrónica SIRMO, se imprimieron
2 gripper en la impresora 3D que posee la Universidad, el primero que se imprimió funciona muy
bien pero es un gripper (2) muy pequeño y no recupera de forma adecuada los objetos, se decidió
imprimir otro gripper (3) y este si se ajustaba a los requerimientos, por lo tanto fue el que se
decidió utilizar.
Se realizaron múltiples pruebas con pinzas o gripper diferentes, en cada prueba que se ejecutó se
evalúo: máxima apertura, tamaño del gripper, fuerza de agarre y funcionamiento general.
Como se describió anteriormente, el primer gripper que se utilizó está construido en aluminio,
cumple con su función general de abrir y cerrar, pero después de realizar varias pruebas, se
evidenció que algunas veces este se atasca, también es una pinza de tamaño grande para lo que se
requiere específicamente en este proyecto.
42
Fig. 19. Pinza construida en aluminio utilizada en las pruebas.
Se procedió entonces a imprimir dos diseños de pinzas robóticas encontrados en el repositorio de
modelos 3D llamado Thingiverse. La primera pinza impresa, y la segundo a probar, está
construida con acrilonitrilo butadieno estireno, ABS, y su funcionamiento es relativamente muy
sencillo, dado que es una pinza diseñada para utilizar con micro-servomotores resulta muy
pequeña para los objetos que tendría que sujetar en las pruebas proyectadas, entonces se encontró
que no es la más recomendada para este prototipo.
43
Fig. 20. Segunda pinza probada, fabricado en una impresora 3D con material ABS.
La tercera pinza probada, que resultó ser la definitiva, también fue impreso en 3D, este diseño se
ajustó muy bien a las condiciones que se requerían para la función a desempeñar en este
proyecto, es de buen tamaño, tiene una apertura máxima de 52 mm, tiene buena fuerza de agarre
y funciona sin ningún problema.
44
Fig. 21. Tecera pinza utilizada. Elección definitiva para el prototipo.
Después de elegida la pinza a utilizar, se procedió a realizar pruebas del actuador eléctrico antes
de ensamblar el conjunto actuador lineal-pinza. Para esto se creó un programa para ejecución en
la plataforma Arduino y se ejecutó para verificar su correcto funcionamiento. El actuador lineal
desplaza la pinza o gripper en el eje Z, para que esta pueda recuperar un objeto. La siguiente
figura muestra el resultado final del gripper y el actuador
45
Fig. 22. Ensamble del conjunto pinza-actuador lineal
6.1.3. Driver para los 3 motores paso-a-paso
Inicialmente se diseñó un circuito con tres drivers de referencia L293D para controlar los
motores paso a paso, se realizaron varias pruebas de funcionamiento y se encontró que estos se
calentaban excesivamente. Dentro de las razones se evidenció que los motores exigían mucha
corriente, por lo cual entraban en condición de corto circuito. Se decidió entonces utilizar drivers
de referencia L298N, dado que estos son para más altas corrientes de salida (4A) y además su
diseño permite adaptarle un disipador. Como estos drivers en circuito integrado no tienen los
diodos a la salida internos, estos se deben agregar externamente, se conectaron 2 diodos por
salida. Los diodos usados son diodos rectificadores. Después de armar el circuito se realizaron
varias pruebas de funcionamiento y aunque en principio funcionaron correctamente, después de
energizar el motor, luego de un tiempo el integrado entraba en corto. Entonces, luego de
diferentes análisis y consideraciones de diseño, se decidió cambiar los diodos rectificadores que
tenía conectado a la salida por diodos de respuesta rápida (Schottky) para luego realizar pruebas
46
nuevamente, estas últimas arrojaron un resultado satisfactorio. El esquema general que se usó
para la construcción se muestra en la figura.
Fig. 23. Conexión entre driver L298n y la plataforma Arduino Uno
Después de definir cuales driver se utilizarían, se ensambló el circuito sobre una tarjeta en la que
están los tres drivers para los motores paso a paso y se agregaron dos conectores para los
servomotores que hacen parte de la pinza y del actuador lineal. La figura muestra el resultado
final
47
Fig. 24. Tarjeta con driver de los motores paso-a-paso y conectores de los servomotores.
6.1.4. Diseño de circuito para fuente y módulo de comunicación.
El control de los motores se realizó con la placa de prototipado rápido Arduino Uno, esta se
utilizó por su versatilidad a la hora de realizar cambios en el código y ensayar su funcionamiento,
pero se es consciente que todo el código realizado en Arduino se puede migrar a lenguaje C para
programarlo en otro tipo de microcontroladores si se requiere. Para la comunicación con el
computador se utilizó un módulo Bluetooth RN-42-SM. La alimentación de todo el sistema
cartesiano se realizará con una batería de 12 Voltios de 12 amperios-hora, a su vez de la batería
se alimentará una fuente de tipo conmutado y variable LM2576 con salida de 5V, esto para la
alimentación de la tarjeta Arduino y de la tarjeta de los drivers de los motores con sus respectivos
ventiladores. De la salida de voltaje de 3.3V de la placa de Arduino, se alimenta el módulo
Bluethooth.
48
Fig. 25. Fuente y módulo Bluetooth
49
Fig. 26. Conjunto final de tarjetas.
6.1.5. Cámara con conexión IP
El propósito es diseñar un prototipo que utilice comunicaciones inalámbricas, por esto se decidió
utilizar una cámara con conexión IP (Internet Protocol), se realizaron pruebas de configuración
de esta cámara y no se logró que Matlab pudiera acceder a la dirección IP que tiene la cámara,
50
por consiguiente, se decidió buscar otro tipo de cámara inalámbrica que fuera compatible con
Matlab.
Fig. 27. Cámara con conexión IP
6.1.6. Cámara inalámbrica
Se decidió entonces utilizar otro tipo de cámaras inalámbricas, estas trasmiten la señal de audio y
video a un receptor de señales RF que funciona en la banda libre de frecuencias ISM (para uso en
aplicaciones de tipo industrial, científico y médico) de 2.4 GHZ. El computador las recibe por
medio de una capturadora de video o tarjeta de video externa, y el software Matlab la detecta
como una cámara USB, se verificó durante las pruebas realizadas que la resolución de esta
cámara es la suficiente para lo que se necesita en este proyecto.
51
Fig 28. Capturadora de video
Fig. 29. Cámara inalámbrica y receptor de 2.4 GHz
52
Despues de unir todos los elementos anteriormente mencionados, el mecanismo cartesiano quedó
como se muestra en la figura.
Fig. 30 Mecanismo cartesiano completo
6.1.7. Interfaz de usuario
El software que se decidió utilizar para este proyecto fue Matlab, este posee muy buenas librerías
(toolboxes) de procesamiento de imágenes y además se puede integrar con otros programas y
entornos de uso en electrónica, como Arduino, Rasberry Pi, entre otros, adicionalmente permite
diseñar interfaces gráficas.
53
6.1.7.1. Programa decodificador de códigos QR
Lo primero que se desarrolló fue un algoritmo capaz de procesar códigos QR. Matlab posee una
función llamada “MEX” esta función compila o enlaza uno o más códigos de C, C++, Fortran o
archivos de código fuente en un archivo binario “MEX” para que se puedan llamar desde Matlab.
aprovechando esto, se decidió programar el código decodificador de QR en C++ y luego, con
ayuda de unas librerías de la aplicación “Zbar”, opencv, mexopencv y de un compilador de C++
que Matlab selecciona automaticamente, se invoca desde Matlab el programa que fue llamado
qrdecode y este código puede correr fácilmente y procesar cualquier tipo de código QR.
Fig. 31. Invocando las ibrerias utilizadas para decodificar códigos QR
54
Fig. 32. Fragmento del código de programa en lenguaje C utilizado para decodificar codigos QR
Fig. 33. Algoritmo de Matlab que invoca el código en llamado “qrdecode”
55
6.1.7.2. Adquisición y procesamiento de fotos
Después de desarrollar los elementos de programación, es decir, los algoritmos, se realizaron
pruebas con múltiples códigos QR para probar su funcionamiento. Todas las pruebas fueron
satisfactorias, después se configuró la cámara inalámbrica y se realizaron pruebas tomando fotos
con el algoritmo para evaluar a que distancia y que tamaños deberían estar los objetos para que el
código pueda ser procesado. Esto es necesario porque la cámara inalámbrica es de poca
resolución, y si los objetos son puestos a una distancia muy larga el programa diseñado no puede
procesar el código QR. La distancia optima de funcionamiento fue de 10 cm.
Fig. 34. Líneas de código del script con el algoritmo para tomar fotos y almacenarlas.
6.1.7.3. Comunicación entre Matlab, el módulo Bluetooth y la plataforma Arduino
Después se realizaron pruebas de comunicación de Matlab con el módulo Bluethooth que está
conectado con la tarjeta Arduino, esto se verificó haciendo uso del algoritmo mostrado en la
figura, el cual configura el puerto serial y envía en este caso una cadena de caracteres “*IDN?”.
56
Fig. 35. Script de Matlab con el algoritmo de comunicación serial
6.1.8. Estantería
Antes de proceder con la creación de la interfaz gráfica que sería la última parte de este proyecto,
se diseñó y se construyó una estantería en madera de dimensiones 37 por 40 centímetros para
almacenar 4 objetos. Con estos se procedió a recuperarlos con la ayuda de todo lo desarrollado y
mostrado anteriormente.
57
Fig. 36. Estantería con su distribución
los objetos, que en este caso son cajas, están cada uno marcados con un código QR diferente, la
información que tienen los códigos es la siguiente: 100, 200, 300, 400. Esta información se puede
cambiar cuando se requiera. El mecanismo se ubica frente a la estantería y hace un barrido por
los objetos para proceder a la identificación automática.
A B
C D
58
Fig. 37. Mecanismo cartesiano y estantería con objetos
6.1.9. Interfaz gráfica
Para la interfaz del usuario final, se creó una aplicación de Matlab, también llamada guide, para
este efecto el archivo .gui está compuesto por 2 botones, 1 para escanear la estantería
inicialmente y el otro para recuperar los objetos, también posee cuadros de texto estático donde
aparecerá la información de las acciones realizadas y una tabla donde aparecerá cuales son los
artículos que se encuentran en la estantería. Esto se organizó de manera que el usuario lo pueda
utilizar fácilmente.
59
Fig. 38. Interfaz de usuario creada en Matlab como gui (graphical user interface)
Después de hacer que todo lo anterior funcionara por partes separadas, se inició la integración de
todas la partes, en el gui de Matlab se programa cada botón de acuerdo a las funciones que se
deben ejecutar cuando se presione.
A continuación, se describe como se diseñó el Guide o interfaz gráfica para este prototipo
En el cuadro de imagen llamado QR, se mostrarán las fotos de los objetos que estén almacenados
en la estantería, en la lista de menús desplegable, aparecerán 4 opciones que son: A, B, C, D,
estas representan cada uno de los objetos que están en la estantería y la idea de implementarla así
es que el usuario cuando quiera recuperar un objeto, lo seleccione de esta lista, apareciéndole la
foto de los que hay en la estantería en ese lugar para que posteriormente el usuario confirme si es
lo que realmente desea recuperar.
60
El botón “Recuperar” tiene la función de que cuando se presione, este envié la letra que aparece
en ese momento en la lista de menú desplegable por medio del puerto serial a la tarjeta Arduino y
esta ejecute una secuencia que permita la recuperación de este objeto.
En la tabla que aparece en la parte superior derecha, aparecerán los objetos que están disponibles
desde que se realizó el último escaneo de la estantería.
El botón “Escanear” tiene la función de que cuando se presione, Matlab envía una “I” por el
puerto serial al módulo de comunicación Bluethooth, Arduino la recibe por medio de este y
ejecuta una serie de secuencias donde inicia un barrido inicial por los lugares donde se
almacenaran los objetos en la estantería, se ejecuta al tiempo un programa en Matlab que es el
encargado de tomar las fotos cada x tiempo y procesarla para extraer la información del código
QR si es que hay algún objeto en esa celda, después de realizar todo el barrido de la estantería, se
procederá a almacenar la información obtenida en una matriz que se mostrará en la tabla y a antes
mencionada. La figura muestra la información recolectada después de realizar un escaneo.
61
Fig. 39. Información recolectada después de realizar en escaneo
62
7. Migracion a Raspberry Pi
Uno de los objetivos de este proyecto, era determinar qué tan posible es migrar todo lo
desarrollado a un minicomputador Raspberry Pi, después de realizar un trabajo de revisión
bibliográfica, se logró identificar cuáles son los requerimientos para poder desarrollar un
proyecto de procesamiento de imágenes, mas especifico en este caso, procesamiento de códigos
QR. A continuación, se listan los requerimientos para migrar este desarrollo a una Raspberry Pi.
Raspberry Pi.
Raspberry Pi camera (RaspiCam) [14].
Pantalla para visualizar las capturas de imágenes y la interfaz de usuario.
Conexión por SSH desde un Computador hasta la Raspberry Pi para programar
la aplicación directamente sobre la placa [14].
Librerías de Python “PiCamera” y “RPi.GPIO” [14].
Programa fbi (Linux framebuffer imageviewer), que realiza la trasferencia de
las imágenes adquiridas a la pantalla [14].
Programa procesador de códigos QR.
63
8. Conclusiones
En búsqueda de una rápida y fácil programación del microcontrolador del mecanismo
cartesiano, se usó la tarjeta de prototipado Arduino Uno, pero para darle un mayor alcance
a futuros proyectos, se ve más viable el uso de un lenguaje de programación más robusto
y posiblemente otro microcontrolador diferente al Atmel para programar el controlador
del prototipo.
La cámara que se utilizó en este proyecto es de un relativo bajo costo, sin embargo,
aunque esta cámara cumple con los requisitos mínimos, posteriomente se puede cambiar
por una de mayor resolución, en el mercado existen muchos tipos de cámaras
inalámbricas a diferentes precios.
La totalidad de la interfaz de usuario se desarrolló bajo entorno Linux, La programación
del código decodificador QR, se realizó en lenguaje C++ pensando en una futura
migración del sistema a Rasberry Pi, concluyendo que este sistema es compatible con esta
placa de desarrollo.
En la actualidad la cantidad de dispositivos disponibles como cámaras, módulos de
comunicación, plataformas de desarrollo y tarjetas de prototipado, así como la existencia
de paquetes de gran poder computacional como Matlab y Labview, por mencionar
algunos, hace viable la integración de los elementos mencionados en soluciones
automatizadas de almacenamiento y recuperación de objetos para aplicaciones de
logística.
Paralelamente a los programas y soluciones informáticas propietarias existentes para el
análisis y procesamientos de imágenes, y el desarrollo de aplicaciones basadas en
sistemas de visión artificial, existen opciones abiertas como Open CV y entornos como
Scilab y los sistemas operativos que pueden ejecutarse en minicomputadoras como la
Raspberry Pi dando opciones adicionales de portabilidad y desarrollos a menor costo.
Si bien existen métodos de codificación tradicionales como los códigos de barra, y en
expansión como la codificación por etiquetas de radiofrecuencia, no está por demás seguir
experimentando y profundizando por opciones como las de los códigos QR que pueden
64
tener un potencial interesante y, en algunos casos, con mayores opciones de flexibilidad y
de implementación con costos menores.
De acuerdo con las consultas realizadas acerca del procesamiento de imágenes en
Raspberry Pi, se puede concluir que este desarrollo se puede migrar a la placa Raspberry,
teniendo en cuenta que este cumple con los requerimientos para realizar la migración,
solo faltaría diseñar la interfaz de usuario para la Raspberry Pi y conectarle los
dispositivos periféricos necesarios.
65
9. Trabajos a futuro
De acuerdo con los resultados que se derivan de las pruebas realizadas y analizando algunos de
los inconvenientes encontrados en la realización de este proyecto consideramos lo siguiente, en
primer lugar, el sistema de control del mecanismo cartesiano se puede automatizar más con ayuda
de Matlab, en este momento las secuencias están ya establecidas para que la cámara se desplace
por los 4 espacios que tiene la estantería, pero esto se puede mejorar utilizando la herramienta de
segmentación por colores y posicionamiento y sistema de coordenadas automático, para un uso
de estanterías mucho más grandes. En segundo lugar, se puede implementar una base de datos
que muestre los artículos existentes en la estantería en línea para que los usuarios puedan
consultar existencia sin estar presente en el sitio donde está la estantería.
Adicionalmente, se debe considerar la integralidad a este prototipo y al sistema propuesto de
desarrollos paralelos de aplicaciones que se ejecuten sobre dispositivos móviles y similares para
darle mayor interacción con tecnologías y dispositivos de uso amplio en la actualidad.
66
10. Referencias
[1] “Direct Industry.” [Online]. Available: http://www.directindustry.es/prod/vanderlande-
industries/product-5796-1073865.html.
[2] “Laboratorios de sistemas Discretos Automatización e Integración LasDAI.” [Online].
Available: http://www.ing.ula.ve/lasdai/?page_id=66.
[3] G. Meneses and B. Gómez, “Diseño de un Vehículo Guiado Autónomo a partir de un
trabajo interdisciplinario,” in 10th Latin American and Caribbean Conference for
Engineering and Technology, 2012.
[4] G. M. Benavides, “sistema de almacenamiento y recuperación automático de libros.”
[5] Universidad de Alicante, “Vehículos autónomos para transporte de materiales en
almacenes,” 2012.
[6] L. M. B. del Toro, “Sistemas De Identificacion Por Radio Frecuencia,” p. 4.
[7] Telectronica Codificación S.A, Introduccion a la identificacion por radio frecuencia.
Argentina, 2006.
[8] “Grupo ITR.” [Online]. Available: http://www.grupoitr.com/lc.html.
[9] Diputación de Cádiz, “Codigos qr.” Madrid, pp. 1–3, 2010.
[10] Capitulo 3, “Procesamiento de imágenes capitulo iii 33,” pp. 33–48.
[11] “elinux,” RPi Hardware. [Online]. Available:
http://elinux.org/RPi_Hardware#Specifications.
[12] D. S. Montemayor, “Estudio de viabilidad de un sistema basado en Raspberry Pi para
aplicaciones de inspección industrial por vision artificial.” 2015.
[13] “Raspberry Pi.” [Online]. Available: https://www.raspberrypi.org/blog/raspberry-pi-2-on-
67
sale/.
[14] R. C. Vlaeminch, “‘Deep Learning’ para reconocimiento de imágenes en Raspberry Pi 2,”
Univ. la laguna, 2016.
[15] C. Camilo and V. Castañeda, “CONTROL DE UN ALMACÉN DE ASRS
DESARROLLADO EN UNA HERRAMIENTA GRÁFICA PARA PRUEBAS Y
CONTROL,” 2010.
[16] G. Eddie and C. Carlos, “Diseño y construcción de un prototipo de Sistema Automatizado
de Almacenamiento/ Recuperación (AS/RS), para Sistemas Flexibles de Manufactura en el
Laboratorio CNC de la ESPE extensión Latacunga, utilizando procesamiento digital de
imágenes.”
[17] L. Tarjan, I. Šenk, R. Kovač, S. Horvat, G. Ostojić, and S. Stankovski, “Automatic
identification based on 2D barcodes,” Int. J. Ind. Eng. Manag., vol. 2, no. 4, pp. 151–157,
2011.
[18] N. La Serna Palomino and U. Román Concha, “Técnicas de Segmentación en
Procesamiento Digital de Imágenes,” Rev. Ing. Sist. e Informática, vol. 6, no. 2, pp. 9–16,
2009.
[19] D. T. Rubio, “Sistema de visión de bajo coste basado en Raspberry Pi.” Barcelona, 2015.
[20] G. M. Benavides, “Based on Image Processing Techniques,” no. 3, 2014.