Vous êtes sur la page 1sur 28

UNIVERSIDAD NACIONAL

DE LOJA

AREA DE LA ENERGIA, LAS INDUSTRIAS Y LOS


RECURSOS NATURALES NO RENOVABLES

ELECTRONICA Y TELECOMUNICACIONES

CARLOS FLORES
XAVIER GLVEZ(xaviergal994@hotmail.com)
DAMIAN PINEDA
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

Tabla de Contenido
1. Propsito
2. Alcance
3. Documentos de referencia
4. Definiciones importantes
4.1. Conceptos generales
4.2. Procesos de entrada y salida
5. Diccionario de datos
5.1. Restricciones especiales
5.2. Funciones de usuario, Stored Procedures y paquetes
5.3. Tareas programadas
6. Instalacin y configuracin
6.1. Requisitos generales pre-instalacin
6.2. Detalles del proceso de instalacin
6.3. Detalles de configuracin de la aplicacin
a. Parmetros de aplicaciones
7. Desarrollo del Programa
8. Diseo de la arquitectura fsica
8.1 Diseo de la placa
8.2 Equipos y Componentes
8.3 Construccin Fsica del Proyecto
9. Resultados
10. Limitaciones y Problemas del Programa
11. Posibles Soluciones
12. Trabajo a Futuro
13. Recomendaciones
14. Conclusiones.
Referencias Bibliogrficas
Anexos

3
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

1. Propsito
El propsito del presente proyecto es la aplicacin de los conceptos de DSP
para el control de un brazo robtico, por medio del seguimiento de color. En
identificacin de colores, como en la mayora de los problemas de
procesamiento de imgenes, son extradas ciertas caractersticas de cada
imagen antes de ser clasificadas. Se busca seleccionar aquellas
caractersticas relevantes para poder discriminar o distinguir el espacio sobre
el cul se est evaluando las condiciones de procesamiento. El estudio del
procesamiento de imgenes nos deriva a la eleccin de cul de los mtodos
conocidos es el mejor. Para seleccionarlo se tom en cuenta las facilidades
que presentan los distintos softwares que estn presentes en el medio, as
como la accesibilidad a los mismos y los resultados que se obtenan al
aplicarlos. El software seleccionado es Python que tiene licencia de cdigo
abierto y para la comunicacin serial entre la PC y el brazo robtico se utiliz,
siguiendo la misma toma de decisiones, el software Arduino.
El proyecto realizado se basa principalmente en el procesamiento de imagen
a travs de Python, por medio de descomposicin de colores en HSV, que
incluye el uso de la librera Open.CV y el algoritmo declarado para que tome
valores en rangos mnimos y mximos que se explicaran ms adelante. Como
segunda parte se toma la comunicacin serial para el Control de Brazo robtico
a travs de arduino, siendo este ltimo simplemente un puente entre el
procesamiento y el medio fsico a controlar.
Esta investigacin nos abre un campo de aplicaciones muy amplio ya que
tambin se lo puede aplicar en el control y acceso de personas a un espacio
restringido, bsqueda de objetos, aplicaciones en juguetes como carros
robticos implementando comunicacin bluetooth, entre las ms conocidas.

2. Alcance
El alcance del Proyecto en los sistemas de seguimiento usando imgenes
tienen una amplia aplicacin en el mundo moderno, se usan en sistemas de
seguridad, validacin de acciones en deportes, televisin, etc. En la mayora
de los casos estos sistemas son operados directamente por seres humanos,
lo cual implica que los resultados estn sujetos a la subjetividad de la
percepcin humana, lo cual puede llegar a convertirse en un inconveniente
en temas relacionados con la toma de decisiones (como ocurre en el caso de
decisiones arbitrales), de all que implementar dispositivos de decisin ms
objetivos traen grandes beneficios. El planteamiento del trabajo se basa en
el desarrollo de un sistema de seguimiento de patrones por medio del
procesamiento de imgenes que pueda aplicarse en cualquier mbito,
nicamente variando las caractersticas del objeto que se desea seguir, lo
cual permitira la aplicacin de diversos campos donde se usen cmaras y sea
necesario el seguimiento de alguna caracterstica de un sujeto u objeto. La
aplicacin ms inmediata que planteamos es el control de un brazo robtico
seleccionando un color, lo procesamos y con las variables encontradas
establecimos la comunicacin serial y a la vez el control de los motores DC.
Para seleccionar el motor DC el usuario debe realizarlo a travs de la PC no

4
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

siendo autnomo el movimiento del brazo, pero una vez seleccionado el motor
se logra el control del brazo en todas las caractersticas tcnicas del motor
seleccionado, es decir, giros a la izquierda, derecha, arriba, abajo, abrir y
cerrar pinzas, que ser explicado con detalle en el desarrollo del proyecto,
logrando as el cumplimiento del objetivo planteado para la presente
investigacin.

3. Documentos de referencia
Para el armado del prototipo de brazo robtico es necesario guiarse en el
siguiente documento:

ROBOT-ARM Manual de Ensamblaje y Uso.

Para la programacin del procesamiento de imgenes se puede referir a:


Gua de Aprendizaje Python Relase 2.7
Aprender a programar Python desde cero. Disponible en lnea en:
https://www.youtube.com/watch?v=8yF8fo7rNvQ

4. Definiciones importantes
4.1 Conceptos generales
Software Python:
Python es un lenguaje de programacin interpretado cuya filosofa hace
hincapi en una sintaxis que favorezca un cdigo legible. Se trata de un
lenguaje de programacin multiparadigma, ya que soporta orientacin a
objetos, programacin imperativa y, en menor medida, programacin
funcional. Es un software de licencia libre y de cdigo abierto lo que
facilita la adquisicin de libreras gratis as mismo un enorme beneficio
en el procesamiento digital de seales y facilita la comunicacin serial
entre dispositivos y la PC.
Puerto serial:
Un puerto serie o puerto serial es una interfaz de comunicaciones de datos
digitales, frecuentemente utilizado por computadoras y perifricos, en
donde la informacin es transmitida bit a bit enviando un solo bit a la vez,
en contraste con el puerto paralelo que enva varios bits simultneamente.
Software Arduino:
Arduino es una plataforma de hardware de cdigo abierto, basada en una
sencilla placa con entradas y salidas, analgicas y digitales, en un entorno
de desarrollo que est basado en el lenguaje de programacin Pressing.
Arduino 1:
Arduino UNO es la versin mejorada de su predecesor Duemilanove.
Incluye funcin de autoreset, proteccin de sobrecargas, conector USB

5
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

para programarlo, totalmente montado con componentes miniatura SMD


(salvo el microcontrolador, para poder cambiarlo facilmente) y nuevo
bootloader OptiBoot a 155kbps.

4.2 Procesos de entrada y salida


En los datos de entrada para iniciar el procesamiento se encuentran la
adquisicin de imgenes por medio de la webcam de la PC seleccionada
a travs del entorno de Python, preestablecido el color a seguir en la
programacin del software, as como tambin la seleccin del motor a
controlar.
Los procesos de salida son las variables establecidas del procesamiento
de color, la comunicacin serial por medio de la tarjeta Arduino Uno y por
ltimo el control de motores de Brazo Robtico que derivar en el
movimiento del mismo en direcciones establecidas por las caractersticas
fsicas del motor.

5. Diccionario de datos
a. Restricciones especiales
Cdigo del programa.
El programa desarrollo est basado en ejecutar instruccin por instruccin
y no dos o ms instrucciones a la vez, es decir solo podemos controlar el
giro de un motor a la vez.
Se debe tomar en cuenta que al momento de detectar el color los valores
varan debido a la resolucin de la cmara, para este proyecto se utiliz
una camera con resolucin de 600x400 pixeles, con una relacin de
aspecto de 4:3 a 30 fotogramas por segundo (fps).
Tambin influye en el ambiente en el cual se realiza el procesamiento
debido a la luminosidad del ambiente como otros factores pueden incidir
en el color a detectar variando los valores para su descomposicin en HSV
por lo que no podr ser detectado por el programa, para este caso se
realiz el procesamiento en un ambiente con una iluminacin natural y no
muy intensa.

TRAJETA ARDUINO UNO


Se debe tener en cuenta que la tarjeta Arduino es una circuito que
funciona a baja potencia por lo cual para el control de motores de debe
utilizar un circuito externo de potencia para evitar quemar la placa e
incluso la placa madre del ordenador.

6
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

b.Funciones de usuario, Stored Procedures y paquetes


El usuario podr realizar las siguientes funciones:
Detectar y seguir un objeto por su color.
Controlar de cada uno de los motores del brazo robtico.

c.Tareas programadas
El prototipo de brazo robtico est diseado para realizar una sola tarea
la que se basa en trasladar de un lugar a otro, distintos objetos livianos
con una precisin aceptable.

6. Instalacin y configuracin

a. Requisitos generales pre-instalacin


Para el correcto funcionamiento y diseo de la placa o circuito de control
es necesario tener instalado el software de Python 2.7, las libreras
NUMPY 1.8.0, OPEN CV 2.4.11, PISERIAL y el software de Arduino. El
proyecto se realiz en el sistema operativo Windows 10 PRO x64bits en
un ordenador con procesador de Core I7 (8 ncleos), 8 GB de RAM y
una tarjeta grfica AMD Radeon (TM) HD 8500M/8700M de 2GB.

Python 2
La ms compatible, ya que como ha estado ms tiempo en el mercado
existen una gran de cantidad de libreras que pueden ser usadas con
esta versin y as facilitar el desarrollo de nuestras aplicaciones.

Descargar desde python.org/releases la versin Windows X86-64 MSI


Installer (versin estable de Python 2.7 para Windows x64bits con la que
se realiz el proyecto). Una vez descargado, hacemos doble-click en el
instalador y aceptamos todas las condiciones del instalador, no hay que
preocuparnos por configuraciones avanzadas, el instalador es sencillo
de usar. Una vez finalizada la instalacin, ya deberamos tener Python
corriendo en nuestro sistema.
Una vez instalado, nos vamos a encontrar con tres maneras de usar
Python:

Python Shell - la consola de Python, la cual nos permite ejecutar


comandos lnea por lnea.

7
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

IDLE GUI - una aplicacin que nos permite escribir scripts ms complejos
para luego ejecutarlos de manera sencilla.

Editor de texto - cualquier editor de texto que corra en tu sistema


operativo te permitir escribir un script. Luego lo guardars con la
extensin .py y lo ejecutars desde el Shell.

b. Detalles del proceso de instalacin

Instalacin de Python en Windows (x64 bits):


El paquete para Windows es un instalador ejecutable. Abrir y seguir las
instrucciones que se indican en la ventana de instalacin.
Python es de software libre no se necesitan licencias y se puede instalar
fcilmente como se lo indico anteriormente sin problemas.
Debemos navegar hasta el directorio de instalacin de Python. Por
defecto, debera ser C:\Python27 Una vez ah, ejecutamos python.exe

Si nos aparece lo siguiente, accedimos satisfactoriamente al Shell de


Python:

IDLE
Para abrir el IDLE de Python navegamos hasta la carpeta de instalacin
de Python y ejecutamos el archivo denominado IDLE (Para
Mac/Linux/Windows). Una vez abierto, vemos que la aplicacin nos
proporciona el Shell. La funcionalidad ms importante que ofrece es la
capacidad de crear y modificar archivos.

Para instalar Numpy en Python 2.7.4

Lo siguiente que necesitamos es la librera Numpy la cual es necesaria


para poder trabajar con OpenCV. La versin utilizada para este proyecto
es NumPy 1.8.0. La instalamos como cualquier otro programa, nos
preguntara la ruta donde instalamos Python27 le damos en siguiente
hasta finalizar la instalacin.

8
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

Para instalar OpenCV 2.4.11 en Python 2.7.4

Se tiene que descargar OpenCV la versin para Windows. Este es un


archivo comprimido los ejecutamos y comenzara la extraccin en la
carpeta indicada, por ejemplo C:\ es la ruta de instalacin recomendada.
Una vez terminado este proceso vamos a la carpeta
C:\opencv\build\python\2.7 aqu encontraremos el archivo cv2.pyd, lo
copiamos y lo pegamos en C:\Python27\Lib\site-packages.

Si todo est correcto podremos ejecutar el siguiente cdigo Python:

import numpy
import cv2

print("Version NumPy: " + numpy.__version__)


print("Version OpenCV: " + cv2.__version__)

