Este blog sigue funcionando!

No he podido poner nada por haber empezado mis estudios en el area! Pero no duden en preguntar! Con gusto les ayudo o consigo la info con alguien que ya haya pasado por el problema!

saludos
Publicar entrada


moi
¿Cómo seleccionar los pixeles de un objeto con MATLAB?

Hace unos dias recibi un correo de un lector que queria obtener los valores de los pixeles en RGB de la figura que se muestra a la derecha. El planteamiento del problema, si no me equivoco, es el siguiente. Se obtiene este tipo de imagen a traves de un objeto que ejerce una presion sobre una pelicula especial. Las distintas tonalidades de colores que se obtienen expresan diferentes cantidades de presion. La empresa que produce este tipo de peliculas, tiene su tabla de conversion. En fin, para obtener una buena medicion de esta imagen se requiere de un algoritmo que sea capaz de identificar el objeto y de tomar las coordenadas de cada uno de los pixeles que conforman a este objeto, para que el usuario pueda accesar cada uno de ellos y leer los valores o modificar lo que sea necesario, segun el problema que se tenga en las manos.

Pendiente....
En estos dias pongo el archivo M. Por lo pronto aqui cuentan con el contenido del mismo.

Solucion en Matlab


function [row,col]=Density()
ID_RGB=imread('C:\Users\moises\Desktop\6kN.bmp');
ID=ID_RGB;
ID_hsv=rgb2hsv(ID);
height=size(ID,1);
width=size(ID,2);
for r=1:height
for c=1:width

if(ID_hsv(r,c,2)>.05)&&((ID_hsv(r,c,1)>.6)||((ID_hsv(r,c,1)<.1)))
ID(r,c,1)=0;
ID(r,c,2)=0;
ID(r,c,3)=0;
else
ID(r,c,1)=255;
ID(r,c,2)=255;
ID(r,c,3)=255;
end

end
end

image=im2bw(ID,0.5);
[imlabels, numObjects]=bwlabel(image, 8);
graindata=regionprops(imlabels,'basic');
objects=size(graindata,1);

for i=1:objects
if(graindata(i).Area>50000)
label = i;
i=objects;
end
end
[row, col] = find(bwlabel(imlabels)==label);


Saludos,

Moi.

Dudas, quejas, moises.pacheco@gmail.com
¿Qué es el etiquetado?

El etiquetado o labeling es el hecho de nombrar cada una de las áreas de pixeles que se encuentren conectados entre sí en una imagen, ya sea bajo el criterio de vecindad cuatro u ocho. Ahora una vez que se tiene segmentada la imagen, con los colores anaranjados, para la identificación de la pelota es necesario lograr un etiquetado correcto.

Les recomiendo que le echen un vistazo a la siguiente explicación de connected components.

Existe una gran cantidad de algoritmos para establecer un etiquetado adecuado. En la cmucam3 se presenta una dificultad que en una computadora no se establece, esto es el hecho de que el microcontrolador que tiene la cmucam3 tiene una capacidad de almacenamiento muchisimo menor que una computadora. Estas limitaciones se reducen al hecho de que la cmucam3 solo es capaz de analizar linea por linea de una imagen. NO se puede abrir la imagen completa, o tenerla almacenada en memoria. Es necesario establecer un algoritmo que sea capaz de funcionar en una sola corrida, para que asi se este seguro de exprimir toda la información del renglón de pixeles antes de liberarlo.

ATENCION: El 20 de junio publico el algoritmo capaz de etiquetar objetos.

si tienen dudas, ocupan saber que onda con el algoritmo para la cmucam3 mandenme un correo.


Saludos,

Moi
Realiza la segmentación en casa con tu cmucam3

