ROS: Robot Operating System

ROS: Robot Operating System

ROS: Robot Operating System

ROS es un meta-sistema operativo muy utilizado en robótica. Proporciona servicios que se esperan de un sistema operativo, como abstracción hardware, control de dispositivos a bajo nivel, implementación de funcionalidades comúnmente utilizadas, paso de mensajes entre procesos y gestión de paquetes.

También aporta herramientas y librerías para obtener, construir, escribir y ejecutar códigos entre múltiples ordenadores. Una de las principales ventajas de este framework es la capacidad de desarrollar nodos software reutilizables, además de proporcionar herramientas y algoritmos de uso típico en robótica.

Su principal característica es la capacidad de dividir las acciones complejas en funciones más pequeñas que implementan una parte concreta del proceso, encapsuladas en archivos ejecutables llamados nodos, que se comunican entre ellos usando buses de datos para llevar a cabo la función encomendada.

Decir que dentro del sistema cada nodo es único, diferenciándose unos de otros y pudiéndose comunicar entre ellos, publicando o subscribiéndose a un tópico, proveyendo o usando un servicio, o usando acciones. Todo este complejo entramado hace que cuando se detecta algún error, sea más fácil su corrección, ahorrando mucho tiempo de búsqueda de errores.

ROS es un software de código abierto y libre tanto para uso comercial como de investigación, bajo licencia BSD. Está disponible desde Enero de 2010 con la versión 1.0 y hasta la actualidad se han lanzado otras versiones: Box Turtle (2010), C Turtle (2010), Diamondback (2011), Electric Emys (2011), Fuerte Turtle (2012), Groovy Galapagos (2012), Hydro Medusa(2013), Indigo Igloo (2014), Jade Turtle (2015) y la última versión Kinetic Kame (2016).

En ROS hay implementados varios estilos de comunicación, como comunicación síncrona de tipo RPC (llamada a procedimiento remoto, del inglés Remote Procedure Call) a través de servicios, comunicación asíncrona por medio de topics (o tópicos) y almacenamiento de datos en un servidor de parámetros que se pueden consultar desde cualquier nodo.

Para mayor comprensión se describen a continuación los sistemas de archivos de ROS.

Sistema de archivos de ROS

En el sistema de archivos de ROS, se pueden distinguir:

  • Paquetes (packages): Los paquetes es la principal unidad para organizar el software en ROS. Un paquete puede contener nodos (la unidad de ejecución en ROS), librerías, data sets o archivos de configuración, entre otros.
  • Archivos de manifiesto (manifest.xml): Los manifiestos proporcionan metadatos de un paquete, incluyendo información de licencia, dependencias con otros paquetes y opciones de compilación.
  • Stacks: Un stack es un conjunto de paquetes que proporcionan una funcionalidad. Un ejemplo de stack es la ”navigation_stack” disponible en los repositorios de ROS.
  • Archivos de manifiesto de un stack (stack.xml): De forma similar al manifiesto de un paquete, este tipo de archivos proporcionan información del stack, como la versión, la licencia y las dependencias.
  • Descripción de mensajes: Estos archivos describen los mensajes a utilizar por los nodos, definiendo la estructura de datos del mismo. Se suelen ubicar dentro de la carpeta msg de un paquete y tienen la extensión ”.msg”.
  • Descripción de servicio: Se utilizan para describir los servicios, definiendo la estructura de datos para la petición y la respuesta del servicio. Se suelen ubicar dentro de la carpeta srv de un paquete y tienen la extensión ”.srv”.

Protocolos de comunicación entre nodos en ROS

A continuación se pasa a describir los distintos elementos que forman parte del proceso de comunicación entre nodos:

  • Nodo: Los nodos son procesos que realizan la computación. Un nodo es un archivo ejecutable dentro de un paquete de ROS. Mediante los nodos se puede realizar un complejo modular en el que los nodos se comunican entre sí. Un sistema de control del robot comprende por lo general muchos nodos.
  • Máster: El ROS Máster proporciona el registro de nombre y consulta el resto del grafo de computación. Almacena información de registro de topics y servicios de nodos ROS. El Máster coordina los nodos realizando una función similar a la de un servidor DNS en internet. Servidor de parámetros: Este permite almacenar datos, de forma que se pueden actualizar y consultar por cualquier nodo. Actualmente es parte del Máster.
  • Mensajes: Es la forma de comunicación entre los nodos. Un mensaje es una estructura simple con campos tipados. Los tipos que se permiten son desde tipos básicos como enteros o reales a estructuras C más complejas y vectores.
  • Tópico o topic: El topic es el canal de comunicación entre nodos. El intercambio de mensajes entre nodos lo hacen a través de los topics que son buses de datos. El topic es un nombre que se usa para identificar el contenido del mensaje. Un nodo publica un mensaje en un topic al que se ha suscrito un segundo nodo para leer los mensajes allí depositados.

Pueden existir muchos publicadores concurrentemente para un solo topic y un nodo puede suscribirse y/o publicar en varios topics. El nodo suscriptor o publicador no tiene porque conocer si existen otros nodos utilizando el mismo topic.

  • Servicios: Cuando no es posible la comunicación entre nodos mediante mensajes, ROS permite la comunicación a través del servicio. Este está definido por dos mensajes, uno para la petición y otro para la respuesta.

De esta manera el nodo ofrece un servicio con un nombre específico y otro nodo pude solicitar dicho servicio mediante un mensaje de petición.

  • Acciones: Se diferencian de los servicios, en que se envía una petición y se recibe una respuesta, pero en esta existe la posibilidad de cancelar el servicio, y por tanto no es necesario esperar hasta obtener la respuesta.
  • Rosbags: Son archivos donde se guardan los datos de los mensajes publicados por los nodos publicadores que interesan para una posterior utilización. Los rosbags son muy útiles para almacenar datos de sensores para después probar los algoritmos de forma offline en nuestro ordenador.

 

 

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *