Capítulo 1 INTRODUCCIÓN La palabra robot es de origen Checo y significa trabajo. Fue aplicada por primera vez a las máquinas en los años 1920. Sin embargo, existían máquinas autónomas mucho antes de que se acuñara el término robot. Aquellos robots primitivos eran enteramente movidos por complejos engranajes y palancas. En la actualidad, los robots comerciales e industriales son ampliamente utilizados, y realizan tareas de forma más exacta o más barata que los humanos. También se les utiliza en trabajos demasiado sucios, peligrosos o tediosos para los humanos. Los robots son muy utilizados en plantas de manufactura, montaje y embalaje, en transporte, en exploraciones en la Tierra y en el espacio, cirugía, armamento, investigación en laboratorios y en la producción en masa de bienes industriales o de consumo. Los robots pueden ser clasificados de muchas maneras: en función de sus objetivos de diseño, su inteligencia, el control que se puede ejercer sobre ellos o el lenguaje de programación con el que se los programa. Casi todas las definiciones y clasificaciones existentes responden a los robots industriales, que son los más ampliamente utilizados. Los robots de servicio se encuentran todavía en una etapa temprana y aún falta mucho para que alcancen el desarrollo de los robots industriales. Según la IFR 1, un robot de servicio es un robot que opera de forma parcial o totalmente autónoma, para realizar servicios útiles para el bienestar de los humanos y del equipamiento, excluyendo operaciones de manufactura. La forma más básica de interpretar esta definición, es que cualquier robot que no se use en operaciones de manufactura o fabricación, es un robot de servicios. 1 International Federation of Robotics. 8
La IFR realiza la siguiente clasificación en cuanto a robots de servicios se refiere: Aplicaciones de servicio a humanos (personal, asistencia, protección, entretenimiento, etc.) Aplicaciones de servicio a equipos (mantenimiento, reparación, limpieza, etc.) Otras funciones autónomas (vigilancia, transporte, adquisición de datos, inspección, etc.) 1.1 MOTIVACIÓN DEL PROYECTO La posibilidad de trabajar con un elemento como un robot móvil que dispone de una cámara para la toma de imágenes se ha considerado muy interesante y novedoso. A diferencia de otros proyectos más teóricos, este presenta una faceta muy marcada de aplicación directa. Trabajar en un campo tan atractivo y de tanta proyección como la robótica en el hogar ha tenido también un peso importante en la decisión de acometer este proyecto. La posibilidad de diseñar y desarrollar una aplicación software para un sistema real y poder comprobar su funcionamiento ha sido uno de los mayores atractivos que presentaba la ejecución de este trabajo. 1.2 OBJETIVOS DEL PROYECTO Este proyecto pretende la creación de una aplicación software para el control del robot ROVIO, Figura 1-1. Esta aplicación de control facilitará posteriormente la integración del robot en una arquitectura de red UPnP 2. 2 Universal Plug and Play. 9
En la realización de este trabajo se persigue explorar e investigar las capacidades de este robot comercial y su uso como elemento dentro de una red domótica UPnP. Figura 1-1: Robot ROVIO ROVIO es un robot móvil de entretenimiento del fabricante WowWee [1]. Es controlado mediante una interfaz WiFi 3 y dispone de una cámara web con la se pueden obtener imágenes. Su interfaz de control comercial es ofrecida mediante un servidor web que incorpora, al que se accede mediante un navegador web. 1.3 RECURSOS/HERRAMIENTAS EMPLEADAS Para la programación de la aplicación de control se ha utilizado como entorno de desarrollo Microsoft Visual C# 2010 Express [2]. Este entorno es gratuito y ofrece múltiples ventajas que facilitan la tarea de programar utilizando, como es evidente, el lenguaje C#. Microsoft Visual C# 2010 Express es una de las múltiples herramientas que se enmarcan dentro de la plataforma de Microsoft.NET Framework. Una de las grandes ventajas que aporta el uso de tecnologías.net es la gran cantidad de 3 ROVIO soporta los estándares IEEE 802.11b y IEEE 802.11g. 10
documentación disponible en la red, especialmente en MSDN 4, donde conseguir información de uso, guías de buenas prácticas, tutoriales y referencias sobre todo lo que conforma este amplio grupo de tecnologías. El lenguaje de programación C#, desarrollado por Microsoft, es un lenguaje simple, moderno, orientado a objetos y con un sistema de tipos seguro derivado de C y C++. C# combina la alta productividad de Microsoft Visual Basic y la eficiencia bruta de C++. También se ha hecho uso de un conjunto de herramientas desarrollas por Intel que proporcionan soporte y ayuda en la creación de sistemas y dispositivos conformes al estándar UPnP. Principalmente estas herramientas facilitarán al desarrollador las fases de planificación, investigación, desarrollo y pruebas del proyecto enmarcado en una red UPnP. 1.4 TRABAJOS EXISTENTES RELACIONADOS Gracias a las características y a las muchas posibilidades de un robot como ROVIO se han encontrado múltiples trabajos que lo utilizan de diversas formas. En algunos de estos trabajos ROVIO es el elemento principal de estudio pero en otros es simplemente un soporte adecuado que permite el desarrollo de otras investigaciones y técnicas. A continuación se mencionan aquellos que se han considerado especialmente interesantes o de mayor relación con el presente proyecto: Uso de ROVIO como plataforma para instalar una agente de reconocimiento, llamada Cassie, que permite una comunicación verbal así como un comportamiento interactivo con el robot [4]. Este artículo habla sobre la tendencia de las interfaces a ser más amigables y 4 Microsoft Development Network, centro de recursos de las tecnologías.net [3]. 11
naturales, así como un comportamiento más humano por parte de los sistemas artificiales. Uso de ROVIO para mapear una región del espacio utilizando su cámara incorporada [5]. El objetivo final pretendido es implementar SLAM 5 aunque finalmente se centran en identificar unas marcas de posición concretas, unos conos naranjas introducidos en el entorno (Figura 1-2). Se utilizan las librerías OpenSURF [6] para detectar características y elementos en las imágenes captadas por el robot. Figura 1-2: Trabajos relacionados. Rovio Visual Mapper Uso de ROVIO para mapear una región del espacio haciendo uso de su cámara y un puntero láser (Figura 1-3) incorporado al robot [7]. En este proyecto se añade un elemento adicional para conseguir crear mapas del entorno. Se aplican algoritmos de localización, técnicas de aprendizaje supervisado y modelos estadísticos para el tratamiento de errores. Figura 1-3: Trabajos relacionados. Rovio Augmented Vision Mapping 5 Simultaneous Localization And Mapping. 12
Implementación en Python 6 de la API de ROVIO [9]. El resultado, denominado por los autores PyRovio, es usado en la línea de dotar a los robots de competencias cognitivas haciendo uso de la arquitectura MGLAIR 7. Uso de ROVIO para la localización e identificación de un objeto concreto, un barril de cerveza [10]. En este trabajo se implementan los algoritmos de movimiento y de análisis de imagen (Figura 1-4) haciendo uso de las librerías OpenCV [11]. Se pretende que el robot sea capaz de identificar el pequeño barril de forma autónoma en un entorno desconocido pero con una dirección de movimiento reconocible, típicamente un pasillo. Figura 1-4: Trabajos relacionados. Thirsty Rovio 1.5 ESTRUCTURA DE LA MEMORIA Este proyecto está organizado en los siguientes capítulos: Capítulo 2: Descripción de ROVIO y su API. En este capítulo se describen en detalle las características del robot. Se proporciona una lista completa de las funciones implementadas en la API publicada por el fabricante y se describen aquellas relevantes para la aplicación desarrollada. Capítulo 3: Tecnología UPnP. En este capítulo se proporciona una descripción de la tecnología UPnP y su funcionamiento. 6 Lenguaje de programación [8]. 7 Modal Grounded Layered Architecture for Integrated Reasoning. 13
Capítulo 4: Aplicación de control desarrollada. En este capítulo se describe la aplicación software desarrollada, en el lenguaje de programación C#, para el control del robot. Capítulo 5 Dispositivo UPnP. Se presenta el diseño, implementación y puesta en funcionamiento de la aplicación 8 conforme a la arquitectura de red UPnP. Capítulo 6: Conclusiones y líneas futuras. Capítulo dónde se recapitula y se realiza una crítica al proyecto realizado. También se tratan las distintas posibilidades y futuros desarrollos en relación a los campos que este proyecto recoge. Capítulo 7: Bibliografía y referencias. Apartado que recoge las referencias bibliográficas y los recursos utilizados. 8 El concepto aplicación es llamado dispositivo en términos UPnP. 14