y nos deber aparecer las versiones antes menciones para cada una de
las libreras. Lo mismo sucede con la librera Piserial.f. Requisitos del
sistema para la instalacin de Python 2.7.4

c. Hardware mnimos recomendado:


Esta seccin indica las recomendaciones hardware y software que
ayudarn a obtener a que el script creado en el intrprete IDLE SHELL
PYTHON 2.7.4 se ejecute. La siguiente lista muestra los requerimientos
hardware y software mnimos necesarios para ejecutar la versin de 64
bits del programa realizado en el intrprete SHELL PYTHON 2.7.4:

1. Microsoft Windows 95/98 o Windows NT, Xp, Vista , Seven.


2. El sitio de internet donde puede descargar el ambiente de aprendizaje
del lenguaje Python es: http://sourceforge.net/projects/
3. Procesador Intel 486 o superior
4. 16MB de RAM o superior.
5. Pantalla con resolucin 800 x 600 o superior
6. 20 MB de espacio de disco fijo libre.
7. Sin embargo Microsoft cuenta con un ejecutable InstallWizard que
est diseado para computadoras tpicas de desarrollo, lo que significa
un procesador Pentium y una resolucin de 800 x 600 o superior. Se
puede ejecutar lnstallWizard en una pantalla de 640 x 480, pero es

9
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

posible que se necesite disponer de ventanas diferentes para ver toda la


informacin.

d. Hardware y Software recomendados

Los requerimientos software y hardware mnimos no siempre son la


opcin ptima para la facilidad de uso, rendimiento y disfrute del producto
completo. Recomendamos el siguiente perfil de sistema para optimizar
la ejecucin y/o corrida del programa de nuestro proyecto realizado en el
programa-intrprete: IDLE SHELL PYTHON 2.7 por parte de Copyright
2010GRUPO T2 Company:

1. PC con procesador Pentium, a velocidad de 200MHz (o superior).


2. 32 MB de RAM.
3. 1GB de espacio de disco fijo.
4. Monitor Sper VGA. Ser conveniente un microprocesador rpido
que pueda manejar el tamao y complejidad de las aplicaciones
Windows avanzadas. La cantidad de memoria maximiza el
rendimiento completo del programa como del entorno Windows
(tambin se puede obtener un aumento de este rendimiento teniendo
gran cantidad de espacio de disco libre).Aparecen dos sistemas
operativos como nuevos estndares para los PC de 32 bits;
Windows95/98, o su primo ms robusto, Windows NT. Si no se tiene
actualizado Windows 95/98 o Windows NT, se debera hacer antes
de instalar C++ de Microsoft. Las mejoras realizadas a Windows
95/98 y a Windows NT, proporcionan las prestaciones y el
rendimiento necesario para crear aplicaciones de gran actualidad en
Windows. Conforme se desarrollen estas aplicaciones en un entorno
grfico, se apreciar la resolucin de los monitores Sper VGA.

7. DESARROLLO DEL PROGRAMA

a. Desarrollo de la programacin.

Para que nuestro proyecto lleve a cabo el procesamiento digital de


imgenes, reconociendo el color especificado en sus valores de
descomposicin HSV y el seguimiento del color en tiempo real se
utiliz el software de programacin Python 2.7 y para controlar el
brazo segn el movimiento del color se utiliz el software Arduino.

10
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

b. Programacin en el software Python

Para la realizar el seguimiento de un objeto por su color y en tiempo


real vamos a utilizar las libreras de Numpy, OpenCV y Serial.

Fig.7. Logo del software Python y la librera de OpenCV

El procedimiento a seguir es el siguiente:

1. Obtenemos la imagen de nuestra webcam.


2. Convertimos esa imagen al formato de color HSV (Matiz,
Saturacin, Brillo).
3. Especificamos un rango de color para crear una plantilla,
de blanco o negro, 0 y 1, verdadero falso... etc. Para ello
se utiliza barras de configuracin.
4. Localizamos en la ventana el lugar que ocupa ese color en
ese frame.
5. Dibujamos una cruz en esa posicin.
6. Iniciamos la comunicacin serial preguntndole al usuario
que numero de motor desea controlar (del 1 al 5)
7. Finalmente se enva a la tarjeta Arduino las letras
U,D,R,L segn hacia donde se mueve el objeto
(arriba, abajo, derecha, izquierda) respectivamente.

