viernes, 28 de septiembre de 2007

Webcam bajo linux

Como es de esperar , la visión de nuestro robot se hará mediante una camara web que captura el entorno para que más tarde sea player quien procese dicha imagen.


Para hacer las pruebas he cogido la mía, una logitech un poco reventada. He estado buscando por inet y he encontrado dos drivers distintos: el spca5xx y el gspca. La verdad es que no se aun la diferencia entre ambos. En un principio entendí que el spca5xx era mas moderno y lo instalé. Más tarde lei en otra pagina web que era al revés y entonces instalé el gspca. El caso es que ahora conviven los dos en mi lenny, por ahora sin problemas.

La forma de instalar spca5xx fue esta:

#apt-get install spca5xx-source

Se nos instalara en /usr/src, por tanto vamos a esa ruta, y lo descomprimos:

laos:/home/usuario# cd /usr/src/
laos:/usr/src# ls spca5xx-source.tar.bz2
laos:/usr/src# unp spca5xx-source.tar.bz2
modules/ modules/spca5xx/
modules/spca5xx/debian/
modules/spca5xx/debian/rules
modules/spca5xx/debian/control.modules.in
modules/spca5xx/debian/control
modules/spca5xx/debian/compat
modules/spca5xx/debian/copyright
modules/spca5xx/debian/changelog
modules/spca5xx/cutlog.py
modules/spca5xx/LICENSE
modules/spca5xx/CHANGELOG
modules/spca5xx/INSTALL
modules/spca5xx/drivers/
modules/spca5xx/drivers/usb/
modules/spca5xx/drivers/usb/spca500_init.h
modules/spca5xx/drivers/usb/spcaCompat.h
modules/spca5xx/drivers/usb/spca5xx.h
modules/spca5xx/drivers/usb/pac207.h
modules/spca5xx/drivers/usb/spcausb.h
modules/spca5xx/drivers/usb/sonix.h
modules/spca5xx/drivers/usb/tas5130c.h
modules/spca5xx/drivers/usb/cxlib.h
modules/spca5xx/drivers/usb/spca508_init.h
modules/spca5xx/drivers/usb/sp5xxfw2.h
modules/spca5xx/drivers/usb/spcadecoder.c
modules/spca5xx/drivers/usb/pb0330.h
modules/spca5xx/drivers/usb/cs2102.h
modules/spca5xx/drivers/usb/dummy_cam.h
modules/spca5xx/drivers/usb/spcadecoder.h
modules/spca5xx/drivers/usb/pas106b.h
modules/spca5xx/drivers/usb/cx11646.h
modules/spca5xx/drivers/usb/sn9cxxx.h
modules/spca5xx/drivers/usb/hdcs2020.h
modules/spca5xx/drivers/usb/spcagamma.h
modules/spca5xx/drivers/usb/hv7131b.h
modules/spca5xx/drivers/usb/hv7131c.h
modules/spca5xx/drivers/usb/spca500.dat
modules/spca5xx/drivers/usb/jpeg_header.h
modules/spca5xx/drivers/usb/spca501.dat
modules/spca5xx/drivers/usb/icm105a.h
modules/spca5xx/drivers/usb/spca501_init.h
modules/spca5xx/drivers/usb/jpeg_qtables.h
modules/spca5xx/drivers/usb/spca505.dat
modules/spca5xx/drivers/usb/spca505_init.h
modules/spca5xx/drivers/usb/spca508.dat
modules/spca5xx/drivers/usb/et61xx51.h
modules/spca5xx/drivers/usb/ov7630c.h
modules/spca5xx/drivers/usb/tv8532.h
modules/spca5xx/drivers/usb/zc3xx.h
modules/spca5xx/drivers/usb/spca506.h
modules/spca5xx/drivers/usb/spca561.h
modules/spca5xx/drivers/usb/mr97311.h
modules/spca5xx/drivers/usb/spca5xx.c
modules/spca5xx/drivers/usb/sp5xxfw2.dat
modules/spca5xx/README-TV8532
modules/spca5xx/README-SONIX
modules/spca5xx/Makefile
modules/spca5xx/README-KERNEL-UPTO-2.6.16
modules/spca5xx/RGB-YUV%2fmodule-setting
modules/spca5xx/README

Ahora lo tendremos en la carpeta modules, vamos a élla y lo compilamos:
laos:/usr/src# cd modules/spca5xx/

instalar el source del kernel:
laos:/usr/src/modules/spca5xx# apt-get install linux-source-2.6.21
laos:/usr/src/modules/spca5xx# apt-get install linux-tree-2.6.21
laos:/usr/src/modules/spca5xx# apt-get install linux-headers-2.6.21-2-all-i386

otros paquetes necesarios:
laos:/usr/src/modules/spca5xx# apt-get install gcc

make
make install
laos:/usr/src/modules/spca5xx# lsmod |grep spca5xx
spca5xx 658224 1
videodev 25952 2
spca5xx usbcore 123272 5 spca5xx,usbhid,ehci_hcd,uhci_hcd


Con esto ya conseguí que se viera la cámara perfectamente. Luego más tarde por un problema con una cámara intenté instalar el otro driver, el gspca. De la siguiente manera:

laos:/home/usuario# apt-get install module-assistant
laos:/home/usuario# apt-get install gspca-source
laos:/home/usuario# m-a prepare (abreviatura de module-assistant)
laos:/home/usuario# m-a a-i gspca
laos:/home/usuario# modprobe gspca
laos:/home/usuario# lsmod |grep spca5xx
spca5xx 658224 0
videodev 25952 3
gspca,zc0301,spca5xx usbcore 123272 9 gspca,usbhid,zc0301,snd_usb_audio,snd_usb_lib,spca5xx,ehci_hcd,uhci_hcd

Podemos ver como ahora carga los dos drivers y sigue yendo igual. Para probarla podeis usar cualquier programa que use la webcam o usad el camorama:

apt-get install camorama
camorama

Os pego una imagen de mi propio sistema operativo.

cámara funcionando.

sábado, 1 de septiembre de 2007

Mi proyecto

Como todo en la vida, las cosas tienen un principio, un desarrollo y un final. Mi carrera universitaria no iba a ser menos, a si es que me encuentro casi al final del trayecto. Para terminar necesito hacer el proyecto de fin de carrera. Para esto cuento con la inestimable ayuda de mi compañero de andadas (por lo menos en los ultimos 3 años), mi amigo victor.

Como Victor le da relativamente igual el proyecto a realizar, he decidido elegir yo por él. Quizás esto sea bastante peligroso, ya que es muy probable que nos metamos en un verdadero berengenal. Pero bueno creo que hemos salido de situaciones peores, o sea que esto no nos da miedo y seguro que sale adelante (Intento convencerme a mi mismo).

La idea es hacer un robot. Vaya tela ¿no?. La verdad es que hace tiempo hice uno bastante sencillo que se trataba de un sigue-lineas. Con un PIC 16F84 y unos cuantos sensores infrarrojos de corto alcance (CNY70) conseguí terminarlo y la verdad es que funcionaba bastante bien. Pero te das cuenta que no tiene muchas posibilidades un microcontrolador para crear un robot "semi-inteligente". La segunda toma de contacto queria que fuera con una fpga pero eso fue tan desastroso que ni lo cuento.Lo que pasa es que como los ingenieros, o los informaticos, o simplemente yo, siempre queremos superarnos he seguido investigando. Y creo que ya se el berengenal que voy a hacer.

La idea es crear un robot "inteligente". Lo de inteligente no se refiere a que sea einstein, ni nada parecido, me conformo con que tenga alguna conducta inteligente. En un principio lo hablé con un profesor de la universidad y pactamos algo tan simple como seguir a una persona dada. Ese es el objetivo aunque me gustaria sobrepasarlo.

El problema tiene dos partes diferenciadas, por un lado el montaje del robot (mecanicamente y electronicamnente) y por otro lado la programacion del mismo y la instauracion de inteligencia artificial. Lo que me lleva a no poder hablar solo con un departamento, sino que tendré que ir pidiendo ayuda de al menos dos. Aunque el departamento encargado seguramente será el de inteligencia artificial.

En la parte del montaje tengo un amigo que trabaja con metacrilato, por lo que en plan de retales creo que podré montarlo, aunque aun me queda hacer el diseño. Pero la verdad es que llevo un lio con que motores ponerle y como gestionarlos. Supongo que unos motores paso a paso para medir los cm que avanza y la gestion haré alguna placa. Por otro lado pondré una camara web para la vision del robot. ¿Qué camara? Aun no se. por ahora uso una logitech bastante antigua, aunque he leido que la websphere de logitech va bien.

Por el lado del software la idea es meterle un portatil entero con player/stage instalado que sea el que gestione todo y que interactue con el hardware. La verdad es que nunca he usado player/stage pero estoy viendo que no es dificil y da posibilidades. Creo que la IA se la daré a mi compi Victor y yo me dedicaré al montage y a la electronica.

No se como saldrá esto. Espero que dios reparta suerte y espero vuestros comentarios tambien.