Si eres de las personas que no les gusta estar encerrados en cubiculos, pero aun asi quieres trabajar, o realizar proyectos en casa, entonces te conviene leer esta sección. Para poder trabajar en la casa necesitaba bloquear la iluminación ambiental. El sol me agrada pero no me deja trabajar y en las noches la luz artificial también afecta mis imagenes. Como no quería gastar dinero en material de apoyo, tomé los deshechos de carton de cajas de cereal, galletas saladas, dulces y demas para poder hacer una caja en la que no me afectara la luz del ambiente y pudiera realizar los avances en la detección del balón. Como iluminacion utilice una lamparita de lectura. La lampara trabaja con un led blanco y MUY importante, una prenda de ropa sucia paracubrir un lado de la caja (Poner imagenes de la caja y herramientas.)

Al terminar de construir la caja le hice un orificio para colocar la cámara en la superficie superior, para que asi pudiera tener un acceso rapido a ella, ya sea para quemar los programas, bajarlos, analizar las imagenes de la tarjeta SD.

Vayamos a lo interesante.
Si ustedes quieren probar el tipo de iluminación y ver las imágenes que la cámara esta tomando en el momento, lo que pueden hacer es bajar el Frame Grabber de la cmucam y dentro de los programas que contiene el cc3 viene uno que es el cmucam2 carguen el archivo hexadecimal a su cámara y con él podran tomar imágenes por medio del programa Frame Grabber. Para utilizar el programa es sencillo, simplemente conecten su camara por el puerto serial. Enciendan la camara y presionen en la aplicacion el boton de connect. Al hacer esto se establece la coneccion con la cmucam y al presionar Grab Image, tomará una imagen y la desplegará en su pantalla. Así de sencillo.

Ahora digamos que se tiene una imagen como la de la izquierda. Esta imagen la tome con la cmucam3 adentro de la caja improvisada y con la iluminacion de la lampara roja. No es perfecta pero es lo suficientemente buena para empezar a trabajar. El objeto anaranjado es un pedazo de tela vieja. Es importante utilizar objetos opacos ya que en otros casos el reflejo de la luz puede dar resultados no deseados. Bueno, ya tenemos esta imagen. Ahora qué, cómo detectamos los colores. En un post les expliqué un poco sobre el procedimiento. Primero se tiene que pasar de rgb a hsv (Véase Jueves 28/08/2008). Pero ojo, no se tiene que transformar la imagen, simplemente obtener el valor equivalente, no es necesario cambiar el formato. Abran de su folder cc3 el archivo main.c ubicado en: cc3/projects/hsv-ppm-grab/main.c. En el renglón 95 comienza la función capture_ppm que recibe como parámetro un apuntador de tipo FILE, que apunta al espacio de memoria en donde se grabará la imagen.

Explicación breve de la función.
Renglones:
97-101: Se declaran variables del tipo indicado.
103: llama la funcion cc3_pixbuf_load(); aquí se carga la imagen de la cámara, en otras palabras toma una foto.
104: malloc separa un espacio de memoria y almacena un renglón de la imagen.
106-107 Toma los valores de ancho y alto de la imagen y los almacena en las variables size_x y size_y.
109 imprime en un archivo ppm el encabezado para comenzar a escribir los pixeles que conformarian la imagen.
111 simplemente toma el tiempo que tarda en grabar la imagen.
112-123 Entra en un ciclo donde recorre renglon por renglon y pixel por pixel cada renglon para grabar la imagen en formato ppm.
124 toma el tiempo en que acaba
125 hace una resta de tiempo final menos tiempo inicial.
127 libera el espacio de memoria.
129-131 imprime el tiempo que tardó.

Ahora incluye la clase hsv.h en tu archivo con el codigo #include agrega la clase cc3_hsv.h en el inicio de tu archivo. Al incluir la clase cerciorate de que el Make file dentro del folder ppm_grab incluya algo similar a lo siguiente:

PROJECT = ppm-grab

CSOURCES = main.c

INCLUDES =

LIBS = cc3-ilp


include ../../include/common.mk


Al tener esto no tendras problemas para compilar. Compila por medio de cygwin. Despues regresa a tu archivo main.c en el renglón 114 agrega el siguiente código: cc3_rgb2hsv_row(row);

