lunes, 12 de septiembre de 2011

¿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.

Fuente: Bipedolandia

No hay comentarios: