Arduino liberó Arduino_RouterBridge_ROS, una biblioteca de código abierto que permite escribir nodos de ROS 2 directamente dentro de un sketch. La presentó Giovanni Bruno, de su equipo de I+D, primero en ROSCon Global 2026 en Toronto y después, el 3 de noviembre, en ROSCon Italia. Está pensada para la placa Arduino VENTUNO Q, que junta un procesador con Linux y un microcontrolador de tiempo real en el mismo circuito.

Quien ha armado un robot con ROS 2 conoce la división clásica. Un computador con Linux se encarga de la navegación, el mapeo y la planificación, mientras un microcontrolador externo hace el trabajo determinista de tiempo real, que es conmutar GPIO, leer sensores y mover motores.

Conectar esos dos mundos suele obligar a pelear con protocolos seriales propios, drivers dedicados o capas de middleware pesadas. El VENTUNO Q se diseñó para eliminar esa frontera, y la biblioteca nueva es la pieza que conecta sus dos cerebros con ROS 2. El código está en el repositorio Arduino_RouterBridge_ROS.

¿Cómo funciona Arduino RouterBridge por dentro?

Para entender Arduino_RouterBridge_ROS primero hay que mirar la capa sobre la que se apoya, Arduino_RouterBridge.

Esa capa usa un protocolo RPC (llamada a procedimiento remoto) montado sobre MsgPackRPC. Con él, el lado Linux, que corre Python, y el lado del microcontrolador, que corre un sketch de Arduino basado en Zephyr, ejecutan código en el otro extremo con dos métodos:

  • Bridge.provide() registra una función que se puede llamar desde un lado.
  • Bridge.call() dispara esa función desde el otro lado.

En vez de escribir código para interpretar tramas seriales, el programador llama funciones entre el MPU y el MCU como si corrieran en el mismo hilo.

Nodos de ROS 2 dentro del sketch

Sobre Arduino_RouterBridge, la nueva biblioteca agrega un proxy liviano de ROS 2 que conecta el firmware del microcontrolador con el grafo de ROS. Con el espacio de nombres ros2ino se escriben nodos de ROS 2 dentro del propio sketch de Arduino.

  • Nodos completos. Desde el MCU se crean nodos, publicadores, suscriptores, servicios y acciones de ROS 2.
  • Independiente del RMW. Como viaja sobre el transporte de RouterBridge, funciona con cualquier proveedor de middleware de ROS (RMW) que corra en Linux.
  • Interfaz en C++. La sintaxis de la API copia los patrones de rclcpp, el cliente estándar de ROS 2 en C++, así que quien ya lo usa no tiene que aprender otra cosa.

El código de tiempo real del microcontrolador queda conectado a ROS 2 sin montar nodos puente adicionales. Arduino da dos ejemplos. Se puede enviar la telemetría de una IMU directo al tópico /imu/data, o escuchar los comandos de velocidad de los motores en /cmd_vel.

¿Dónde están las guías para partir?

Arduino publicó dos tutoriales en su documentación, Getting Started with ROS 2 on UNO Q y First ROS 2 Project on UNO Q. Los casos que menciona la empresa van desde un rover móvil autónomo hasta un brazo robótico de precisión o un primer proyecto con ROS.

Giovanni Bruno, arquitecto de soluciones de robótica de Arduino, mostró el VENTUNO Q, ROS 2 y el puente de Arduino para ROS en ROSCon Italia.