De la librera OpenCV usaremos estas nuevas funciones:

cv2.createTrackbar ('Titulo', 'ventana', rango inferior,


rango superior, variable temporal). Crea una barra
deslizante.
cv2.cvtColor (imagen, Tipo de conversin). Convierte la
imagen de una paleta de colores a otra.
cv2.inRange(imagen, Rango min, Rango max)
cv2.moments.
Datos sobre la posicin de un objeto donde:

11
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

m00 rea de blanco


m01 Posicin en x
m10 Posicin en y

- cv2.erode -> erosiona la imagen para eliminar puntos


errneos
- cv2.dilate -> dilata los pixeles detectados

A continuacin se explicara cada parte del cdigo desarrollado en


Python.

.
Fig.8. CODIGO PYTHON.

En la figura 8 se indica la parte inicial del programa donde importamos


las libreras antes mencionadas que vamos a utilizar, luego de esto
mediante el comando serial.Serial indicamos el puerto COM a utilizar

12
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

para establecer la comunicacin serial con Arduino y la velocidad de bits


por segundo a la cual se van a transmitir los datos (9600 baudios). Se
crea una variable de cmara (cap) y asignamos la primera cmara
disponible con "0" con el comando cv2.VideoCapture (0). Con los
comandos cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT) y
cap.get( cv2.cv.CV_CAP_PROP_FRAME_WIDTH de la librera open
CV obtenemos la altura y la achura de la imagen obtenida por la cmara
(frame). Se indica en pantalla al usuario en que COM se ha establecido
la comunicacin serial. Finalmente se crea un TrackBar como se muestra
en la figura 9, el cual no es ms que control de tipo barra deslizante que
se muestra en una nueva ventana en el cual ingresamos datos de tipo
entero, este control se crea con el fin de asignar los rangos mximos y
mnimos de valores de HSV del control con el cual se desea controlar el
brazo, as como tambin se asigna la sensibilidad al seguimiento del
objeto.

Fig 9. TrackBar

A continuacin se indica la parte central del programa donde se inicia el


procesamiento digital de cada frame capturada por la cmara integrada de
la computadora.

Para ello creamos variables de tipo entero y tipo string, las cuales se utilizan
para el control del motor que se requiera y mover el brazo en cierta
direccin, tambin se utilizan para controlar los bucles while los cuales son
bsicamente esenciales para el procesamiento de las imgenes en tiempo

13
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

real, as como las de tipo string se utiliza para indicar al usuario en pantalla
las LETRAS que se estn enviando en la comunicacin serial a la tarjeta
de control Arduino,

Fig 10. Cdigo Python

En la figura 10 se observa que se ha creado un while dentro del cual se


ejecuta toda la parte central del programa, como primer paso se le pregunta
al usuario en pantalla que motor desea controlar del brazo asignndole a
cada uno un nmero del 1 al 5, si el usuario ingresa un numero fuera de
este rango arrojara un error en pantalla indicndole al usuario que ingrese
un nmero dentro del rango ya especificado. Luego de esto se compara la
variable ingresa y se le enva a la tarjeta Arduino la Letra correspondiente
al nmero de motor elegido.

14
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

Fig. 11: Cdigo Python

Como se indica en la Figura 11 se toma un frame de lo que est grabando


la cmara y se la convierte a imagen HSV luego se compara pixel por pixel
de la imagen comparando las tres capas de la imagen con los valores
mnimos de la descomposicin en HSV del color que tenga el objeto
logrando as binarizar la imagen y mostrando solo el objeto del color
especifico. Luego de esto se pasa la imagen por un filtro para corregir
imperfecciones en la misma, una vez hecho esto se calcula el centroide de
la imagen, la primera sentencia if nos pregunta si el rea del objeto es
mayor a 50000 pixeles cuadrados, si es as significa que tenemos un objeto
de color especificado anteriormente en la imagen y podemos proceder a
realizar el seguimiento en tiempo real.
Para el seguimiento del objeto comparamos la posicin del centroide del
objeto en las coordenadas tanto en x como en y con las coordenadas del
frame inicial de donde se inici el reconocimiento del objeto y se restan, si
la diferencia excede el nivel de sensibilidad establecido se enviara a la
tarjeta Arduino la letra correspondiente, si el movimiento lo realiza hacia la
izquierda se enva la letra L, si es hacia la derecha enva la letra R, si es
hacia arriba la letra U y si es hacia abajo la letra D, esto depende del

15
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

motor seleccionado debido a que cada uno corresponde o tiene cierto


movimiento con respecto al eje x o al eje y (uno a la vez) .

Fig. 12: Cdigo Python

La parte de final del programa en Python se muestra en la figura 12, en la cual


se imprime en pantalla las letras que estn siendo enviadas a la tarjeta
Arduino luego de haber hecho la deteccin y seguimiento del objeto en tiempo
real, en la ejecucin del programa se abren tres ventanas sin incluir el Shell
de Python en donde se ejecuta nuestro programa. En una de ellas es la
configuracin de los valores mximos de HSV del color a procesar as como
definimos la variable de sensibilidad al movimiento, la siguiente ventana nos
muestra la imagen de video original que est captando nuestra cmara
seleccionada con una cruz verde en donde su interseccin indica el centro del
objeto detectado, y en la ltima ventana se muestra el video binarizado,
visualizndose el objeto en color blando (1 lgico) y lo dems en negro (0
lgico). Por ltimo se indica al usuario que si quiere controlar otro motor o
cerrar el programa se debe presionar la letra q estando en una de las dos
ventanas en que se muestra el video original o el binarizado, al presionar la
letra q estando dentro de una de las dos ventanas se pregunta en pantalla
(Shell de Python) al usuario si desea controlar otro motor (presione la letra y)
o cerrar el programa (presione la letra n).

8. Diseo de la Arquitectura Fsica

8.1 Diseo de la placa

16
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

Figura 13

8.2 Equipos y Componentes


Para la programacin:
Software Python
Software Arduino
Tarjeta Arduino Uno
Brazo Robtico de 5 motores DC
Software Proteus.
Para armado de circuito impreso:
CANTIDAD DISPOSITIVO DESCRIPCIN
4 Ldb 293 Drivers para
control de
motores
2 Borneras para placa 2 Entradas
1 Regleta hembra para 60 posiciones
baquelita
1 Regleta macho para 60 posiciones
baquelita
1 Baquelita 5cmx10cm
1 cido Sulfuro Frrico
1 Hoja de Papel Transferencia
Varios Alambres y Tornillos
1 Regleta macho para 60 posiciones
baquelita
1 Baquelita 5cmx10cm
1 cido Sulfuro Frrico

17
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

1 Hoja de Papel Transferencia


1 Caja prototipo 10x15
1 Bornera de salida 2 Posiciones
para caja
1 Bornera para toma
Varios Alambres y Tornillos

8.3 Construccin fsica del proyecto

9 RESULTADOS

Los objetivos del presente Proyecto de investigacin se han cumplido a


cabalidad. Todas las pruebas realizadas nos han permitido establecer las
bondades del procesamiento de seales y su aplicacin al control de un
brazo robtico. Sin embargo al no existir un ambiente controlado los
factores que interfieren en el procesamiento resultaron ser un ligero
problema en la deteccin del color lo que implica que la aplicacin
funcionar en un porcentaje mayor cuando el Ambiente sea controlado, es
decir, luz, calidad de cmara, nitidez del color, entre otros factores.

10. LIMITACIONES Y PROBLEMAS DEL PROGRAMA

1. La primera limitacin se presenta en el entorno de programacin Python la


programacin se la realiz en el Sistema operativo version 2.7 porque
presentaba facilidades para la comunicacin serial as como la
compatibilidad con las diferentes librerias que se utilizo como Open CV. Las
versiones ms recientes presentaban dificultades al momento de ejecutar
el programa y realizar la comunicacin serial con el entorno arduino.
Adems debe escribirse el programa en forma ordenada y sistemtica
porque al momento de ejecutarlo una columna desalineada lo presentar

18
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

como parte de otro bloque asumiendo otro tipo de estructura de ejecucin


o error.

2. Cuando se ejecuta en cualquier ambiente ya sea cerrado o abierto se


presentan inconvenientes en el seguimiento de color debido a que la
cmara capta muchas seales dispersas, aunque genera un buen
procesamiento, sin embargo al momento de controlar el brazo no se lo
realiza de una manera idnea o esperada, esto se debe a que el
procesamiento compara seales frame a frame y enva caractersticas
puntuales de ubicacin (centroides) para luego traducirlos en distancias y
movimiento de motores.

3. Debido a que el seguimiento de colores se lo realiza en HSV, la base de


datos de los colores es bastante amplia, esto es para cada color existe un
rango mximo y mnimo de matiz, de sensibilidad y de luminosidad. Por ello
el presente Proyecto se centra en el seguimiento del color verde (green) y
de requerir el proceso de cualquier otro color se deber necesariamente
investigar los valores para la aplicacin de HSV en el procesamiento de
seales y entender la lgica de programacin en Python para el ingreso de
estos nuevos datos.

11. POSIBLES SOLUCIONES

1. En cunto al software de programacin se debe tener un amplio


conocimiento del funcionamiento de Python, la lgica de programacin, la
sintxis y todo lo concerniente al entorno de programacin que se est
ejecutando.
2. El ambiente en el que se ejecuta debe ser controlado esto se refiere a la
luminosidad, espacio, fondo donde se presenta la imagen, as como la
calidad de la webcam con la que se est trabajando, para poder tener una
correcta relacin entre el procesado de seales y el medio fsico sobre el
que se ejerce el control.

3. Ampliar la base de datos para seleccionar el seguimiento de colores a


cualquiera designado por el ejecutor. La amplia gama de colores debera
normalizarle o configurarse en una base comn, es decir en la
programacin el verde, el rojo o el zaul, debera procesarse con rangos
ya existentes en nuestra base de datos (para HSV) sin perder la sencillez
de ejecucin o utilizacin para el usuario.

19
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

12 TRABAJO A FUTURO

1. Automatizacin del seguimiento de colores, para lograr su implementacin


sobre la amplia gama de colores que existen en el ambiente y de esa
manera el control automtico de cualquier medio fsico que se requiera
controlar.

2. Lograr la deteccin de las diferentes formas de objetos por medio del color
y un posible traslado de un lugar a otro en un ambiente controlado
utilizando el brazo robtico.

13. CONCLUSIONES

Se logr cumplir a cabalidad los objetivos planteados para el presente


Proyecto. De todas las posibles tcnicas de DSP que existen se investig
y aplic sobre el seguimiento de colores en tiempo real llevandolo a cabo
a travs del software Python.
El ambiente sobre el que se lleva acabo la ejecucin del Proyecto es
restringido a espacio controlados esto se refiere a luz, sombra, fondo de
contencin del objeto, para obtener resultados positivos en la aplicacin de
la investigacin realizada.
Se pudo tener una ida mucho ms clara del funcionamiento de la vision
artificial y aplicacin al control de objetos que hoy en da estn presentes
en robots en cualquier fbrica para un proceso industrial, un juguete o un
control de seguridad en una ciudad, aeropuerto o espacio restringido, la
importancia y el avance que la DSP ha tenido en los ltimos tiempos.

14. RECOMENDACIONES

La lgica de programacin, como la metodologa, la sintxis y la correcta


utilizacin del software Python nos proporcionar resultados muy precisos

20
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

y claros en cuanto a la temtica planteada y por ende a la consecucin de


los objetivos propuestos.

Determinar el correcto mtodo de procesamiento de seales, en este caso


HSV, para poder aplicar los conceptos en la programacin del
procesamiento y posteriormente sobre el objeto fsico a controlar.

La comunicacin entre la PC y el Brazo Robtico se lo puede realizar a


travs de bluetooth, dejando de lado la necesidad de cables entre
perifricos.

21
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

REFERENCIAS BLIBLIOGRFICAS

[1] SALOMON, David (2014) Compresin de datos: La Referencia Completa.


Salamanca.
[2] D. Herrero- Prez, P. Pierro, C. Balaguer. Reconocimiento de Objetos y
Procesamiento de Imgenes. Mxico. Disponible en :
http://robots.uc3m.es/images/c/c4/Modulo_de_vision_artificial_del_robot_
humanoide_HOAP3_Aplicacion_al_seguimiento_de_objetivos_moviles.pd
[3] Reconocimiento De Imgenes, en lnea, Disponible en:
http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/ramirez_r_ja/capitul

[4] Reconocimiento Facial con Open CV. En lnea. Disponible en:


http://robologs.net/2014/05/26/reconocimiento-facial-con-opencv-
webcam/
[5] DIALTEC. Deteccin y Seguimiento de Objetos. Disponible en:
http://repositorio.utp.edu.co/dspace/bitstream/11059/2110/1/621367N238.
pdf

22
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

ANEXOS

Programacin en Python

23
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

24
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

Programacin en Arduino para el control de Motores y comunicacin Serial

#define MOV_LEFT 'L'


#define MOV_RIGHT 'R'
#define MOV_DOWN 'D'
#define MOV_UP 'U'
#define MOT_1 'A'
#define MOT_2 'B'
#define MOT_3 'C'
#define MOT_4 'D'
#define MOT_5 'E'

int motor=0;
int dy=50;

char var='N';

void setup()
{

Serial.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
}//end setup

void motorSel(int num,char gir)


{

25
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

switch (num )
{
case 1:

if(gir == MOV_LEFT){

digitalWrite( 2, HIGH);
digitalWrite( 3, LOW);
delay(dy);
digitalWrite( 2, LOW);
digitalWrite( 3, LOW);
delay(dy);
}
if(gir == MOV_RIGHT){

digitalWrite( 2, LOW);
digitalWrite( 3, HIGH);
delay(dy);
digitalWrite( 2, LOW);
digitalWrite( 3, LOW);
delay(dy);
}
break;
case 2:
if(gir == MOV_DOWN){

digitalWrite( 4, HIGH);
digitalWrite( 5, LOW);
delay(dy);
digitalWrite( 4, LOW);
digitalWrite( 5, LOW);
delay(dy);
}
if(gir == MOV_UP){

digitalWrite( 4, LOW);
digitalWrite( 5, HIGH);
delay(dy);
digitalWrite( 4, LOW);
digitalWrite( 5, LOW);
delay(dy);
}
break;
case 3:

26
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

if(gir == MOV_DOWN){

digitalWrite( 6, HIGH);
digitalWrite( 7, LOW);
delay(dy);
digitalWrite( 6, LOW);
digitalWrite( 7, LOW);
delay(dy);
}
if(gir == MOV_UP){

digitalWrite( 6, LOW);
digitalWrite( 7, HIGH);
delay(dy);
digitalWrite( 6, LOW);
digitalWrite( 7, LOW);
delay(dy);
}
break;
case 4:
if(gir == MOV_DOWN){

digitalWrite( 8, HIGH);
digitalWrite( 9, LOW);
delay(dy);
digitalWrite( 8, LOW);
digitalWrite( 9, LOW);
delay(dy);
}
if(gir == MOV_UP){

digitalWrite( 8, LOW);
digitalWrite( 9, HIGH);
delay(dy);
digitalWrite( 8, LOW);
digitalWrite( 9, LOW);
delay(dy);
}
break;
case 5:
if(gir == MOV_LEFT){

digitalWrite( 10, HIGH);


digitalWrite( 11, LOW);

27
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

delay(dy);
digitalWrite( 10, LOW);
digitalWrite( 11, LOW);
delay(dy);
}
if(gir == MOV_RIGHT){

digitalWrite( 10, LOW);


digitalWrite( 11, HIGH);
delay(dy);
digitalWrite( 10, LOW);
digitalWrite( 11, LOW);
delay(dy);
}

break;

}
}

void loop()
{

//unsigned char var = 0;

if(Serial.available())
{
var = Serial.read();
//Serial.print (comando);
if(var == MOT_1)
{
motor = 1;
}
if(var == MOT_2)
{
motor = 2;
}
if(var == MOT_3)
{
motor = 3;
}
if(var == MOT_4)
{
motor = 4;

28
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES

}
if(var == MOT_5)
{
motor = 5;
}
if(var == 'L')
{
var = 'L';
}
if(var == 'R')
{
var = 'R';
}
if(var == 'D')
{
var = 'D';
}
if(var == 'U')
{
var = 'U';
}
//if (motor==0 && var=='T')
//{
//}
//else {
//motor=motor;
//var=var;
motorSel(motor, var);
//delay(50);
//}
}

29

Vous aimerez peut-être aussi