Isidoro-TFM-Rovio02

From robotica.unileon.es
Revision as of 13:52, 6 March 2011 by Anonymous (talk)

Jump to: navigation, search

thumb|right|200px|Rovio, la cámara web móvil.

El trabajo que aquí se va a presentar trata sobre la aplicación del robot ROVIO de la empresa Wowwee Technologies a tareas de vigilancia. Para ello se utilizará la biblioteca de visión artificial OpenCV, que será la encargada de procesar la información proviniente de la cámara wifi de ROVIO en un ordenador portátil. Como sistema operativo de base para el desarrollo de esta aplicación se utilizará GNU/Linux, en concreto la distribución Ubuntu. La aplicación será desarrollada enteramente en lenguaje C.

Introducción

Pendiente de redacción...

OpenCV

Pendiente de redaccción...

Instalación de la biblioteca

Para realizar la instalación de cualquier paquete lo más cómodo suele ser utilizar una interfaz gráfica. Los usuarios de Ubuntu pueden usar Synaptic (Sistema/Administración/Gestor de paquetes Synaptic) que es la interfaz gráfica por defecto en estos momentos, aunque también se puede instalar desde la línea de comandos de un terminal:

<geshi lang=Bash lines=0>~$ sudo aptitude install libcv4 libhighgui4 libcvaux4 libcv-dev libhighgui-dev libcvaux-dev opencv-doc</geshi>

Los tres primeros paquetes corresponden a la biblioteca propiamente dicha, por tanto son imprescindibles. Los tres siguientes con el sufijo -dev son los ficheros de desarrollo que también los necesitaremos si queremos desarrollar aplicaciones con esta biblioteca. El último paquete contiene programas de ejemplo y documentación sobre OpenCV y aunque no es imprescidible para trabajar, sí que es recomendable como fuente de consulta. Si se quiere contar con la última versión de las bibliotecas se puede realizar una instalación manual de las mismas siguiendo el proceso descrito para tal fin en WillowGarage

Operaciones básicas

Pendiente de redacción

Prueba de colores en código

<geshi lang=C lines=0>#include <stdio.h>

  1. include "cv.h"
  2. include "highgui.h"

int main(int argc, char* argv[]) { if(argc<2){

   printf("Uso: cv_texto <nombre-de-imagen>\n\7");
   exit(0);
   }

IplImage *img = cvLoadImage(argv[1]);

 if(!img){
   printf("No puedo cargar la imagen: %s\n",argv[1]);
   exit(0);
 }
 

/* inicializa fuente y aplica texto */ CvFont fuente; cvInitFont(&fuente, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 1, CV_AA); cvPutText(img, "Hola Mundo!", cvPoint(10, 130), &fuente, cvScalar(0, 0, 0, 0)); /* muestra la imagen */ cvNamedWindow("imagen", CV_WINDOW_AUTOSIZE); cvShowImage("imagen", img); cvWaitKey(0); cvDestroyWindow("imagen"); cvReleaseImage( &img ); return 0; }</geshi>

Si guardamos este código con el nombre cv_texto.c y lo compilamos con g++ de la forma:

<geshi lang=Bash lines=0>~$ g++ -o cv_texto cv_texto.c -Wall -I /usr/include/opencv -L /usr/lib -lm -lhighgui</geshi>

deberíamos poder obtener un fichero que ejecutaríamos mediante la orden

<geshi lang=Bash lines=0>~$./cv_texto mi-imagen.jpg</geshi>

siendo mi-imagen.jpg el nombre del fichero con la imagen que queremos mostrar. OpenCV también soporta formatos de imagen del tipo BMP, PNG, PGM y TIFF entre otros.

Seguimiento de colores

Pendiente de redacción

Anexos

Anexo A: Configuración de ROVIO

Pendiente de redacción

Anexo B: Comandos de control de ROVIO(?)

Pendiente de redacción

Anexo C: Hardware de ROVIO(?)

Pendiente de redacción