Skip to main content

El software de código abierto está haciendo que programar un robot sea casi tan fácil como escribir una aplicación.

Hace tres décadas, la disponibilidad de muchas versiones de DOS ayudó a impulsar el auge de los ordenadores personales. Hoy en día, el Robot Operating System, o ROS, está preparado para hacer lo mismo con los robots. Morgan Quigley programó la primera versión de lo que se convertiría en ROS cuando era estudiante de posgrado en 2006, y hoy su código de código abierto está redefiniendo los límites prácticos de la robótica. Desde que se lanzó la versión 1.0 en 2010, ROS se ha convertido en el estándar de facto en software de robótica.

159.000
Número de robots industriales vendidos en 2012

Visitar la oficina de Quigley en la Open Source Robotics Foundation en Mountain View, California, la organización que cofundó el verano pasado para gestionar ROS, es entrar en un futuro de la robótica donde el hardware es barato y es rápido y fácil combinar piezas preexistentes para crear nuevas máquinas. El espacio de trabajo de Quigley está lleno de docenas de dedos mecánicos—módulos que forman una mano robótica. “Las manos en sí mismas pueden comunicarse con ROS”, dice Quigley. Su camiseta lleva impreso un chiste de programación: shirtcount++;

A diferencia de la tecnología robótica más convencional, la mano de cuatro dedos de Quigley no está controlada por un procesador central. Sus dedos y la palma reparten las tareas informáticas entre 14 procesadores de bajo coste y bajo consumo dedicados a controlar directamente cada articulación. Eso simplifica enormemente la comunicación y coordinación internas necesarias para ejecutar una tarea como coger un lápiz. Tanto el software como la electrónica son de código abierto. Cualquier constructor de robots puede tomar el diseño de Quigley y usarlo o mejorarlo.

En última instancia, Quigley espera que estas innovaciones lleven a robots más ágiles y capaces que puedan realizar una variedad de trabajos y que no cuesten decenas o cientos de miles de dólares. Y los ingenieros ya no tendrán que empezar desde cero para diseñar las funciones que van en un robot—dispondrán de una base de código y hardware de código abierto. Ya hay ingenieros que utilizan ROS para trabajar en robots que hacen desde doblar ropa hasta operaciones repetitivas en manufactura avanzada. “Permitirá aplicaciones que antes ni podíamos imaginar”, dice Quigley.

Golpe maestro
A diferencia de muchos niños de los años 80 y 90, Quigley no estaba fascinado por C-3PO de Star Wars ni por Star Trek: La nueva generación. En cambio, estaba hipnotizado por el mucho más mundano pero real ordenador Apple II de su escuela primaria. En clase, escribía comandos en el lenguaje Logo para mover una tortuga animada por la pantalla—el antecesor de la mascota de ROS. Pero no fue hasta 1998, cuando entró en la Universidad Brigham Young en Provo, Utah, que se encontró con robots. Le atraparon. “Los robots son el punto de encuentro entre la electrónica, el software y el mundo real”, dice. “Son la forma en que el software experimenta el mundo.”

Cuando llegó a Stanford para estudiar un posgrado en aprendizaje automático, Quigley se unió al laboratorio de Andrew Ng, donde los estudiantes colaboraban en el Stanford Artificial Intelligence Robot, o STAIR. Los robots industriales típicos ejecutan una única tarea bien definida en un entorno controlado, como una fábrica avanzada de automóviles. Ng, sin embargo, imaginaba un robot de propósito general que pudiera ejecutar tareas diversas en un entorno no controlado. El desafío emblemático de STAIR era conseguir que el robot respondiera de manera productiva a la petición “Tráeme una grapadora”. Para traer la grapadora, STAIR necesitaba entender la petición, navegar por pasillos y ascensores hasta una oficina, abrir la puerta, llegar al escritorio, identificar una grapadora entre otros objetos de tamaño similar, recogerla, devolverla y entregarla.

Como asistente de enseñanza de Ng, Quigley se dio cuenta de que la clase necesitaba un marco de software que pudiera integrar las contribuciones de varias docenas de estudiantes trabajando asincrónicamente sin provocar fallos en el robot cuando uno de sus programas fallara. ROS fue su solución: un sistema distribuido entre pares diseñado para conectar todos los recursos—tecnológicos y humanos—necesarios para hacer funcionar un robot.

En 2007, comenzó a colaborar con Willow Garage, una empresa de Silicon Valley que trabaja en robots y software de código abierto. Durante los dos años siguientes, Quigley supervisó la arquitectura de ROS mientras los programadores de Willow Garage ampliaban su trabajo inicial. Lanzado en 2010, ROS se convirtió rápidamente en el marco de software dominante para robótica.

A pesar de su nombre, ROS no es realmente un sistema operativo. Es un marco que mejora los sistemas operativos convencionales (teóricamente, cualquier SO; en la práctica, Linux). Proporciona módulos de software para realizar funciones comunes en robótica como planificación de movimiento, reconocimiento de objetos y manipulación física. Así que si quieres que un robot mapee su entorno, no tienes que escribir ese código; puedes simplemente enchufar el módulo de software de ROS. Como producto de código abierto que puede modificarse libremente, atrae a una comunidad de usuarios que constantemente mejora y amplía sus capacidades.

Cualquier número de módulos independientes puede ejecutarse al mismo tiempo. Los módulos pueden conectarse para pruebas, desconectarse para depuración y volver a integrarse sin desestabilizar la red en su conjunto. De este modo, ROS permite controlar un robot desde cualquier número de ordenadores ejecutando cualquier número de programas—un portátil enfocado en la navegación, un servidor realizando reconocimiento de imágenes, un teléfono Android emitiendo instrucciones de alto nivel. Todo ocurre en tiempo real mientras el robot deambula.

El golpe maestro en el diseño de Quigley no es estrictamente técnico sino social. Los miembros de la comunidad que producen una versión final pueden distribuirla ellos mismos, en lugar de tener que alojarla en servidores centrales. “Eso es muy importante para dar a la gente el crédito que merece y permitirles controlar sus contribuciones”, dice Quigley. “Su código no se pierde en esa bestia llamada ROS.”

Gran plan
La ambición de Quigley es hacer que ROS sea un punto de partida productivo para cualquier tipo de sistema robótico—grande o pequeño, caro o barato, académico o comercial, en red o autónomo.

Adaptar ROS para procesadores de bajo coste es fundamental si el software quiere desempeñar un papel clave en los diseños de nueva generación. Los procesadores baratos están volviéndose más capaces, lo que abre la oportunidad de llevar la inteligencia que antes se concentraba en procesadores de clase escritorio a las CPUs que gestionan ruedas, articulaciones y cámaras robóticas. Donde antes el reconocimiento de imágenes era función de un conjunto de servidores, pronto podría gestionarse dentro de la propia cámara.

Quigley también quiere que ROS, que fue diseñado para controlar un robot a la vez, se traslade a entornos que usen múltiples robots. Entornos como almacenes o plantas industriales se beneficiarían de escuadrones de robots operando de forma coordinada. Más allá de eso, no cuesta imaginar flotas de robots gestionadas en la nube: los usuarios podrían enviar comandos ROS a un centro de datos y de ahí a un autómata. “ROS podría conectarse a una base de conocimientos en línea”, dice Quigley, “de modo que si alguien dice, ‘Coge la grapadora de mi escritorio’, podría recuperar un modelo CAD de una grapadora desde la nube.”