Você está na página 1de 14

Santiago Sur

Ingeniera Electrnica Programacin de Microcontroladores II

Seguidor de Colores en Matlab

Nombre Alumno (s): Gonzalo Quiroga Q. Vernica Veneros C. Seccin: 171 Nombre Profesor: Patricio Galarce. Fecha: 14 de abril de 2014

ndice

Contenido
DESCRIPCIN DEL PROYECTO. OBJETIVO: FUNCIONAMIENTO. DIAGRAMA EN BLOQUE. DESCRIPCIN DE CADA BLOQUE. ADQUISICIN DE IMGENES EN VIDEO POR WEBCAM: ADQUISICIN DE DATOS: INICIO DE PROGRAMA: ANLISIS DE LA INFORMACIN ADQUIRIDA POR LA WEBCAM: PREPARACIN PARA ANLISIS: ANLISIS DE LAS IMGENES: GUARDAR INFORMACIN: COMUNICACIN ENTRE MATLAB Y EL MICROCONTROLADOR: BLOQUE MATLAB: BLOQUE MICROCONTROLADOR: CONTROL DE SEGUIDOR DE COLORES: Control: ALGORITMOS. ALGORITMO DISPOSITIVO MAESTRO (PROGRAMACIN EN MATLAB): ALGORITMO DISPOSITIVO ESCLAVO (PIC 16F877A) EXPLICACIN ALGORITMOS. ALGORITMO DISPOSITIVO MAESTRO: EXPLICACIN ALGORITMO DISPOSITIVO ESCLAVO (PIC 16F877A) 3 3 4 5 6 6 6 6 6 6 7 7 7 7 8 8 8 9 9 10 11 11 13

Descripcion del Proyecto.


En la industria se da que hay operaciones que son altamente peligrosas, que esta dems un operador o que requieren de mayor fuerza, rapidez, procesamiento rpido de informacin, resultados casi instantneos; labores por las cuales el hombre se ve sobrepasado o que realizara ms lento, disminuyendo o generando un mayor costo a la produccin. Es por eso que tomando aspectos como estos se pens en una aplicacin industrial que resuelva situaciones en las que un operario estara dems, como es el transporte de materiales a cortas distancias entre una lnea de produccin y otra, y claro tambin la factibilidad de realizar una maquina o carro que realizara esta actividad como proyecto. Se idealizo entonces algo que siguiera una seal o un estereotipo para ir donde se le solicitaba para entregar materiales considerando las ventajas y desventajas del medio en el que se encuentran insertas las lneas de produccin (la poca variedad de colores dentro de la fbrica y sacar esto como provecho), por que seguir una seal bsica como un color seria menos complicado que identificar cdigos de barra por ejemplo. As surgi la idea del seguidor de colores, pero lo que aplica este proyecto es solo un prototipo econmico de ste ltimo, debido a los limitantes de tiempo y dinero. Por ello tomando en cuenta que para distinguir los colores se debe hacer por procesamiento de imgenes en un computador en un software potente, buscando y estudiando alternativas, recursos por internet y libros de robtica se dio con un software conocido previamente al que se le puede sacar mucho ms partido si se le sabe utilizar como Matlab, el cual es una herramienta de software matemtico que ofrece un entorno de desarrollo integrado con un lenguaje de programacin propio. Con esta herramienta como recurso principal y una cmara webcam realizar un prototipo de Seguidor de Colores en Matlab es factible. El Seguidor de Colores con Matlab consiste en un vehculo que lleva una webcam encima, que avanza, retrocede y puede doblar para acercarse o alejarse de su objetivo (un objeto o forma del color elegido), con el fin de que si hipotticamente estuviera en la industria la ubicacin que tomara este vehculo fuera en la que se sustraen los materiales que ste transporta.

Objetivo:
Desarrollar el proyecto de Seguidor de Colores con Matlab, aprovechando esto como una oportunidad para aprender un manejo ms detallado de esta herramienta. Poder familiarizarse ms con otros recursos de programacin para llevar a cabo el proyecto como lenguaje de programacin C, entornos de desarrollo grficos de Labview, Visual Basic y de Matlab. Implementar mejoras al prototipo de Seguidor de Colores con Matlab a medida que se lleva a cabo su implementacin y programacin.

