CapÃtulo 1 : Sistema operativo del robot
El sistema operativo robot, a veces conocido como ROS o ros, es un conjunto de middleware de código abierto para la informática robótica. A pesar de que ROS no es un sistema operativo (SO), sino más bien una colección de marcos de software para el desarrollo de software de robots, ofrece servicios que están destinados a un clúster de computadoras heterogéneo. Estos servicios incluyen la abstracción de hardware, el control de dispositivos de bajo nivel, la implementación de la funcionalidad que se usa comúnmente, el paso de mensajes entre procesos y la administración de paquetes. La arquitectura de grafos se utiliza para representar conjuntos en ejecución de procesos basados en ROS. El procesamiento se produce en nodos que pueden recibir, publicar y multiplexar datos de sensores, control, estado, planificación, actuador y otras señales. La arquitectura de grafos también se utiliza para representar la arquitectura de la red. ROS no es un sistema operativo en tiempo real (RTOS), a pesar de que la reactividad y la baja latencia son extremadamente importantes en el contexto del sistema de control de robots. Sin embargo, es factible incorporar ROS con código que se utiliza para la computación en tiempo real. La ausencia de soporte para sistemas en tiempo real se ha abordado mediante el desarrollo de ROS 2, que es una actualización significativa de la interfaz de programación de aplicaciones (API) de ROS. ROS 2 hará uso de bibliotecas y tecnologías contemporáneas para tareas básicas de ROS, y también agregará soporte para código de aplicaciones en tiempo real y hardware de sistema integrado.
El software del Ecosistema ROS se puede dividir en tres categorías, que son las siguientes:
Como resultado de ser proporcionadas bajo las reglas de la licencia BSD, las herramientas independientes del lenguaje, así como las bibliotecas cliente principales (C++, Python y Lisp) son software de código abierto que es de uso gratuito tanto en entornos comerciales como de investigación. La gran mayoría de los otros paquetes están licenciados bajo una serie de diferentes licencias de código abierto. Estos paquetes adicionales son responsables de la implementación de características y aplicaciones que se utilizan a menudo. Estos incluyen controladores de hardware, modelos de robots, tipos de datos, planificación, percepción, localización y mapeo simultáneos (SLAM), herramientas de simulación y varios algoritmos.
Las bibliotecas cliente principales de ROS están diseñadas para trabajar con un sistema similar a Unix. Esto se debe principalmente al hecho de que dependen de conjuntos completos de aplicaciones de software de código abierto. La distribución de Ubuntu Linux se denomina "Compatible" para ciertas bibliotecas cliente, mientras que otros sistemas operativos, como Fedora Linux, macOS y Microsoft Windows, se denominan "experimentales" y cuentan con el apoyo de la comunidad. Ahora se pueden crear aplicaciones basadas en ROS para el sistema operativo Android gracias a la biblioteca cliente nativa de Java ROS conocida como rosjava. Esta biblioteca no comparte estas restricciones con otras bibliotecas cliente de ROS. Además, rosjava ha hecho posible que ROS se incorpore a una caja de herramientas de MATLAB con soporte oficial. Esta caja de herramientas es compatible con Linux, macOS y Microsoft Windows. Además, se ha desarrollado una biblioteca cliente de JavaScript conocida como roslibjs. Esta librería permite incorporar aplicaciones a un sistema ROS mediante el uso de cualquier navegador web que sea coherente con los estándares.
La Universidad de Stanford fue el lugar donde los componentes iniciales de lo que más tarde se convertiría en ROS comenzaron a unirse en algún momento antes de 2007. En ese momento, el Programa de Robótica Personal estaba dirigido por Eric Berger y Keenan Wyrobek, ambos estudiantes de doctorado en la Universidad de Stanford y trabajaban en el laboratorio de robótica de Kenneth Salisbury. Mientras trabajaban en robots para realizar tareas de manipulación en entornos humanos, los dos estudiantes notaron que muchos de sus colegas se veían obstaculizados por la naturaleza diversa de la robótica. Por ejemplo, es posible que un excelente desarrollador de software no tenga el conocimiento necesario de hardware, y que alguien que esté desarrollando una planificación de rutas de última generación no sepa cómo realizar la visión artificial necesaria. En un esfuerzo por encontrar una solución a este problema, los dos estudiantes decidieron crear un sistema de referencia que sirviera como base sobre la cual otros académicos pudieran construir sus propios sistemas. Según Eric Berger, "algo que no apestaba, en todas esas diferentes dimensiones" resume bien la situación.
Las dos personas dieron sus primeros pasos hacia este sistema unificador al construir el PR1 como un prototipo de hardware y luego comenzar a trabajar en software basado en él. Lo hicieron tomando prestadas las mejores prácticas de otros marcos de software robótico de código abierto, en particular el patio de maniobras, que era un sistema en el que Morgan Quigley, otro estudiante de doctorado de Stanford, había estado trabajando en apoyo del Robot de Inteligencia Artificial de Stanford (STAIR) por el Laboratorio de Inteligencia Artificial de Stanford. La financiación inicial por un monto de cincuenta mil dólares de los Estados Unidos fue proporcionada por Joanna Hoffman y Alain Rossmann, lo que facilitó la creación del PR1. Mientras buscaban fondos para un mayor desarrollo, Eric Berger y Keenan Wyrobek se encontraron con Scott Hassan, el fundador de Willow Garage, una incubadora de tecnología que estaba trabajando en un SUV autónomo y un barco autónomo solar. Ambos proyectos estaban en proceso de desarrollo. Hassan compartió el concepto que Berger y Wyrobek tenían de un "Linux para robótica", quien les extendió una invitación para que aceptaran un empleo en Willow Garage. Willow Garage se estableció en enero de 2007, y el 7 de noviembre del mismo año, se realizó la primera confirmación de código ROS en SourceForge.
Como seguimiento del PR1, Willow Garage comenzó a trabajar en el robot PR2, y se pretendía que ROS fuera el software que se utilizaría para operarlo. Se desarrolló un número cada vez mayor de paquetes que se integraron con ROS para establecer un ecosistema de software más grande con contribuciones de más de veinte instituciones diferentes. Estas contribuciones incluían tanto el software principal como el creciente número de paquetes. Debido al hecho de que individuos de fuera de Willow estaban contribuyendo a ROS, particularmente desde el proyecto STAIR de Stanford, ROS fue diseñado desde el principio para ser una plataforma que pudiera soportar varios robots. Aunque Willow Garage había estado trabajando en otros proyectos en el pasado, esos proyectos fueron abandonados en favor del Programa de Robótica Personal. El objetivo principal del programa era desarrollar el PR2 como una plataforma de investigación para instituciones académicas y ROS como una pila de robótica de código abierto que serviría como base tanto para la investigación académica como para las nuevas empresas tecnológicas. Esto fue similar a cómo la pila LAMP sirvió como base para las nuevas empresas basadas en la web.
El primero de los tres hitos internos de Willow Garage se logró en diciembre de 2008, y consistió en una navegación continua para el PR2 durante un período de dos días y una distancia de pi kilómetros. Poco después, se puso a disposición del público una primera versión de ROS, conocida como 0.4 Mango Tango. A esto le siguió la documentación inicial de RVIZ y el documento inicial sobre ROS. El segundo hito interno se logró a principios del verano, que fue que el PR2 pudo navegar por el lugar de trabajo, abrir puertas y enchufarse simultáneamente. El lanzamiento del sitio web de ROS.org se produjo inmediatamente después de este evento, que tuvo lugar en agosto. Cuando se lanzó ROS 1.0 en enero de 2010, las primeras lecciones sobre el sistema operativo se publicaron en diciembre, en preparación para su lanzamiento. Fue el tercer hito, que consistió en desarrollar una gran cantidad de documentación y tutoriales de las tremendas capacidades que los ingenieros de Willow Garage habían producido en el transcurso de los tres años anteriores.
Gracias a ello, Willow Garage pudo cumplir uno de sus objetivos a largo plazo, que era donar diez robots PR2 a prestigiosas instituciones de educación superior. Desde el principio, este había sido uno de los principales objetivos de los creadores, ya que creían que el PR2 tenía el potencial de iniciar la investigación robótica en todo el mundo. Acabaron otorgando once PR2 a diferentes instituciones, entre ellas la Universidad de Friburgo (Alemania), Robert Bosch GmbH, Georgia Institute of Technology, KU Leuven (Bélgica), Massachusetts Institute of Technology (MIT), Universidad de Stanford, Universidad Técnica de Múnich (Alemania), Universidad de California, Berkeley, Universidad de Pensilvania, Universidad del Sur de California (USC) y Universidad de Tokio (Japón). Todo esto, junto con el programa de pasantías extremadamente fructífero que ofrecía Willow Garage (que Melonee Wise supervisó de 2008 a 2010), contribuyó a la difusión de información sobre ROS en toda la comunidad robótica. ROS Box Turtle, la primera versión oficial de la distribución ROS, se puso a disposición del público el 2 de marzo de 2010. Este evento marcó la primera vez que ROS recibió formalmente una colección de paquetes versionados para que el público en general los utilizara. Como resultado de estos logros, se crearon el primer vehículo autónomo en ejecutar ROS, el primer dron en...