Interfaz Gráfica para la CMUCAM3
Arturo Camarillo Rodríguez
Seminario del Proyecto de
Investigación en robótica Humanoide
Objetivo
• GENERAL:
• Aprender a manejar la interfaz Gráfica creada en LabView para la cámara.
• ESPECÍFICOS:
• Obtener una imagen de la CMU y verla en la interfaz
• A partir de dicha imagen seleccionar los colores de nuestro interés y crear los cubos de color
• Escribir los datos en la cámara
• Obtener la segmentación de la cámara
• Ver los datos con los que está trabajando la cámara
Material
• CMUCAM 3
• Tarjeta SD
• Adaptador TTL-Serial
• USB2Dynamixel
• Pila para la cámara
• Objetos de colores distinguibles
DESARROLLO
Conexión de la cámara
• USB2Dynamixel
• Revisar que esté el switch en RS232
Serial
Cámara
Tarjeta SD
Adaptador Serial
Alimentación (5-12V)
Pin derecho es +
Bajar el programa a la CMU
• Instalar LPC2000 flash utility
• Revisar en que puerto COM se dio de alta.
Modificar a un COM 1-5 en caso de ser necesario.
• Abrir el programa para subir el programa a la cámara.
Seleccionar Archivo .HEX
Nombre del archivo:
havimo_lpc2106-cmucam3.hex
Baud Rate y Puerto COM
Baud Rate: 115200
Puerto: En el que se haya dado de alta
Dispositivo y Frecuencia
Device: LPC2106 Freq: 14745 Hz
Apachurrar el botón mientras se baja el switch de encendido
El jumper es importante para bajara un programa a la CMUCAM3
Si lo hicieron bien…
Apachurrar el botón Mágico
Please reset… Dar OK
Re iniciar la CMUcam3 …
Cerrar el programa de Philips
Prender y apagar el switch de la cámara
INTERFAZ GRÁFICA
Espacio de color RGB
Espacio RGB
• Red
• Green
• Blue
• Nosotros trabajamos con una resolución de 1 byte
• 0 a 255 por cada uno
• 176*143 (resolución baja de la cámara)=
25,168 pixeles en total
COMUNICACIÓN
Opciones
• 0: Recibir una Imagen
• 1: Segmentar una Imagen y mostrar los resultados (una por una o continuo)
• 2: Cambiar valores de colores
• 3: Ver valores de la cámara
• Hasta 7 colores
A continuación se explican cada opción.
Comunicación
• Serial RS232
• Interfaz manda comando
• Cmucam recibe comando, procesa la petición y envía respuesta
• Interfaz recibe respuesta y la procesa.
• Interfaz genera resultados.
• Código ASCII
Opción 0
• Comando mandado: “aaaaa\n”
• Regresa las 3 componentes (RGB) de los 25,168 pixeles.
• Manda 143 paquetes de 530 bytes cada uno
• …
• Cada byte representa un número entre 0 y 255.
• Así hasta juntar la imagen
0x 0D
1 2 176
0x 0A
Opción 1
• Comando mandado: “aaaab \n”
• En el espacio en blanco aparecera ya sea a=1 color; b=2 colores…g=7colores.
• Manda el tiempo que tardó en analizar la imagen (en ms) => “273\n”
• Luego por cada color…
• Si no encontró el color mandará: “no hay objeto de ese color…\n”
Si encontró el color:
• [# de grupos encontrados]\n Por cada grupo manda:
• [#grupo][xmin][xmax][ymin][ymax][#pix]\n Donde
• [#grupo] identificador del grupo
• [xmin] coordenada en x ubicada a la izquierda
• [xmax] coordenada en x ubicada a la derecha
• [ymin] coordenada en y arriba
• [ymax] coordenada en y abajo
• [#pix] número de pixeles que contiene ese grupo
Ejemplo
• [3] [31] [45] [23] [64] [35] [enter]
• 0x03 0x1F 0x2D 0x17 0x40 0x23 0x0D 0x0A
• Son máximo 10 grupos por color
• Y solo se envían los datos de los grupos que tienen más de 5 pixeles.
• Si no hay ningún pixel del color o los
grupos tienen todos menos de 5 pixeles entonces aparecerá la leyenda “no hay objeto de ese color…”
Opción 2
• Comando mandado: “aaaac \n”
• Primer espacio corresponde al igual que en la opción 1 al # de colores que
modificaremos.
• Segundo espacio es variable, desde 6 hasta 42 bytes
• Cada 6 bytes son los límites de cada
“cubo” de cada color
Donde RLL=red lower Limit,
RUL=red upper Limit, etc
…
RLL RUL GLL GUL BLL BUL
Opción 3
• Comando mandado: “aaaad\n”
• Devuelve los límites de los cubos de los 7 colores que tiene registrados en la tarjeta SD
• “ \n”
• Un paquete por cada color
RLL RUL GLL GUL BLL BUL
NOTA: Siempre se debe iniciar usando la opción 0.
Seleccionar Puerto COM
Indicadores de Texto
Indicador Opción 1: estatus de la segmentación
# Grupos: grupos encontrados de cada color
Tiempo: tiempo desde que se mando el comando hasta que se terminó de procesar la información (LabView) [ms]
Tiempo de Segmentación: Tiempo que toma a la cámara analizar la imagen
Indicadores Gráficos
Imagen Original
• Cuando se seleccione la opción 0, la imagen que mande la cámara se verá en este
espacio.
Filtro
• De acuerdo a como vayan variando los valores se irán presentando en este cuadro los pixeles que se
encuentren dentro de nuestra área de interés.
• Se controla el
número de colores
Caja delimitadora (BondingBox)
• Cuando se activa la opción 1, se verán en este cuadro los
resultados de la segmentación realizada por la cámara.
• Con el siguiente control determinas cuántos colores:
Seleccionador
• Para poder seleccionar
específicamente con un click que pixeles queremos.
• Si está en 0 no hace nada.
• De a uno por uno
Indicadores “cubos”
• Podemos ver los límites numéricos de nuestros cubos.
• El led indica que color se está modificando (depende del seleccionador)
Botón Resetear
• Cuando lo pulsan resetean los límites del color
que se esté modificando (o sea el que tenga el led prendido)
Switch Continuo
• Derecha activado
• Izquierda desactivado
• Solo debe activarse con la opción 1
• Provoca que la
segmentación sea
continua, es decir que no es necesario
apachurrar muchas veces el botón OK de la opción
Interfaz
Referencias
www.cmucam.org
Vision module Quick Start (Havimo):
http://robosavvy.com/RoboSavvyPages/Support/Hamid/Ha ViMoQuickStart.pdf
Para bajar el Flash Utility:
http://www.nxp.com/products/microcontrollers/support/softw are_download/lpc2000/
Para bajar el RunTime Engine:
http://joule.ni.com/nidu/cds/view/p/id/2087/lang/es