Funcionamiento.
El funcionamiento del seguidor inicia cuando se prende el ordenador y se habilita por medio de ste la cmara webcam para encenderla. Adems se debe abrir el archivo en matlab que contiene el programa de anlisis de colores y energizar adecuadamente el seguidor de colores (dgase microcontrolador y actuadores que este requiere como los motores para mover el seguidor). Una vez llevado a cabo estos pasos bsicos, se da comienzo realmente al funcionamiento del seguidor de colores.

Cuando se enciende la cmara webcam, esta enva las imgenes de video al computador, estas son abiertas en el programa de matlab con la funcin videoinput(), la transmisin de video es segmentada en frames (la cantidad de frames , y el tiempo que se mantenga la adquisicin de estos es configurado en el programa). Ya una vez que se tiene acceso a la informacin, esta es procesada en un bucle del programa donde se da inicio al anlisis con la funcin start(), posteriormente se pasa a escala de grises y filtrado entre parte de las operaciones para que finalmente el programa distinga el color rojo. En base a esta distincin, en el otro bucle del programa es el encargado de capturar en el centro de un rectngulo el objeto de color rojo, junto a este rectngulo aparecen los ejes de posicin (X, Y) del centro del rectngulo. Los valores que toman los ejes (X, Y) son almacenados en variables, los valores que toman estas variables son la esencia del programa. La informacin contenida en las variables de matlab son enviadas por el dispositivo bluetooth del computador hacia el modulo bluetooth H06, que se comunica directamente con el microcontrolador de forma serial. La informacin que ingresa de forma serial al microcontrolador es procesada por el programa contenido en ste, y todas las ordenes que ste d, dependen de los valores que tomen los valores de los ejes (X, Y). Si el programa en el micro obtiene un comparacin que indica que el objeto rojo est muy cerca, este activa la funcin de un puente H que controla un motor DC, para que retroceda el carro, si la comparacin de datos del programa indica que el objeto rojo est muy lejos, har el mismo procedimiento anterior pero esta vez para que se acerque, tambin si el objeto se va u aparece por el lado izquierdo o derecho, actua un servo motor que direcciona dos ruedas, para que avances y retrocesos del seguidor de colores sea diagonal. Este es el funcionamiento del seguidor de colores desde el ingreso de datos a la salida de ellos expresndose por medio del movimiento de un carro prototipo con webcam.

Diagrama en Bloque.
Indica actividad o proceso que se lleva a cabo en cada bloque. Indica el hardware y/o perifrico de entrada - salida de datos, actuadores.

Webcam. Adquisicin de Imgenes en video por Webcam.

Ordenador.

Analisis de la informacin adquirida por la Webcam.

Comunicacin entre Matlab y el Micro controlador.

Micro Controlador. Control de Seguidor de Colores.

Seguidor de Colores.

Descripcion de Cada bloque.


Adquisicin de Imgenes en video por Webcam:
Adquisicin de datos:
En este bloque lo que se lleva a cabo es la obtencin de datos, es decir el video, el cual est constituido por una cantidad de frames que se generan mientras se mantiene la grabacin o transmisin de video. Esta informacin es obtenida por la webcam y enviada al computador por USB. Sin embargo para que pueda funcionar la webcam para la adquisicin de datos (o activarla), esta operacin se debe realizar a travs del programa escrito en matlab donde por medio de la funcin start() como se mencion en prrafos anteriores, se da inicio al funcionamiento de la webcam.

Inicio de Programa:
Al dar inicio el programa, primero se deben preguntar los datos de la webcam los cuales se obtienen con la funcin imaqhwinfo(winvideo) en la que se entregan datos como la resolucin, pixeles, nombre del dispositivo entre otros y posterior a eso, se debe configurar las propiedades, frames a generar, intervalo de imagen por frames y calidad en la que se requiere utilizar la transmisin de video por la webcam. Ya realizado esto recin se da inicio a la puesta en marcha del programa con la funcin start(vid). Cuando se ejecuta esto en el Command Windows de matlab se abre una ventana que muestra la transmisin de la webcam.

Anlisis de la informacin adquirida por la Webcam:


Preparacin para anlisis:
Para dar inicio a esta parte, cabe recalcar que las imgenes son resultado de un frame, es decir, se captura una imagen a partir de un frame, esta captura se realizar cada cierto intervalo de frames por ejemplo: una imagen cada 5 frames, cada 2 o hasta 1 frame, mientras mayor sea el intervalo ms tosca se ver a transmisin en la ventana de video de matlab y mientras menor sea el intervalo, con mayor fluidez se ver el video. Para poder realizar el anlisis continuamente, la parte de anlisis del programa incluye un bucle con un while() que condiciona la transmisin y procesamiento de las imgenes (por la cantidad de frames adquiridos por matlab a travs de la webcam) por ejemplo: while(Vid.FramesAcquired<=50), indica que este bucle se realizara hasta que se hayan adquirido 50 frames o menos.

Anlisis de las imgenes:


Con lo anterior listo, inicia finalmente el anlisis de imgenes. Este sigue el siguiente orden: a) Las imgenes son guardadas en una matriz con la funcin getsnapshot(vid). b) Luego con las funciones de procesamiento de imagen de matlab, la matriz es pasada a escala de grises con la funcin rgb2gray() y se guarda en otra matriz. c) Posteriormente se le sustrae el color rojo a esta matriz por medio de la funcin. imsubtract(). d) Ya hecho esto, la matriz es filtrada de ruidos con la funcin medfilt2(). e) Como la imagen guardada en la matriz ya est en escala de grises, ahora se guarda en otra matriz pero en formato binario con la funcin im2bw(), el cero en la matriz equivale al color negro y el 1 al color blanco, al restar el rojo, este ser el nico espacio blanco en la matriz restante, patrn que se seguir. Con esto ya se tienen lista la deteccin del color rojo de la imagen capturada, ahora lo que resta es seguir en la ventana de video de matlab el objeto de color rojo (o espacio en blanco en la imagen). Para llevar a cabo esto se hace uso de otras funciones. El objeto de color rojo ser capturado en el centro de un rectngulo, esto con las funciones rectangle() y regionprops(), entre algunas que facilitan esta operacin, adems se muestra el valor de los ejes (X, Y) que corresponde al centro del rectngulo donde se est trackeando el objeto de color rojo. Esto es visto a travs de la ventana de video en matlab.

Guardar informacin:
Esta etapa consiste en guardar la informacin resultante de todo el anlisis, que en este caso son los valores correspondientes que toman los ejes (X, Y), estos resultados del movimiento del objeto rojo en la pantalla son almacenados en variables que son la informacin enviada desde matlab hacia el microcontrolador para su posterior procesamiento.

Comunicacin entre Matlab y el Microcontrolador:


Bloque Matlab:
Una vez que se tienen los datos almacenados en variables, se puede considerar el envi de estos hacia el microcontrolador para que los procese y con respecto a esto realice las instrucciones programadas en l. La comunicacin entre el microcontrolador y matlab no ocurre directamente. En este bloque ocurre la transmisin, como la comunicacin debe ser inalmbrica se opt por el bluetooth, as que la informacin es enviada desde matlab hacia el microcontrolador usando el adaptador bluetooth del computador y sus respectivos protocolos para la transmisin.

Bloque Microcontrolador:
Este bloque es ms breve, aqu la informacin enviada por matlab es receptada por un mdulo bluetooth H06, el cual va conectado al microcontrolador a travs de un protoboard, la informacin que recibe este mdulo, la traduce a un formato serial por medio del cual se comunica con el microcontrolador, de este manera este circuito integrado recibe la informacin desde el programa matlab en el computador y se encuentra habilitado ahora, para procesarla y realizar las instrucciones correspondientes segn los valores de los datos.

Control de Seguidor de Colores:


Control:
Ya se tiene lo fundamental, los datos; ahora el microcontrolador los procesa para resolver que instruccin ejecutar, esta ejecucin de instrucciones son resultado de comparaciones dentro del programa, comparaciones que tratan de los valores que van tomando los ejes de posicin del objeto rojo y respecto a esos valores ser la accin que realiza el programa; por ejemplo si el objeto est muy cerca o se est alejando de manera recta o si el objeto de color apareci o desapareci por uno de los lados izquierdo, derecho son estos mismo movimientos del objeto los que hacen variar los valores de los ejes (X, Y) para su posterior comparacin en el programa y realizar la respectiva instruccin de control que puede ser desde energizar una salida del microcontrolador hasta un parpadeo. Lo que el programa controla es el funcionamiento de dos motores, un Servo Motor para dar la direccin al avance o retroceso recto y/o diagonal del vehculo prototipo seguidor de colores y un Motor Dc el cual es el encargado de que el vehculo en si avance o retroceda con un puente H hasta quedar a una distancia determinada del objeto de color rojo (que en la aplicacin industrial refiere a quedarse a una distancia determinada de donde se extraern los materiales que ste transporta, que en la lneas de produccin seran patrones o seales de colores que se activan secuencialmente segn se requiera el material). Ahora bien el seguidor de colores es un vehiculo prototipo .

