ROS: ¿El nuevo estándar de facto en robótica?

ROS corre el riesgo de convertirse en el estándar de facto en el desarrollo de sistemas robóticos. Los chicos de Willow Garage no paran de sorprender a todo el mundo y convierten en oro todo lo que tocan. Lo genial de la historia es que la SpinOff de Stanford publica como software libre todo el código que desarrolla, están mas que abiertos a la colaboración y documenta todo de manera excelente realizando grandes esfuerzos de divulgación. Todo un ejemplo.

Sigo a este grupo desde hace un año (casi desde su nacimiento) y sinceramente, los admiro profundamente. Para el que no sepa que es esto de ROS, intentaré hacer una breve introducción (aunque es muy complicado porque tiene muchísimas cosas):

¿Qué es ROS?

El nombre de ROS viene de  “Robot Operative System” ROS puede clasificarse como un Framework de Desarrollo en Robótica (RSF) y ofrece herramientas y librerías para el desarrollo de sistemas robóticos. A pesar de su nombre, ROS no es  un sistema operativo propiamente dicho (de hecho funciona sobre linux), sino de una infraestructura de desarrollo, despliegue y ejecución de sistemas robóticos así como una gran federación de repositorios que  ofrecen paquetes con software  de todo tipo para robots. A diferencia de la mayoría de los RSFs existentes, ROS pretende dar una solución integral al problema de desarrollo de robots aportando soluciones a las áreas de:

  • Abstracción de Hardware (HAL) y reutilización e integración de robots y dispositivos encapsulando estos tras interfaces estables y manteniendo las diferencias en archivos de configuración.
  • Algoritmos de robótica con bajo acoplamiento: desde algoritmos de bajo nivel de control, cinemática, SLAM, etc. Hasta algoritmos de alto nivel como planificación o aprendizaje. También otros muchos mas específicos como: como lograr que el robot X coja un objeto o el robot Y se autoenchufe a la red eléctrica.
  • ROS provee de un mecanismo comunicaciones (middleware) distribuido entre nodos del sistema robótico. Un nodo es cualquier pieza de software del sistema (desde un algoritmo SLAM hasta un driver para el manejo de un motor). El objetivo de este sistema es doble: 1- encapsulado/abstracción/reutilización de software e 2- ubicuidad, es decir, independencia de donde este nodo está localizado (un sistema robótico puede tener muchos procesadores).  Estos nodos se comunican entre ellos mediante mecanismos de paso de mensajes RPC o Publish/Subscribe, Service lookup, etc. Permite crear arquitecturas P2P de componentes robóticos distribuidos.
  • Simulación de sistemas robóticos en mundos virtuales con dinámicas de sólidos rígidos.
  • Herramientas de desarrollo, despliegue y monitorización de sistemas robóticos.

Para darle algo de alegría al post, adjunto un vídeo con un poco de acción. Este es uno de las decenas de vídeos en youtube sobre ROS, trata sobre la herramienta de monitorización rviz, puede servir para que veáis un poco la esencia de ROS:

¿Qué ofrece respecto a otros RSFs?

Pocas cosas en ROS son auténticamente nuevas a nivel técnico, ROS parece estar inspirado en muchos otros RSFs existosos como Player/Stage/Gazebo, Yarp, Orocos, Carmen, Orca, OpenRave, Open-RTM (todos ellos OpenSource) e incluso en muchos aspectos se asemeja a tecnologías mas lejanas como JADE (Sistemas Multi-Agentes). Sin embargo, ROS ha logrado agrupar las muchas de las mejores características de todos estos proyectos dando una solución integral y muy uniforme al problema de desarrollo de sistemas robóticos. En se caracteriza por ser una plataforma multi-lenguaje (c++,python,octave,java), peer2peer, orientado a herramientas, ligero y OpenSource. En cualquier caso, en este post no me quiero centrar en los aspectos técnicos (a pesar de que se trata de una plataforma técnicamente genial).  Para conocer mas sobre ella mejor echarle un vistazo a su wiki http://www.ros.org/wiki o a este paper del ICRA 2009 (primer paper de ROS del que tengo noticia) que presenta una buena introducción:

http://pub1.willowgarage.com/~konolige/cs225B/docs/quigley-icra2009-ros.pdf

En cualquier caso, ROS destaca por su filosofía, su comunidad, en el COMO están siendo capaces de empatizar con la comunidad del software libre y el mundo universitario y de investigación.

¿Quienes están por detrás de todo esto?

Se trata de un proyecto de Software Libre con el apoyo de una empresa llamada Willow Garage. Sabemos por experiencia que el apoyo de empresas en proyectos de software libre fomenta la promoción del mismo,  dos ejemplos claros son Eclipse y  Ubuntu. Además WillowGarage es una SpinOff de Stanford y cuenta con el apoyo y contacto con grupos de investigación como STAIR y profesores reconocidos como Gary Bradsky (principal responsable del famoso proyecto de visión artificial OpenCV). Todos estos factores son una garantía, Stanford es una de las cunas de la informática y la robótica, allí han nacido empresas tan importantes como Apple o Google. En cualquier caso su uso y apoyo se está extendiendo fuera de estas fronteras, muchas universidades de todo el mundo están comenzando a desarrollar sus investigaciones con ROS, desde América a Japón, pasando por Europa. También a muchos, le sonará Brian Gerkey, uno de los principales responsables del proyecto Player(probablemente el RSF mas reconocido hasta la fecha), él actualmente forma parte del equipo de ROS, ahí lo dejo.

¿Cúal está siendo la clave de su éxito?

Son muchas las razones, pero desde mi punto de vista la clave de su éxito es su filosofía: científica, divulgativa, abierta e integradora.

  • Científica. Muchos de los paquetes mas importantes desarrollados van acompañados de artículos científicos. Además como ya he comentado, están respaldados por universidades, grupos de investigación e investigadores reconocidos.
  • Divulgativa. Se nota la influencia de jóvenes investigadores y desarrolladores de la generación web2.0 porque hacen uso de estos medios de forma masiva. ROS es un proyecto que puede considerarse una ametralladora de conocimiento: RSS, Vídeos en Youtube, Blogs, Wikis, Tweeters, Cursos online, etc. Todo lo que saben lo enseñan y lo comparten en Internet. En ocasiones es tanto lo que hacen y comparten que es difícil para una persona que no se dedique a la investigación seguir día a día sus progresos. Es sorprendente el volumen y la organización de la documentación, mas aún sabiendo que se trata uno de los clásicos puntos débiles de los proyectos de software libre.
  • Abierta. El software que hacen es libre, el software que utilizan es libre. La mayor parte de paquetes desarrollados ofrecen una rica documentación (una de las mayores lacras en el mundo del software libre), tutoriales, etc.
  • Integradora. Su filosofía es no reinventar la rueda. Sería insensato, mas en un área como la robótica donde es necesario una infraestructura basada en un sólido ecosistemas software. Exitosos proyectos de software libre de diversa índole son utilizados: cmake, Boost, Yaml, Opencv, Python, Ogre, Gazebo, Stage, etc. Además también reutiliza o es compatible parcialmente con otros RSFs como OpenRave, Player o YARP.

Conclusiones

En mi opinión en que nos encontramos en un momento de cambio, un punto de inflexión en la historia del desarrollo de robots. Una robótica mucho mas accesible por y para todos. Las posibilidades se multiplican. Una mina para la creatividad.

Por fin encontramos una plataforma de desarrollo robótica que ofrece el suficiente potencial, estabilidad y aceptación para el avance de la robótica a un ritmo mucho mayor. Creo que en los próximos años escucharemos hablar de ROS hasta en la sopa. Además, por fin, los informáticos vamos a encontrar el lugar en la robótica que nunca tuvimos.  Se reconocerá mas la labor del ingeniero informático. Una robótica donde las arquitecturas software, los sistemas distribuidos y la inteligencia artificial cobran vital importancia.

LLamada a la colaboración

Somos muchos los estamos interesados en el desarrollo de la robótica en el mundo del software libre. Somos muchos los que queremos aprender robótica compartiendo el conocimiento, entre todos y sin miedo. En el Departamento de Arquitectura y Tecnología de Computadores de la E.T.S.I. Informática de Sevilla estamos empezando a apostar por esta plataforma y queremos promover su uso. Se ha creado un grupo de alumnos internos dedicado a la robótica y la experiencia está siendo muy positiva. Aquellos que estén interesados en compartir, charlar y aprender pueden ponerse en contacto con nosotros.

Otro buen punto de contacto, son las asociaciones de la escuela, están abiertas para gente de dentro y fuera de la escuela, asociaciones como el Simulation Student Chapter, grupo de robótica del club .NET, IEEE o Sugus son lugares excelentes para crear comunidad. En concreto estoy interesado personalmente en dar un impulso a los dos primeros grupos (a los que pertenezco) en las próximas semanas para fomentar y promover la creación de comunidad alrededor de estas tecnologías, ya veremos como va la cosa🙂. En cualquier caso, sed todos bienvenidos, estamos en contacto.

9 Responses to ROS: ¿El nuevo estándar de facto en robótica?

  1. walter dice:

    Interesante reportaje y aplicación para robótica

  2. geus dice:

    Gracias. La verdad es que es una gran tecnología. Si estás interesado en discutir sobre esta tecnología robótica (y otras) en castellano quizás te interese el grupo dotnet-robotics-sevilla: http://groups.google.es/group/dotnetclub-sevilla-robotica?lnk=srg&hl=en&ie=UTF-8&pli=1

    Es un nuevo grupo de estudiantes interesados en la robótica en general y en el software para robótica en particular. No hay ningún tema abierto sobre ROS pero no dudes en plantear tus inquietudes en la lista.🙂

    Saludos.

  3. Pingback: ROS: Como instalar y utilizar un paquete de un repositorio federado « GeuS' Blog: Robotics, Computer Science and More

  4. Pingback: Desarrollo en ROS con Eclipse « GeuS' Blog: Robotics, Computer Science and More

  5. Cristian dice:

    Muy interesante post. Me gustaría estar en contacto con Uds para aprender más acerca de ROS y poder desarrollar sistemas robóticos basados en el.

  6. geus dice:

    Cualquier idea, sugerencia que puedas aportar es bienvenida!
    Saludos y ánimo con el estudio de esta tecnología!🙂

  7. Que tal bastante interesante ROS, que me recomendarías para empezar a programar con ROS? Saludos.

    • Muy sencillo. Ir a http://ros.org y comenzar con los tutoriales.
      Saludos!!

      • Ok si ya comencé a leer y apenas los encontré jejeje, gracias por la info bastante útil ojalá y sigan poniendo más temas acerca de ROS, Saludos Pablo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: