ROBOT OPERATING SYSTEM (ROS)
Esta entrada está disponible también en los siguientes idiomas: Euskara, English
Desde hace algunas décadas, la robótica es un ámbito conocido y socializado. En consecuencia, también tiene su presencia en la formación profesional y es un ámbito que se aborda en diferentes ciclos. Sin embargo, con el paso del tiempo, la robótica evoluciona y surgen nuevas tecnologías que permiten dotar a los robots, cada vez de un mayor nivel de autonomía. Por tanto, es importante incorporar conocimientos sobre estas nuevas tecnologías en la formación profesional.
En el área de especialización de Robótica Autónoma de Tknika, tras realizar un análisis de las diferentes tecnologías más utilizadas en la actualidad, consideramos que sería una iniciativa razonable y enriquecedora, adquirir conocimientos sobre el middleware libre denominado ROS (Robot Operating System). Por lo tanto, uno de los objetivos más importantes de este proyecto, es la adquisición de conocimientos del entorno ROS y la posterior transferencia de conocimiento al profesorado de formación profesional.
Pero… Qué es ROS?
Se trata de un conjunto de bibliotecas y herramientas de software libre que crece bajo el paraguas de una comunidad y sirve para aplicaciones de robótica. En estas bibliotecas se pueden encontrar códigos de programación desde niveles muy bajos de abstracción hasta algoritmos de altísimo nivel: desde drivers, hasta diferentes algoritmos de inteligencia artificial. Los lenguajes de programación más utilizados en ROS son C++ y Python.
ROS es un sistema distribuido y se compone de procesos paralelos denominados «nodos», es decir, un único sistema ROS puede estar formado por nodos que corren sobre diferentes máquinas físicas. Para la comunicación entre nodos se utiliza el modelo publbicador/suscriptor y a los canales de comunicación se les denomina ‘topics’. Por lo tanto, un nodo puede publicar información en uno o varios topics y al mismo tiempo tener suscripciones a otros topics para recibir información que otros nodos publican. Para la coordinación de todo el sistema es necesario un nodo ‘Master’.
Como ejemplo podríamos tomar el caso de un coche teledirigido:
Para este caso concreto e implementando ROS, podríamos tener lo siguiente:
Existen dos versiones de ROS, ROS1 y ROS2, y las últimas distribuciones estables publicadas en cada una de estas versiones son Noetic Ninjemys (mayo 2020) y Humble Hawksbill (mayo 2022) respectivamente. El principal objetivo de la versión ROS Noetic ha sido ofrecer soporte para el uso de Python3, de forma que los desarrolladores que aún trabajan con la versión ROS1, pueden seguir trabajando con ROS1 durante un tiempo. Pero la esperanza de vida de ROS Noetic es hasta mayo de 2025.
Y… Cuáles son las ventajas de usar ROS?
- Al ofrecer un nivel de abstracción muy alto respecto al hardware, el desarrollador debe encargarse únicamente de desarrollar el código ligado a su aplicación. Además, al estar desarrolladas las funcionalidades más habituales, éstas se pueden aprovechar y no hace falta reinventar la rueda.
- Que en un único sistema ROS, haya diferentes nodos corriendo sobre diferentes plataformas hardware, ofrece una gran flexibilidad. El nodo desarrollado para una aplicación específica puede ser fácilmente adaptado para otra aplicación, e incluso directamente ser reutilizado sin necesidad de modificar nada en el código.
- Solo se deben instalar los paquetes de software necesarios para la aplicación. No es necesario instalar todos los paquetes de ROS, haciendo que el conjunto sea más ligero.
- Es muy escalable. A medida que aparecen nuevas necesidades, se pueden implementar nuevos nodos sin apenas modificar lo desarrollado hasta entonces.
- Al ser software libre, es gratuito.
- Permite simulaciones con gemelos digitales y el código de programación utilizado en estas simulaciones sirve para operar con robots reales. Por lo tanto, existe la posibilidad de depurar el código sin riesgo, antes de pasar a realizar pruebas con robots reales.
- Existen muchas plataformas hardware de carácter totalmente diferente pero compatibles con ROS, permitiendo utilizar la plataforma más adecuada para cada caso: humanoides, bípedos, cuadrupedos, coches, drones, brazos robóticos, etc.
Y… Cuáles son los casos de uso de ROS?
Dado que ROS puede ser implementado sobre diferentes plataformas hardware, los casos de uso son múltiples. He aquí algunos:
- Conducción autónoma: mediante la instalación de diferentes sensores en el coche (cámaras, odometría, termómetros, etc.) y algoritmos de inteligencia artificial que interpretan la información que captan los sensores, los coches pueden ser capaces de tomar las decisiones necesarias en cada momento y desarrollar así una autonomía en la conducción. Aunque utiliza software privado, Tesla es un referente en este ámbito.
- Industria: se utilizan plataformas móviles capaces de transportar grandes pesos de forma autónoma para trabajos del ámbito industrial que puedan ser peligrosos o perjudiciales para los trabajadores. A modo de ejemplo, se pueden citar los almacenes inteligentes de logística.
- Vigilancia de tierras: para la detección de incendios, rastreo de volcanes, controles fiscales, localización de personas que necesiten ayuda en tareas de rescate y otros usos, se utilizan drones.
Y…Qué ofrecería ROS en educación?
En los centros de formación profesional, la formación del alumnado en ROS ofrecería una serie de beneficios y facilidades.
- Al ser software libre, no supondría un coste económico y, además, permitiría que los alumnos puedan ejercitarse libremente. Tendrían la oportunidad de analizar cuáles son sus necesidades o las del centro y crear aplicaciones para dar respuesta a las mismas, así como para dejar volar su imaginación y desarrollar las aplicaciones que quieran.
- El alumnado adquiriría el concepto de los sistemas distribuídos y el concepto del modelo de comunicación publicación-suscripción, que cada vez son más extendidos. Además podrían poner en práctica estos conceptos de una manera ágil y percibir su potencial.
- Permitiría poner en práctica tecnologías punteras como la inteligencia artificial.
- Permitiría crear aplicaciones llamativas y entretenidas para los alumnos: competiciones de coches, carrera con humanoides u otras competiciones, etc.
- Ofrecería una buena oportunidad de trabajar en equipo. Al ser un sistema distribuído, la solución se puede dividir de forma muy simple (dividir en nodos) y cada miembro del grupo desarrollaría una parte de la solución. Asimismo, garantizaría el compromiso de trabajar la coordinación y comunicación entre los miembros del equipo para la correcta comunicación e integración de todos los nodos.
Desde el área de especialización de Robótica Autónoma, analizaremos todas estas posibilidades y otras que aparecerán y trasladaremos el conocimiento derivado al profesorado de FP Euskadi.