Algoritmos.
Algoritmo dispositivo maestro (programacin en MatLab):
Obtener informacin de webcam conectada a la computadora; Ingresar direccin y configuracin webcam; Setear cantidad de imgenes por disparo a infinito; Setear formato de color de la imagen de video a RGB; Setear intervalo de captura por imgenes/segundo a 1; Obtener nombre y canal de dispositivo bluetooth; Iniciar dispositivo bluetooth; Iniciar la captura de video; Mientras (la cantidad de imagenes capturadas sea menor o igual a 3000) Obtener captura de imagen del video; Obtener el componente rojo de la imagen en escala de gris; Filtrar ruido de la imagen; Convertir la imagen de escala de gris a binario; Remover objetos demasiado pequeos de la imagen binaria (menores a 300px a 700 px); Etiquetar los elementos dentro de la imagen binaria (hasta 4); //(Inicio de anlisis de la imagen) Agregar caractersticas a la imagen (tamao, posicin, contorno); Activar visualizacin de las imgenes; Mantener visualizacin; Repeticin para todos los objetos rojos Agregar contorno al objeto Agregar marca de centro del objeto Agregar rea del objeto Setear caractersticas del contorno (posicin, color y espesor); Plotear sobre la imagen los valores de rea, posicin eje X y posicin eje Y; Establecer fuente, tamao y color de los textos; Enviar valor de rea y posicin del objeto va bluetooth al PIC; Fin de repeticin Terminar mantener visualizacin; Fin de mientras Detener video; Limpiar datos de video; Borrar todo;

Algoritmo dispositivo esclavo (PIC 16F877A)


Incluir cabecera pic16f877a Definir velocidad de reloj a 20 MHZ Incluir librera de LCD Configuracin RS232 estableciendo tasa de baudios a 9600, 8 bits, sin paridad, pin de transmisin B1 y pin de recepcin B2 Inicio de programacin Iniciar lcd; Declarar variable A=char para almacenar datos; Interrupcin para recepcin de datos USART Recepcin de valor de rea y posicin via USART en variable A; Mostrar variables en LCD; Si el rea del objeto detectado es muy grande: Retroceder por 500ms; Si el rea del objeto es demasiado pequeo: Avanzar por 500ms; Fin de comparacin; Si el objeto est en el borde derecho de la imagen: Mover durante 300ms; Si no, si el objeto est en el borde izquierdo de la imagen: Mover izquierda durante 300ms; Inicio rutina interrupcin: Habilitar interrupcin; Setear puerto d como salida para lcd; Setear puerto b para salida actuadores; Inicializar puerto d; Inicializar puerto b; Loop mientras infinito

Explicacion algoritmos.
Algoritmo dispositivo maestro:
Obtener informacin de webcam conectada a la computadora; Ingresar direccin y configuracin webcam; Setear cantidad de imgenes por disparo a infinito; Setear formato de color de la imagen de video a RGB; Setear intervalo de captura por imgenes/segundo a 1;

Estas funciones sirven para detectar la cmara web que se encuentra conectada al computador via USB, luego se obtienen los datos de direccin, nombre, y tamao de la imagen de video. Luego se establece la cantidad mxima de frames de video capturadas, este valor lo seteamos a infinito para que el video no se detenga en ningn momento. El seteo del color de la imagen de video puede ser en colores (RGB), en escala de grises y en blanco y negro. El intervalo de captura de imgenes determina cada cuantos frames de video se tomara una muestra.
Obtener nombre y canal de dispositivo bluetooth; Iniciar dispositivo bluetooth;

Comandos para la configuracin del dispositivo bluetooth, donde se detecta la direccin, el nombre y el canal de comunicacin perteneciente a este. Luego se produce la activacin del dispositivo para comunicacin serie.
Obtener captura de imagen del video; Obtener el componente rojo de la imagen en escala de gris; Filtrar ruido de la imagen; Convertir la imagen de escala de gris a binario; Remover objetos demasiado pequeos de la imagen binaria (menores a 300px a 700 px); Etiquetar los elementos dentro de la imagen binaria (hasta 4);