Ahora abre C:\cc3\lib\cc3-ilp\hsv.c y dirigete a la funcion cc3_rgb2hsv. Esta funcion es la que nos va a hacer el cambio de color en los pixeles. Ahorita lo que hace es simplemente cambiar de rgb a hsv el valor de un pixel y como nosotros queremos el valor equivalente del pixel rgb en hsv sin cambiar el contenido del pixel entonces, nos dirigimos al final del codigo. Elimina los renglones 88-90.

pix->channel[CC3_CHANNEL_HUE] = hue;
pix->channel[CC3_CHANNEL_SAT] = sat;
pix->channel[CC3_CHANNEL_VAL] = val;

ahora con esta informacion que tienes del hue, sat y val puedes establecer tus rangos. Determina los valores maximos y minimos de cada una de las variables lo puedes sacar facil
mente de las ecuaciones que te dan. Toma en cuenta que los valores de las componentes NO van del 0 al 255, sino del 16 al 240, es decir que un pixel 240, 0, 0 establece un rojo vivo.
Una vez que tengas los máximos y los mínimos puedes establecer los rangos de colores basandote primordialmente en el hue.
Pueden visitar YaflaColor para darse una idea de cómo
funciona el hsv.

Les muestro dos imágenes que obtuve de mi playera anaranjada y de la pelota anaranjada. La primera la tome en la caja negra y la segunda en el piso de la biblioteca de la universidad. El piso es de una tonalidad amarilloverdosa y por lo mismo cae dentro de mi rango de amarillos. No se espanten por el ruido que lleguen a obtener en sus primeras imágenes solamente tienen que ajustar bien sus rangos de hue, sat y val. También ayuda mucho tener una iluminacion controlada como la de una biblioteca donde no interfiere la luz del sol y las lámparas iluminan todo de una forma casi homogenea.

Les deseo suerte en su implementación y cualquier duda que tengan no teman en preguntarme.

Saludos!

Próxima entrada: ¿Qué es el etiquetado?


¿Qué es segmentar una imagen?

Definición (inglés).

En términos generales, la segmentación de una imagen es la partición de la misma en grupos de pixeles. En esta seccion nos vamos a enfocar en la segmentacion con el proposito de analizar una imagen y localizar un color determinado. En este caso sera el color anaranjado por el simple hecho que es el color del balon de fútbol de la robocopa humanoides categoría kid.

En cualquier tipo de procesamiento de imágenes una iluminación controlada es una herramienta igual de fuerte que cualquier algoritmo que se considere implementar. Otro aspecto importante es tener en cuenta que la iluminación cambia el reflejo de los colores. Esto último puede parecer bastante trivial, pero para una camara sencilla la iluminación de un foco común y corriente puede llegar a teñir la imagen de tonos amarillos o anaranjados. Por el contrario si se trabaja con una imagen en escala de grises la iluminación mas asertada es la roja.

En resumen:
Si se trabaja con una imagen a color se requiere de iluminación blanca.
Si se trabaja con imagenes en escala de grises se requiere de iluminación roja.



Aquí les paso las reglas para la Robocopa 2009 en Graz, Austria. Dato curioso: Tierra natal de Arnold Schwarzenegger. Las reglas las liberaron hace un par de semanas y esta versión es la definitiva. Pueden compararlo con el archivo que les subi el año pasado para que vean con detalle las diferencias que se presentan.

Reglas:
Robocup Soccer Humanoid League Rules 2009 With Changes Marked
Robocup Soccre Humanoid League Rules 2009
Modifiqué el post del 18/07/2008 titulado: Tutorial cmucam3 para WinXP. Le agregué un manual de instalación y uso del LPC210x y el día de mañana quedará listo el manual de instalación del arm gcc para todos aquellos que tengan duda.

Saludos,

Moises Pacheco Gendrop.

Buenas noticias: Se abrio de nuevo el apoyo para el equipo de robocopa humaoides en el que estoy participando, por lo tanto vuelve a arrancar la pagina. En esta semana que viene publico les presento los avances que han habido en la semana.

Saludos,

