Isidoro-TFM-Rovio02

From robotica.unileon.es
Revision as of 13:24, 2 December 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 Lucid. La aplicación será desarrollada enteramente en lenguaje C.

Introducción

Pendiente de redacción...

OpenCV

Si se desea profundizar en OpenCV hay varias fuentes de donde obtener información. Una de ellas es el libro Learning OpenCV: Computer Vision with the OpenCV Library escrito por Gary Bradski y Adrian Kaehler y publicado por la editorial O'Really. En la página web de OpenCV, WillowGarage, también existe abundante información para quienes no dispongan del libro en cuestión. Y en la Red hay numerosa información relacionada con el uso de la biblioteca, que si bien puede estar más o menos desperdigada, también supone una buena fuente de consulta. Por último, los ejemplos que se incluyen en la biblioteca también son una fuente de informacación utilísima. En el desarrollo de este trabajo se han utilizado todas estas fuentes en mayor o menor medida más.

Segmentación de imagen

El procesamiento de imagen digital suele comprender varios pasos intermedios antes de tener una imagen útil con la que el robot pueda realizar algún tipo de acción. Este procesamiento es necesario porque la cantidad de información proviniente de una imagen tomada desde una cámara es enorme y significaría una carga en la cpu de nuestro robot innecesaria ( seguir leyendo).

Anexos

Anexo A: Configuración de ROVIO

Pendiente de redacción

Anexo B: Comandos de control de ROVIO(?)

Pendiente de redacción

Anexo C: ROVIO por dentro

Los datos que se muestran a continuación no están basados en ninguna especificación oficial porque no hay ninguna publicada, si no que están recogidos y ordenados de varios sitios web dedicados a ROVIO o a temas relacionados con él, principalmente de Device Guru y RoboComunity. Se añaden al cuerpo del trabajo como anexo porque se considera que podrían ser interesantes de cara a una potencial y futura modificación o hackeo de ROVIO, de manera que su manejo y configuración se pueda realizar de forma completamente independiente de la plataforma software que se utilice.

  • Procesador principal - Marvell "PXA270M"
  • Frecuencia de Reloj - Hay un cristal de 24 Mhz, aunque se puede ver uno de 12 en algunos modelos.
  • Memoria Principal - 8MB RAM; 2MB flash.
  • Hay al menos dos puertos serie (UARTs) en el robot, el /dev/ser0 que se usa como puerto "NS" para comunicar el sub-sistema North Star, y el /dev/ser1 que parece manejar los comandos "MCU" para el control del motor. Envía los datos a la placa de motores en el cuerpo principal del robot.
  • El puerto USB del robot se puede usar de dos formas diferentes. Si se conecta el USB al ordenador antes de encender el robot, los 2Mb de memoria flash aparecerán como un volumen de disco sin formatear. Este método es peligroso pues podría dejar al robot totalmente inservible si se procediese al formateo. En el segundo caso, si se conecta el USB después de que se enciende el robot, el puerto proporciona una conexión serie que es necesaria par la conficuración inicial de ROVIO.
  • El procesador ARM ejecuta el servidor web, controla la webcam, el flujo de audio y vídeo (flujo multimedia) y realiza el control general del robot. Ejecuta el sistema operativo de fuente-abierta "eCOS". El servidor del flujo multimedia está basado en una variante del servidor de flujo "Spook". Utiliza el protocolo "RTSP" para enviar el audio y vídeo desde la cámara web y micrófono de ROVIO a nuestro ordenador. El envío del audio desde el ordenador al ROVIO (para ser reproducido en el altavoz del robot) se realiza mediante un método propietario (ver GetAudio.cgi en el API del robot).
  • Las características WiFi están basadas en la biblioteca "Libertas" de Marvell. Se conecta a características WiFi especiales del procesador ARM Marvell. Estás características son muy hackeables/modificables en el programa principal. Se puede aceder a la memoria RAM directamente usando URLs especiales.
  • En estos momentos, WowWee no ha publicado ningún material open-source o de fuente-abierta, de manera que el hackeo o modificaciones del robot requiere una cosiderable cantidad de ingeniería inversa.
  • La programación de alto nivel del robot es posible utilizando URLs especiales bien desde una aplicación independiente del navegador o bien desde dentro de una página web mediante JavaScript. WowWee ha publicado especificaciones para la mayor parte de las URLs posibles. Las especificaciones del API se pueden encontrar en la página web de WowWee Techonologies. Existe un duplicado de las mismas en RoboCommunity.
  • Dentro de ROVIO (en el segmento superior del cuello, justo detrás de la cámara web) está el detector NorthStar que forma parte del sistema TrueTrack(tm) para localizar al robot en una habitación respecto de un faro (o punto fijo). Es un módulo separado que tiene su propio procesador digital de señal como cerebro. Se conecta a la CPU principal mediante un puerto serie. Se puede leer más sobre NorthStar aquí http://www.evolution.com/products/northstar/. Se puede encontrar información relacionada con modificaciones en el sistema TrueTrack(tm) en este enlace http://www.thingiverse.com/thing:7101.
  • La cámara web usada en el ROVIO es una OV7670 de la firma OmniVision, aunque hay que decir que el firmware incluido en el robot puede controlar otros modelos.
  • El códec de audio y el controlador del altavoz están basados en el integrado WM8976, fabricado por Wolfson Microelectronics. Se puede acceder sin problemas a su hoja de características a través de una búsqueda en internet, ya que en su página web parece no encontrarse disponible.
  • Un integrado marcado como 8051uC (WinBond W99100DG) parece proporcionar cierto control periférico pero los detalles están pendientes de conformación.
  • En la página web de RoboCommunity se encuentran publicados los ficheros fuente del código interno de ROVIO. Estas fuentes han sido publicadas recientemente por WowWee Technologies y permiten modificar y reprogramar parcialmente el comportamiento de ROVIO. En este hilo del foro de RoboCommunity se puede encontrar información relacionada con el sistema operativo eCos y el código fuente de ROVIO para este sistema.
  • Finalmente, se comenta que existe un envoltorio (wrapper) para poder operar/interactuar con ROVIO mediante el sistema operativo ROS.

Referencias(?)

Pendiente de redacción

Enlaces Externos(?)

Pendiente de redacción