Esta parte del programa corresponde al proceso de filtrado de imagen donde primeramente se obtiene una captura de imagen de video, luego esta imagen se transforma de RGB a escala de grises para obtener el valor del componente de color rojo de la imagen. A continuacin se filtra el ruido de la imagen estableciendo un cierto valor para eliminar pequeas impurezas dentro de esta. Luego se convierte la imagen desde escala de grises a una imagen de tipo binario en la cual los objetos de color rojo se vern completamente blancos y todo lo dems se ver completamente negro. Luego se removern todos los objetos de tamao menor al especificado, logrando una mejor discriminacin de los objetos detectados y evitar fallas. Finalmente se le da etiqueta a los objetos detectados binariamente.

Agregar caractersticas a la imagen (tamao, posicin, contorno); Activar visualizacin de las imgenes; Mantener visualizacin; Repeticin para todos los objetos rojos Agregar contorno al objeto Agregar marca de centro del objeto Agregar rea del objeto Setear caractersticas del contorno (posicin, color y espesor); Plotear sobre la imagen los valores de rea, posicin eje X y posicin eje Y; Establecer fuente, tamao y color de los textos; Enviar valor de rea y posicin del objeto via bluetooth al PIC;

Se agregan caractersticas a la imagen binaria como el tamao dentro de la matriz, la posicin y el contorno para luego ser utilizadas como variables. Se activa la visualizacin de las imgenes en una figura de matlab y se retiene. A continuacin, para todos los objetos detectados dentro de la imagen binaria se agrega un contorno rectangular ajustado al tamao de este, se agrega un cursor en el centro del objeto, y ese obtiene el valor escalar del rea. Luego se procede a imprimir los valores de posicin X e Y, adems del valor del rea en pantalla en tiempo real estableciendo la fuente, el tamao y el color de los textos a desplegar. Finalmente se enva el valor del rea y de la posicin X va bluetooth al mdulo HC-06 que transformara esta seal a serial para ser leda por el PIC.

Explicacin algoritmo dispositivo esclavo (PIC 16F877A)


Incluir cabecera pic16f877a Definir velocidad de reloj a 20 MHZ Incluir librera de LCD Configuracin RS232 estableciendo tasa de baudios a 9600, 8 bits, sin paridad, pin de transmisin B1 y pin de recepcin B2

Inclusin de las de la librera de cabecera del PIC 16F877A, adems del seteo de la velocidad de reloj, inclusin de la librera para controlar el dispositivo LCD donde se mostraran datos del programa. Adems se establece la tasa de transmisin en baudios que debe ser igual tanto en el dispositivo emisor como en el dispositivo receptor, adems de la resolucin en bits de la transmisin. Se establecen los pines en los cuales se realizara la transmisin y la recepcin de los datos.
Declarar variable A=char para almacenar datos; Interrupcin para recepcin de datos USART Recepcin de valor de rea y posicin va USART en variable A; Mostrar variables en LCD;

Se declara una variable tipo carcter dentro de la cual se almacenaran los datos que se reciban por el puerto USART del PIC, a continuacin se encuentra la lnea de interrupcin del programa la cual se activa cada vez que se recibe un dato por el puerto USART. Luego se transfiere la informacin capturada a la variable A la cual es mostrada por la pantalla del LCD.
Si el rea del objeto detectado es muy grande: Retroceder por 500ms; Si el rea del objeto es demasiado pequeo: Avanzar por 500ms; Fin de comparacin; Si el objeto est en el borde derecho de la imagen: Mover durante 300ms; Si no, si el objeto est en el borde izquierdo de la imagen: Mover izquierda durante 300ms;

Seccin de comparaciones, en esta parte se realizan comparaciones para actuar con respecto a la cercana, lejana y posicin horizontal del objeto, con el fin de poder seguir el objeto de determinado color de la mejor forma posible.

Inicio rutina interrupcin: Habilitar interrupcin; Setear puerto d como salida para lcd; Setear puerto b para salida actuadores; Inicializar puerto d; Inicializar puerto b; Loop mientras infinito

Seccin de la rutina de interrupcin. En esta parte del programa se realiza la parte del programa donde se establecen las configuraciones de puertos del PIC, para as controlar el LCD y las salidas digitales para mover motores desde el micro controlador, Finalizando con un loop infinito para mantener el programa en funcionamiento indefinidamente.

Você também pode gostar