moi
Solamente les comento que el blog se interrumpe por falta de apoyo, por parte de la universidad. Esperamos que se pueda seguir trabajando pronto.
A más tardar se reanudará a mediados de octubre, principios de noviembre.
Aún así si me comprometo a ayudarlos en lo que pueda. Mándenme un correo, me interesa saber lo que planean hacer.

Saludos y disculpas,

Moi
Agrégale giroscopios a tu robonova

Para este entonces ya compraste tu robonova pero deseas agregarle algun sensor para que no parezca un simple mono de control remoto. El giroscopio GWS PG-03 es altamente utilizado por la comunidad que vuela helicopteros de control remoto, cabe mencionar que cada quien puede adaptar el giroscopio que le parezca a su robot. Este giroscopio viene con un manual de instrucciones y una esponja adhesiva. Para que un giroscopio funcione correctamente se requiere de una retroalimentación en este caso esta se recibe por medio de la apertura que se encuentra debajo de las letras PG-03, como lo pueden apreciar en la imagen inferior. El simbolo S significa que ese es el canal apropiado para la señal, el positivo y el negativo queda por demás explicarlo. Una vez que cuentan con el giroscopio necesitan conseguir un cable. Yo tuve muchos problemas para conseguir el cable del giroscopio que como ya se han dado cuenta es un cable de servo motor. Despues de pasearme por todas las tiendas de electronica en el centro di con una de electronica industrial y en ella pudieron conseguirme estos cables a veinticinco pesos cada uno. Para aquellos que vivan en monterrey mandenme un correo y les localizo la tienda. El cable es en si una entrada comun y corriente. Es probable que encuentren cables que tengan una cabeza mas ancha, no se preocupen pueden lijarlos y adaptarlos al giroscopio. Para aquellos que no quieran batallar y prefieran gastar un poco mas, pueden buscarlos en internet como servo extension cable. Ahora que ya cuentan con todo lo necesario es importante establecer el sentido de los colores de los cables:

1) El rojo se deja para el positivo.

2) El negro se deja para el negativo.

3) El blanco se deja para la señal.
Tomando en cuenta este orden lo conectan en el giroscopio. Ahora el siguiente paso es conectar las otras dos puntas al robonova. Pongan atencion en esta parte para que no vayan a tener problemas. El cable con el que ya viene el giroscopio se conecta al pin #0 y el cable que compraron aparte y conectaron a la entrada del giroscopio S+- va en el pin #4. En la siguiente imagen se explica el orden en que se conectanlos cables en ambos pines. Denle click a la imagen para poder ver el tamaño real. Los colores que estan en cada pin corresponden a los colores de los cables.

Bosquejo en Matlab del algoritmo de visión para la identificación de la pelota

Bueno, ya cuentas con una cámara pero no sabes cómo empezar a rastrear la pelota o algún objeto en particular. No te preocupes, un buen inicio se puede realizar en Matlab. Una vez que hayas obtenido los resultados deseados puedes pasar el algoritmo a cualquier lenguaje deseado. Como esta página se enfoca más en el desarrollo de aplicaciones y mecanismos para la categoría de humanoides en la competencia mundial Robocup, es por eso que el objeto a buscarse será una pelota de tennis anaranjada. Si tienen cualquier duda sobre las reglas actuales de esta categoría las pueden bajar de esta liga: Reglas Robocup Humanoides 2008.pdf.



Espacios de color RGB y HSV

Como ya se ha mencionado la pelota es de color anaranjado, lo que significa que se debe de realizar algún tipo de filtro por formas, para detectar el círculo que representa el balón y por colores, para encontrar el anaranjado que pertenece al color de la pelota. En esta sección se explica a grandes rasgos los beneficios de cambiar de espacio de color entre RGB a HSV para lograr una mejor separación y detección de los colores. Si desean una descripción más detallada pueden visitar esta liga: HSV Colorspace.

