General Concepts¶

Veamos el sistema ROS desde una vista de muy alto nivel. No hay que preocuparse de cómo funciona nada de lo siguiente, eso lo cubriremos más adelante.

ROS comienza con el ROS Master. El Maestro permite que todas las demás piezas de software de ROS (Nodos) se encuentren y hablen entre sí.De esta manera, no tenemos que decir nunca específicamente «Enviar estos datos del sensor a ese ordenador en 127.0.0.1.Podemos simplemente decirle al Nodo 1 que envíe mensajes al Nodo 2.

¿Cómo hacen esto los Nodos? Publicando y suscribiéndose a Topics.

Digamos que tenemos una cámara en nuestro Robot. Queremos poder ver las imágenes de la cámara, tanto en el propio Robot, como en otro portátil.

En nuestro ejemplo, tenemos un Nodo de Cámara que se encarga de la comunicación con la cámara, un Nodo de Procesamiento de Imágenes en el robot que procesa los datos de la imagen, y un Nodo de Visualización de Imágenes que muestra las imágenes en una pantalla. Para empezar, todos los nodos se han registrado en el Maestro. Piensa en el Maestro como una tabla de búsqueda donde todos los nodos van a encontrar dónde enviar exactamente los mensajes.

Al registrarse en el Maestro ROS, el Nodo de la Cámara declara que publicará un tema llamado /image_data (por ejemplo).Los otros dos nodos registran que están suscritos al tema /image_data.

Así, una vez que el nodo de la cámara recibe algunos datos de la cámara, envía el mensaje /image_data directamente a los otros dos nodos. (A través de lo que es esencialmente TCP/IP)

Ahora puedes estar pensando, ¿qué pasa si quiero que el Nodo de Procesamiento de Imágenes solicite datos al Nodo de la Cámara en un momento específico? Para ello, ROS implementa Servicios.

Un Nodo puede registrar un servicio específico con el Maestro ROS, al igual que registra sus mensajes.En el siguiente ejemplo, el Nodo de Procesamiento de Imágenes primero solicita /image_data, el Nodo de la Cámara recoge los datos de la Cámara, y luego envía la respuesta.