Está en la página 1de 5

UPM-DISAM

CYBERTECH 2005

UPM-DIE

1. Introduccin
LA CMUCAM2 es una cmara desarrollada en el Instituto de Robtica de la Universidad Carnegie Mellom de EEUU. Esta cmara est especialmente diseada para el seguimiento de colores. Sus principales caractersticas son: Seguimiento de colores a hasta 50fps (frames per second) Seguimiento de movimiento hasta 26 fps Localizacin del centro de gravedad de los datos seguidos Clculo de la media y la varianza Histograma de cada canal de color Resolucin de hasta 176x255 pixels Seguimiento de colores automtico mediante servos Control de hasta 5 servos

La cmara se conecta via serie a nuestra placa de control y nos facilita los datos bien peridicamente, bien cuando se lo pidamos. Es importante elegir colores muy luminosos y fcilmente distinguibles por la cmara.

UPM-DISAM

CYBERTECH 2005

UPM-DIE

2. Modos de funcionamiento
Poll Mode (PM) Si el poll mode est activado, la cmara enva un solo paquete como contestacin a una peticin. Si no est activado, trabaja enviando un chorro continuo de informacin hasta que se le dice que pare. Delay Mode (DM) Sirve para establecer un retraso despus de cada carcter que se enva. Es muy til con microcontroladores lentos, para permitirles procesar la informacin antes de enviar el siguiente carcter.

3. Instrucciones principales
SM Servo Mask
SM bit_flags, donde bit_flags = B3 B2 B1 B0 y B es 0 1 bit_flags = 8*B3 + 4*B2 + 2*B1 + B0

OM Output packet Mask


Selecciona el formato de sallida para cada paquete que devuelve la cmara. Por ejemplo, la instruccin Track Color devuelve un paquete tipo T: mx my x1 y1 x2 y2 pixels confidence Si ponemos OM 0 64, indicamos que queremos que se nos devuelva solamente los pixels de los paquetes T: 1 2 4 8 16 32 64 128 0 0 0 0 0 0 1 0 mx my x1 y1 x2 y2 pixels confidence

UPM-DISAM

CYBERTECH 2005

UPM-DIE

ST Set Track command


Especifica los valores RGB que se quieren seguir: ST Rmin Rmax Gmin Gmax Bmin Bmax

TC Track Color
Comienzo del seguimiento de los valores especificados (en la lineade comandos o con ST). Al hacer el seguimiento, los sevos conectados a la cmara se mueven automticamente haciendo el seguimiento. SV Servo Position Se especifica la posicin de un servo

Juego de instrucciones

UPM-DISAM

CYBERTECH 2005

UPM-DIE

4. Programa ejemplo
#include "serial REG.h" #include "string.h" #include "stdlib.h" #include "puertos.h" unsigned char car; int num_pixels(char *datos) // Convierte una cadena char en un nmero entero { char *ptr; ptr=strchr(datos,' '); return atoi(ptr); } void main() { //*************Inicializacin (Entre otras cosas, comunicacin serie**************************************// //*****************************Depende de cada PIC********************************************************// gets(linea1); //Coje CMUCAM V6 car = getc(); //Lee : putc(13); gets(linea1); //Lee ACK car = getc(); //Lee : puts("SM 5"); // Servo Mask, para usar solo el servo de pan gets(linea1); //Lee ACK car = getc(); //Lee : puts("OM 0 64"); //Output Packet Mask, para seleccionar la informacion que queremos de lo que nos //mande la cmara con el TC. En este caso slo los pixels gets(linea1); //Lee ACK car = getc(); //Lee : puts("DM 255"); // Delay Mode gets(linea1); //Lee ACK car = getc(); //Lee : //Movimiento Capote (utilizamos otro servo para mover el capote) puts("SV 2 128"); // Movimiento Servo Capote, por ejemplo gets(linea1); //Lee ACK car = getc(); //Lee : //Fin Movimiento Capote puts("ST 7 72 215 255 46 108"); Set Track, establece el cubo de colores que se quiere seguir. gets(linea1); //Lee ACK car = getc(); //Lee : puts("TC"); Track Color gets(linea1); //Lee ACK /******************Bucle principal**************************************************/ while(1) { gets(linea2); //Lee el paquete que manda la camara TC pixels=num_pixels(linea2); }//While }

// El bucle se repite recibiendo paquetes continuamente. En este ejemplo recibimos el nmero de pixels del color seleccionado, As sabemos si estamos cerca o lejos del objeto que seguimos

UPM-DISAM

CYBERTECH 2005

UPM-DIE

5. Curiosidades
5.1. Como se convierte una imagen en un conjunto de pixels y posteriormente en datos (bytes)? La cmara est basada en un sensor visual CMOS, un chip de silicio con una rejilla de clulas, cada una de las cuales es sensible a diferentes colores (rojo -R, verde-G- y azul-B-). Cada una de estas clulas produce un voltaje proporcional a la intensidad de la luz que recibe. Posteriormente este voltaje es convertido a un nmero. El sensor tiene 356 columnas y 292 filas, dispuestas como sigue:

La cmara toma datos de dos filas a la vez

Y genera los datos de los pixels:

5.2. Cmo se hace el seguimiento del color? El seguimiento de un color es la habilidad de tomar una imagen, aislar un color en particular y extraer informacin sobre la localizacin de esa regin en la imagen. Para ello se especifica el color que queremos seguir mediante unos valores maximos y minimos de sus componentes roja (R), verde(G) y azul(B). De ah el nombre RGB. Estos valores se pueden obtener entre otras muchas formas de programas de dibujo tipo Paint Shop Pro. A continuacin de detectan en la imagen todos los pixels que estn comprendidos entre esos valores. Se puede ahora calcular la media y la varianza de los pixeles detectados para calcular el centro del color seguido. 5.3. Cmo se hace el seguimiento de movimiento? Para ello se utiliza lo que en ingls se denomina Frame Differencing. Se compara una imagen con la anterior (o anteriores) y se extraen las diferencias entre ellas. Un ejemplo bsico sera calcular la media del color que se quiere seguir en las dos imgenes y ver hacia donde se ha desplazado.

También podría gustarte