Para poder entender lo que representa el espacio de color RGB imaginense una pantalla incolora y que puede ser iluminada por tres focos a la vez, uno rojo (R), uno verde (G) y uno azul (B). Si se enciende el primer foco la pantalla se ve roja, si se enciende únicamente el segundo la pantalla luce verde y con el tercero enciende azul. Si se encienden los tres focos al mismo tiempo la pantalla luce blanca y si se apagan luce negra. Ahora imagínense que le hablan al electricista y le piden que les ponga unos dimmers para poder controlar la intensidad de cada uno de los focos. Estos dimmers que consiguieron pueden variar de intensidad de 0 a 255, donde 0 es que el foco esta apagado y 255 significa encendido a su máxima potencia. Gracias a estos dimmers ustedes pueden representar cualquier color en su pantalla, ayudándose de la combinación de los tres focos (componentes R, G y B) y de la intensidad de cada uno de ellos. Al lado izquierdo se muestra una imagen que representa el espacio de colores en RGB a través de un cubo. Este espacio de color presenta sus ventajas y desventajas, pero lamentablemente una gran desventaja es el no poder encerrar un color en un espacio de numeros que representan a sus tres componentes R, G, B. Es decir para representar el color anaranjado se pueden dar los valores de 242, 145 y 47 a sus componentes, pero también si se selecciona 217, 103 y 0 da una tonalidad anaranjada y como pueden observar las tres componentes han variado sin un patrón (aparente). Entonces si se quiere establecer un algoritmo que sea capaz de detectar objetos de color amarillo, anaranjado, azul y verde se vuelve un problema realmente complejo, para esto existe el espacio de colores HSV. Este espacio intenta representar los colores de la forma en que un ser humano los identifica. Sus componentes son Hue, Saturation y Value, donde Hue representa los colores elementales. Saturation simboliza la intensidad del color y Value la obscuridad o luminosidad del color. Teniendo así un rojo establecido por un valor en hue y la intensidad del rojo siendo roco tenue o muy vivo lo da la saturación y la obscuridad del color lo da value podiendo obtener desde un negro hasta un rojo vivo. Para un mejor entendimiento vean la figura de la derecha, este cono representa el espacio de colores en HSV. Los valores de Hue típicamente son grados y los de Saturation y Value se dan en percentiles. Para una mejor visualización sobre el formato de HSV y RGB pueden visitar una página de conversión, esta página en particular maneja la entrada de RGB en hexadecimal.



Explicación del algoritmo


A continuación vamos a ver el desarrollo del algoritmo para detectar el balón, para ello es necesario que tengan una noción del manejo del paquete de Matlab así como la creación de los archivos de extensión M. Al final de esta sección voy a pegar los archivos para las funciones aclara y enc_pelota, para que ustedes lo puedan correr en su PC. Cabe mencionar que este tipo de algoritmos se deben de ajustar a las características de la cámara, si lo quieren probar les recomiendo grabar la imagen sin filtrar que he puesto en este blog (bajar imágenes). Si ustedes se ponen a jugar con los valores en hsv pueden lograr aclarar una imagen, en este caso fue necesario porque la iluminación con la que se cuenta en el laboratorio de robótica no es la óptima. Como pueden observar la funcion aclara recibe como parámetro una matriz que contiene la imagen (Ver renglón 1). Después realiza una conversión del espacio de color de RGB a HSV para poder manipular la iluminación de la imagen (Renglón 2). Después de esto obtiene las dimensiones de la imagen para poder aplicarlas en el ciclo for una vez dentro del ciclo recorre todos los pixeles y dentro de cada uno aumenta en


un 20% el valor y disminuye en un 10% la saturación. Esto se realiza para poder tener colores más claros y que los blancos realmente luzcan como un color que pueda ser identificado como blanco y no como un amarillo claro o algun verde deslavado, etc. Una vez que termina el ciclo, convierte la matriz al espacio RGB y la regresa, obteniendo así una imagen similar a la que se encuentra en la parte superior derecha. En este momento se tiene la parte que puede aclarar la imagen para una mejor detección de los colores, ahora lo que se requiere es de una función que pueda "aplanar" los colores. Es decir que si un objeto en la imagen es para el ojo humano un verde, sin tomar encuenta a los daltónicos, el programa lo etiquete con un mismo color para que de esta forma sea de fácil identificación en el formato RGB. La sección que comprende el aplanado de los colores será omitida en la explicación por ser un algoritmo semejante al de la función aclara. La segunda etapa de la función enc_pelota consta de un binarizado. El binarizado se realiza para que la computadora se enfoque en buscar los objetos que cumplan con el color de interés de una forma eficiente enfocándose solamente en el color blanco. Una vez que se tiene una imagen binaria se corre un algoritmo de connected components para determinar cuántas áreas se han encontrado, ya que cabe la posibilidad de que hubiesen objetos del mismo color que la pelota o que se encontrase uno con algún ruido en la imagen que resultase de color anaranjado. Al encontrar las áreas se requiere descartar aquellas áreas que no sean circulares y para ello se selecciona un filtro por áreas, para que las áreas pequeñas no sean consideradas como posibles balones, y finalmente se filtran las áreas por su similitud a un círculo que en este caso se realiza con un cuadrado, considerando que las figuras que entran dentro de un cuadrado son un círculo "perfecto" y un cuadrado. Por esta razón se debe modificar esta parte para que sea comparado únicamente con un círculo, pero bueno ya tienen ustedes la idea de lo que se debe de realizar. Finalmente cuando se identifica el área semejante a un círculo se obtienen las coordenadas de su centroide y se entregan como resultado. A la derecha se muestra parte del algoritmo de enc_pelota, en estos días voy a subir los archivos M, por el momento espero y esto les ayude.
Saludos y suerte!



¿Cómo ponerle cuello y cabeza a tu robonova?

El otro día después de estar buscando unos accesorios para la cmucam3 me topé con el siguiente torreta. Es una forma sencilla de solucionar el problema de los giros de la cámara del robot, es evidente que para este problema hay una inmensa cantidad de soluciones, pero si lo que hace falta es tiempo para hacer un diseño propio o bien si se quiere uno desempolvar la cabeza y dar cabida a soluciones distintas entonces la compra de este equipo se justifica. El giro vertical de la cámara, también conocido como Tilt tiene una capacidad de 45 grados hacia arriba y 45 hacia abajo esto combinado con 180 grados de visión gracias al giro horizontal, Pan, da una gamma bastante amplia de visión para nuestro pequeño robot. Cabe mencionar que la torreta no incluye los servo motores para ambos giros, pero una buena ventaja es que esta torreta se puede acoplar fácilmente al diseño del robonova. (Pendiente...)


Tutorial de ensamble

Tutorial cmucam3 para WinXP


Bueno ahora ya tienes la cámara. Pero no tienes la menor idea de cómo iniciar a programarla o a interactuar con ella. La página principal de la cmucam tiene un pequeño tutorial llamado Quick-Start, para poder familiarizarse uno con la cámara. El principal problema con esta liga es que no llega a especificar bien la necesidad de cada uno de los paquetes a instalar y por lo mismo es muy fácil cometer errores. Este tutorial está basado para computadoras con Windows XP Service Pack 2 de 32 bits.

Equipo requerido
a) Una cámara cmucam3
b) Un cable serial
c) Alimentación, para especificaciones véase página 5.



Inicio del tutorial

El tutorial se divide en cuatro etapas:

1)Instalación del Cygwin.

2)Instalación del LPC2000 Flash Utility. (Pendiente)

3)Instalación del FrameGrabber. (Pendiente)

4)Uso de los programas. (Pendiente)


Instalación de Cygwin

Para poder interactuar con la cámara es necesario descargar el cygwin. Cygwin es un emulador de Linux para Windows. Este se ocupa para poder compilar los programas de la cmucam a través de la instrucción make.


Descarguen el setup.exe, opriman el botón de Run en la pantalla. Descarguen el tutorial Instalación_Cygwin y sigan los pasos. Si no lo pueden descargar por X o Y entonces les imprimo el texto del tutorial, no me hago responsable si es algo confuso sin tener las imágenes.

Tutorial sin imágenes:


