Difference between revisions of "Isidoro-TFM-Rovio02"

From robotica.unileon.es
Jump to: navigation, search
m
Line 1: Line 1:
 
[[Imagen:rovio_robot.jpg|thumb|right|200px|Rovio, la cámara web móvil.]]
 
[[Imagen:rovio_robot.jpg|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 firma [[http://www.wowwee.com/en/support/rovio 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, ya que el procesador de ROVIO no tiene potencia suficiente para soportar la carga computacional que exige el uso de esta biblioteca. Como sistema operativo de base para el desarrollo de esta aplicación se utilizará GNU/Linux, en concreto la distribución [[http://www.ubuntu.com/ Ubuntu]].
+
El trabajo que aquí se va a presentar trata sobre la aplicación del robot ROVIO de la empresa [http://www.wowwee.com/en/support/rovio Wowwee Technologies] a tareas de vigilancia. Para ello se utilizará la biblioteca de visión artificial [http://es.wikipedia.org/wiki/OpenCV ''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á [http://es.wikipedia.org/wiki/GNU/Linux GNU/Linux], en concreto la distribución [http://www.ubuntu.com/ Ubuntu]. La aplicación será desarrollada enteramente en [http://es.wikipedia.org/wiki/C_%28lenguaje_de_programaci%C3%B3n%29 lenguaje C].
  
 
== Introducción ==
 
== Introducción ==
Line 13: Line 13:
 
=== Instalación de la biblioteca ===
 
=== 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:
+
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>
 
<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.
+
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 [http://opencv.willowgarage.com/wiki/InstallGuide WillowGarage]
  
 
=== Operaciones básicas ===
 
=== Operaciones básicas ===
Line 42: Line 42:
 
    
 
    
 
/* inicializa fuente y aplica texto */
 
/* inicializa fuente y aplica texto */
CvFont font;
+
CvFont fuente;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 1, CV_AA);
+
cvInitFont(&fuente, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 1, CV_AA);
cvPutText(img, "Hola Mundo!", cvPoint(10, 130), &font, cvScalar(0, 0, 0, 0));
+
cvPutText(img, "Hola Mundo!", cvPoint(10, 130), &fuente, cvScalar(0, 0, 0, 0));
 
/* muestra la imagen */
 
/* muestra la imagen */
 
cvNamedWindow("imagen", CV_WINDOW_AUTOSIZE);
 
cvNamedWindow("imagen", CV_WINDOW_AUTOSIZE);
Line 54: Line 54:
 
}</geshi>
 
}</geshi>
  
Si guardamos este código con el nombre ''ejemplo.c'' y lo compilamos con g++ de la forma:
+
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 ejemplo ejemplo.c -Wall -I /usr/include/opencv -L /usr/lib -lm -lhighgui</geshi>
+
<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 ejecutamos mediante la orden
+
deberíamos poder obtener un fichero que ejecutaríamos mediante la orden
  
<geshi lang=Bash lines=0>~$./ejemplo mi-imagen.jpg</geshi>
+
<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 ===
 
=== Seguimiento de colores ===
  
Line 72: Line 73:
  
 
=== Anexo B: Comandos de control de ROVIO(?) ===
 
=== Anexo B: Comandos de control de ROVIO(?) ===
 +
 +
Pendiente de redacción
 +
 +
=== Anexo C: Hardware de ROVIO(?) ===
  
 
Pendiente de redacción
 
Pendiente de redacción

Revision as of 13:52, 6 March 2011

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