¿Qué es ROS 2?
ROS (Robot Operating System) es el conjunto de herramientas y librerías con el que se programan la mayoría de robots de investigación y muchos industriales. Su nombre engaña un poco: funciona sobre Linux, como una capa que organiza todos los programas de un robot y los hace hablar entre sí.
Instalación
ROS 2 Humble se instala en Ubuntu 22.04, en un ordenador, una Raspberry Pi o una Jetson. Los pasos son los mismos en los tres.
Nodos y topics
La mejor forma de entender ROS 2 es tocarlo. turtlesim es un simulador mínimo: una tortuga que se mueve por una ventana y que se controla exactamente igual que un robot de verdad, con mensajes de velocidad.
Tu primer paquete
Vamos a escribir dos nodos en Python:
Servicios y parámetros
Los topics son un flujo continuo de mensajes. Para lo demás, ROS 2 tiene otras dos herramientas: servicios para preguntar y recibir respuesta, y parámetros para ajustar un nodo sin tocar su código.
Acciones
Una acción es la forma de pedirle a un nodo una tarea larga: girar hasta un ángulo, llevar el brazo a una posición, navegar hasta la cocina. A diferencia de un servicio, quien la pide recibe avisos de progreso mientras se ejecuta y puede cancelarla a medias.
Mensajes propios
ROS 2 trae cientos de tipos de mensaje (Twist, Range, Image, LaserScan...). Cuando ninguno encaja con lo que quieres enviar, creas el tuyo. Se definen en un paquete de interfaces, separado de los nodos, para que cualquier otro paquete pueda usarlos.
Launch y herramientas
Un robot real tiene decenas de nodos. Abrir una terminal para cada uno no es práctico: para eso están los archivos de launch. Y para entender lo que pasa dentro, ROS 2 trae herramientas para ver, grabar y reproducir datos.
Nodos en C++
Python es la forma más rápida de escribir un nodo. C++ es la que usan los nodos que necesitan la máxima velocidad un nodo en C++ publica y uno en Python escucha, como en la prueba de la instalación.
TF (coordenadas)
Un robot está lleno de "puntos de vista". El LiDAR mide distancias desde el LiDAR; la cámara ve desde la cámara; las ruedas cuentan desde el centro del robot; el mapa está en coordenadas del mundo. Para juntarlo todo, ROS 2 necesita saber dónde está cada pieza respecto a las demás. De eso se encarga TF.
Tu robot en RViz
En la guía de URDF describiste un robot con una base y un brazo. Ahora lo vas a ver en RViz y a mover su brazo desde un nodo de ROS 2.
ROS 2 y Arduino
El Arduino lee sensores y mueve motores; ROS 2 corre en la Raspberry Pi o la Jetson. Para unirlos se escribe un nodo puente: lee el puerto serie y lo publica en topics, y escucha topics y los manda por el puerto serie.