Ventana inicial en la que se especifican las generalidades del programa y así como una pequeña introducción al programa instalador. No es necesario que lean esto y si son como la mayor parte de los usuarios de Windows, no perderán su tiempo en leerlo. Opriman Next.
Ventana titulada Choose Installation Type, aquí se obtiene un menú en el que debe uno seleccionar la fuente para obtener el programa. En caso de que hayan obtenido el cygwin a través de un CD instalador, que acompañó a sucmucam entonces seleccionen Install from local directory, en caso contrario denle Install from Internet y opriman Next.
Choose Installation Directory, en esta seleccionen la opción de Install For: All Users y en Default Text File Type seleccionen Unix/binary. Una vez seleccionado esto opriman Next.
Select Local Packcage Directory, aquí seleccionen el directorio C:\ como su directo local. Una vez realizado esto presionen Next.
Select Connection Type, en esta ventana seleccionen el tipo de conexión con el que cuenten y opriman Next.
NOTA: Si no saben qué conexión seleccionar escojan Direct Connection y prueben.
Cygwin Setup, en esta ventana Cygwin tratará de establecer una conexión con algún servidor para poder bajar los paquetes requeridos en el proceso de instalación. Esperen a que termine de establecer la conexión y opriman Next.
Choose Download Site(s), aquí seleccionen la página que más les plazca. En caso de encontrar algún sitio que consideren que este cerca de ustedes, entonces seleccionen ese, en caso contrario el que sea es bueno.
Opriman Next.
Choose Installation Directory, en esta seleccionen la opción de Install For: All Users y en Default Text File Type seleccionen Unix/binary. Una vez seleccionado esto opriman Next.
Select Packages, en esta ventana deben escoger los paquetes a instalar, en caso de que tengan el cygwin en un CD entonces presionen donde muestra el óvalo rojo y verifiquen que diga Install y que todas las pestañas inferiores digan Install. Una vez hecho esto opriman Next.
Si no tienen el CD pasen a la siguiente diapositiva.
Instalación de paquetes por medio de Internet. Maximicen su ventana y dénle click a View hasta que a un lado aparezca la leyenda Full. Después naveguen por la ventana principal y busquen estos paquetes:
make
subversion
openssl
Gcc-core
Para instalarlos denle click a Skip para que aparezca la versión a instalar. Después opriman Next.
Sean pacientes, no se vayan a desesperar esta etapa puede llegar a durar hasta unos 10 minutos en una conexión de internet, rápida.
Si usaron un CD, no se preocupen toma unos segundos.
Una vez terminado esto opriman Next hasta que termine la instalación.

¡Felicidades ya tienes el Cygwin instalado!

Instalación del arm gcc

El arm_gcc es el compilador de C que se utiliza para compilar los programas que se deseen descargar en la cmucam3. Les recomiendo que utilicen este compilador ya que pueden tener problemas al utilizar cualquier otro. Evítense dolores de cabeza. Descargar.

Instalación del Launch LPC210x

El LCP210x es el programa requerido para bajar a la cmucam los archivos hexadecimales generados por el compilador. Lo pueden obtener de aquí. A continuación les paso un tutorial de instalación y uso del programa.

Manual de Instalación y uso (*pps).

Arbol CC3 (Descargar)

Requieren bajar el arbol de archivos CC3. Este folder contiene los programas elementales para la camara. Es necesario que lo bajen y lo coloquen directamente en C:\, ya que de lo contrario pueden llegar a tener problemas. Mejor evítenselos y colóquenlo directamente en el C:\. Una vez que lo colocan. Accesen Cygwin. Tecleen cd c: para que los coloque en la raíz y con cd cc3 entraran al folder. Una vez que esten ahi adentro, tecleen make y presionen Enter. Si todo sale bien compilarán los archivos del folder y obtendran los archivos hexadecimales para poderlos bajar a la cmucam con ayuda del LPC210x.


Por lo pronto es todo,

cualquier queja o duda respecto al tutorial no duden en contactarme.





Robots y más robots




