ANDRÉS FELIPE RUIZ MONTOYA - USB

67
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

Transcript of ANDRÉS FELIPE RUIZ MONTOYA - USB

Page 1: 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

Page 2: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 3: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 4: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 5: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 6: ANDRÉS FELIPE RUIZ MONTOYA - USB

6

8. Conclusiones .................................................................................................................... 63

9. Trabajos a futuro .............................................................................................................. 65

10. Referencias ...................................................................................................................... 66

Page 7: ANDRÉS FELIPE RUIZ MONTOYA - USB

7

Lista de tablas

Tabla I Comparación códigos QR y RFID………………………………..……………….…30

Tabla II Características técnicas Raspberry Pi..….………………………………………..…31

Page 8: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 9: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 10: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 11: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 12: ANDRÉS FELIPE RUIZ MONTOYA - USB

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:

Page 13: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 14: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 15: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 16: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 17: ANDRÉS FELIPE RUIZ MONTOYA - USB

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)

Page 18: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 19: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 20: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 21: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 22: ANDRÉS FELIPE RUIZ MONTOYA - USB

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”

Page 23: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 24: ANDRÉS FELIPE RUIZ MONTOYA - USB

24

Fig. 6. Código de barras. Cada carácter o digito está formado por un conjunto de módulos [11]

Page 25: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 26: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 27: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 28: ANDRÉS FELIPE RUIZ MONTOYA - USB

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]

Page 29: ANDRÉS FELIPE RUIZ MONTOYA - USB

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]

Page 30: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 31: ANDRÉS FELIPE RUIZ MONTOYA - USB

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)

Page 32: ANDRÉS FELIPE RUIZ MONTOYA - USB

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]

Page 33: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 34: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 35: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 36: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 37: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 38: ANDRÉS FELIPE RUIZ MONTOYA - USB

38

Fig. 15. Dispositivo Piface [19]

Concluyendo que si se pueden utilizar sistemas como estos para realizar tareas sencillas.

Page 39: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 40: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 41: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 42: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 43: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 44: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 45: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 46: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 47: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 48: ANDRÉS FELIPE RUIZ MONTOYA - USB

48

Fig. 25. Fuente y módulo Bluetooth

Page 49: ANDRÉS FELIPE RUIZ MONTOYA - USB

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,

Page 50: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 51: ANDRÉS FELIPE RUIZ MONTOYA - USB

51

Fig 28. Capturadora de video

Fig. 29. Cámara inalámbrica y receptor de 2.4 GHz

Page 52: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 53: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 54: ANDRÉS FELIPE RUIZ MONTOYA - USB

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”

Page 55: ANDRÉS FELIPE RUIZ MONTOYA - USB

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?”.

Page 56: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 57: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 58: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 59: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 60: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 61: ANDRÉS FELIPE RUIZ MONTOYA - USB

61

Fig. 39. Información recolectada después de realizar en escaneo

Page 62: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 63: ANDRÉS FELIPE RUIZ MONTOYA - USB

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

Page 64: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 65: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.

Page 66: ANDRÉS FELIPE RUIZ MONTOYA - USB

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-

Page 67: ANDRÉS FELIPE RUIZ MONTOYA - USB

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.