En los últimos años ha tenido mucho auge la famosa robocopa, este julio se llevará a cabo en Souzhou, China y no China, Nuevo León para que no se molesten en comprar su boleto de camión. Las especificaciones de cada una de las categoriás las pueden encontrar en la página oficial de la copa. Por lo pronto tengo como objetivo participar en la copa para el año 2009 y por lo mismo decidí abrir este blog y compartir muchos de los problemas y avances que me he topado a través de esta investigación. En este momento cuento con dos Robonovas y dos cmucam3, por lo mismo la mayor parte de la información compartida se enfocará a estos equipos. Si llegan a tener alguna duda sobre algún otro tipo de robot háganmela saber y haré lo que pueda para ayudarlos a que no se queden pelones. Este modelo de robot lo pueden conseguir en la página oficial de HiTec, o en miles de otros lugares. El dá de ayer me topé con uno de estos en ebay, costaba alrededor de trescientos dólares, el precio oficial de estos aparatos anda alrededor de los mil dólares. Lo que ven en la imagen de la derecha es precisamente el paquete que recibirán, no se esperen un robot armado y estén preparados a pasarse unas horas sentados poniendo miles de tornillos y cientos de cablecitos. El Robonova es un robot que está muy lejos de ser autónomo y por lo mismo es necesario estar listos para hacer más gastos y obtener sensores apropiados para poder interactuar con el medio. Dentro de las especificaciones de la liga de robots humanoides se establece que el robot debe de asemejarse a un ser humano, por lo tanto no se permiten sensores de ultrasonido, de calor, láser, etc. Todos aquellos receptores que tenga el robot deben de ser similares a cualquiera de los cinco sentidos del ser humano y deben ser colocados de acuerdo a la estructura humana, es decir si se le coloca una cámara al robot, ésta debe de ir en la parte superior del cuerpo y tener un rango de visión similar al de un humano. Por lo pronto los dejo, más tarde los pongo al tanto de los robots Nao que son los que reemplazaron a los AIBOS en la copa. Yo nunca fui fan de los AIBOS de SONY, siempre se me hicieron torpes, feos y caros; pero esta sustitución francesa busca crear competencias entretenidas y retadoras. Les dejo con la imagen del nao y espero en un futuro poderlos asistir en el desarrollo de software para estos monigotes europeos.


cmucam3

Este es el nuevo juguete desarrollado por Carnegie Mellon University, ha recibido muchos halagos por parte de la comunidad programadora. La cámara es una CMOS de Omnivision. Esta herramienta presenta grandes ventajas, por el hecho de tener un slot para tarjetas flash MMC. Versiones anteriores a esta han sido utilizadas en la competencia anual de robots humanoides, conocida como Robocup. El costo de la cmucam3 es de alrededor de 240 dólares. El único lugar que he encontrado hasta ahora que maneje esta cámara es Seattle Robotics.
El paquete solamente incluye la cámara, la tarjeta con el microcontrolador y el cable para la comunicación serial. La cmucam3 al igual que la cmucam2 cuenta con cuatro salidas para servo motores. La gran ventaja de esta nueva versión es la habilidad de poder portar el programa en la tarjeta flash, sin embargo las versiones anteriores a esta, también son buenas. Personalmente he tenido la oportunidad de trabajar con las últimas dos generaciones. Actualmente he tenido problemas con la programación de esta nueva versión, pero pronto haré un pequeño tutorial para que no se queden calvos por haber invertido 240 dolares en un aparato que aparentemente no responde.

Las especificaciones de la cámara son las siguientes:
  • 100% open source y programable con GCC
  • Resolución (352x288) RGB color.
  • Open source para el desarrollo tanto en Windows como Linux
  • MMC/SD flash slot con driver FAT16
  • Four-port servo controller
  • Image processing rate of 26 frames per second
  • Interpretador Lua para realizar prototipos de forma rápida.
  • Software para la compresión JPEG.
  • Librería para la manipulación básica de imágenes
  • B/W Salida análoga de video (PAL or NTSC)
  • FIFO buffer de imágenes
  • Wireless Mote interface de red inalámbrica (802.15.4)
  • virtual-cam para hacer prototipos en la PC
  • CMUcam3-Frame-Grabber para tomar imágenes y desplegarlas en la PC