Noticias

Llevando a Zenoh a ROS 2 a través de Snap

ROS 2 ofrece a los desarrolladores de robots la libertad de elegir el middleware que funcione para su sistema. Como protocolo de comunicación para ROS, Zenoh ha ganado gran atención. Ofrece rendimiento y estabilidad comprobados y, al mismo tiempo, brinda a los desarrolladores un control explícito sobre el descubrimiento de nodos.

Zenoh es un protocolo de comunicación liviano y de alto rendimiento diseñado para robótica y sistemas descentralizados. Al admitir comunicación entre editor/suscriptor y basada en consultas, puede manejar conexiones de red poco confiables de manera eficiente. Puede actuar como middleware para sistemas ROS 2.

Para los equipos que ejecutan aplicaciones ROS 2 utilizando DDS (servicio de distribución de datos), el puente Zenoh proporciona una manera de mantener la aplicación intacta y conectar sus comunicaciones con Zenoh. Mientras tanto, los enrutadores Zenoh proporcionan enrutamiento de tráfico y distribuyen consultas entre puntos finales.

Para implementar eficazmente ROS 2 y Zenoh, necesita un entorno estable y confiable. Este blog explora cómo utilizar Snap para lograr este objetivo y cubre tres métodos de implementación clave:

  • Paquete: Incluya el middleware Zenoh ROS directamente en su aplicación
  • Infraestructura: Ejecute su enrutador Zenoh como un paquete instantáneo independiente
  • Integración: Conecte aplicaciones ROS 2 existentes utilizando el puente Zenoh-to-DDS

Estos enfoques no son mutuamente excluyentes, lo que permite a los equipos mezclar y combinar según sea necesario para adaptarse a su arquitectura.

Empaqueta Zenoh con tu aplicación ROS 2

Cuando los desarrolladores quieran utilizar Zenoh como parte de su aplicación, pueden incluir la dependencia rmw_zenoh_cpp directamente en ROS 2. snapcraft.yaml.

este hablador_escucha_zenoh_core24 El proyecto en el repositorio de ejemplos instantáneos de ROS demuestra este enfoque utilizando ROS 2 Jazzy. Encapsula lo familiar demo_nodes_cpp Orador y oyente, simultáneamente eligiendo Zenoh RMW_IMPLEMENTATION Variables ambientales.

Los cambios importantes son snapcraft.yaml Aparece de la siguiente manera:

base: core24
confinement: strict

parts:
  ros-demos:
    plugin: colcon
    source: 
    source-branch: jazzy
    stage-packages:
      - ros-jazzy-rmw-zenoh-cpp
      - ros-jazzy-ros2run

apps:
  talker-router:
    command: opt/ros/jazzy/bin/ros2 run demo_nodes_cpp talker
    plugs: [network, network-bind]
    extensions: [ros2-jazzy]
    environment:
      RMW_IMPLEMENTATION: rmw_zenoh_cpp

este ros2-jazzy extension Configure el entorno ROS 2 en un abrir y cerrar de ojos. este stage-packages Nueva entrada rmw_zenoh_cppa pesar de RMW_IMPLEMENTATION Le dice a la aplicación que la use en tiempo de ejecución.

Esto mantiene las opciones de comunicación dentro de la aplicación. Los desarrolladores controlan las versiones de ROS 2, los conjuntos de middleware, los entornos y el ciclo de vida de las aplicaciones en un solo artefacto. Luego, el mismo conjunto probado se puede mover entre sistemas de desarrollo y robots sin reconstruir en cada dispositivo.

este ejemplo Se proporcionan dos modos de funcionamiento: uno que utiliza un enrutador Zenoh dedicado (enrutador de altavoz/enrutador de oyente) y el otro que depende de múltiples espionaje (enrutador de altavoz/escucha). Esta flexibilidad permite a los desarrolladores comenzar con un paquete compacto todo en uno para estaciones de trabajo o robots y luego evolucionar hacia servicios de enrutador independientes a medida que se expande la infraestructura de comunicaciones, sin necesidad de cambios en las aplicaciones.

Pon tu enrutador Zenoh en funcionamiento rápidamente

Los enrutadores son infraestructura y la infraestructura necesita estabilidad.

este Instantánea de Zenod Empaquete los enrutadores Zenoh como comandos y servicios del sistema. Se puede instalar independientemente de la aplicación ROS 2 que lo utilice:

sudo snap install zenohd
sudo snap start --enable zenohd.daemon

El servicio se desactiva durante la instalación, por lo que el usuario decide cuándo habilitarlo. Cuando está habilitado, snapd lo administra como otros servicios instantáneos.

El enrutador también se puede operar como un comando de terminal:

zenohd [OPTIONS]

Si planea pasar el archivo de configuración a través de la CLI, asegúrese de que esté ubicado en Accesible a través de un cierre muy restringido.

Las instantáneas buscan configuraciones JSON5 o YAML en el directorio de datos de su administración de instantáneas. La ruta de configuración predeterminada del demonio es:

/var/snap/zenohd/common/config.json5

este Configuración de referencia aguas arriba Documentar las opciones disponibles.

Después de realizar los cambios, reinicie el servicio:

sudo snap restart zenohd.daemon

este snapcraft.yaml El archivo describe el proceso del demonio y los comandos como referencia.

A través de enrutadores implementados en la nube, múltiples aplicaciones habilitadas para Zenoh pueden comunicarse a través de Internet. En esta configuración, considere configurar Verificación TLS de Zenoh.

Agregue Zenoh a aplicaciones ROS 2 existentes

Reempaquetar una aplicación no siempre es el lugar correcto para comenzar. Es posible que el robot ya esté ejecutando múltiples nodos ROS 2 usando DDS, o que el equipo quiera presentar Zenoh sin cambiar esos nodos.

este Instantánea de zenoh-bridge-ros2dds El puente Zenoh ascendente de ROS 2 está encapsulado a través de DDS. El puente descubre el tráfico ROS 2 en su lado DDS y lo asigna a Zenoh. Esto permite que las aplicaciones ROS 2 existentes conserven su configuración de middleware actual.

Instálalo y habilítalo:

sudo snap install zenoh-bridge-ros2dds
sudo snap start --enable zenoh-bridge-ros2dds.bridge

Al igual que las instantáneas del enrutador, el puente se instala deshabilitado y también se puede ejecutar como CLI:

zenoh-bridge-ros2dds [OPTIONS]

Su configuración se puede ubicar en el directorio del perfil público de la instantánea:

/var/snap/zenoh-bridge-ros2dds/common/config.json5

O en el directorio del perfil de usuario raíz

/root/snap/zenoh-bridge-ros2dds/common/config.json5

este Configuración de referencia aguas arriba Documentar las opciones disponibles.

El puente puede ubicarse junto al sistema ROS 2 en un robot, estación de trabajo u otro host y conectar el dominio DDS al lado Zenoh de la arquitectura. Los nodos ROS 2 no necesitan saber sobre la existencia del puente.

este snapcraft.yaml Archivo que demuestra cómo empaquetar un puente basado en Rust como demonio y CLI.

Una implementación de RMW, tres enfoques

En resumen, Zenoh proporciona opciones de implementación flexibles para sistemas ROS 2 a través de tres métodos diferentes usando snap:

  • Paquete: Los desarrolladores pueden agrupar rmw_zenoh_cpp RMW lo implementa directamente en la instantánea de su aplicación.
  • Infraestructura: este zenohd Un enrutador sirve como infraestructura compartida para enrutar el tráfico entre sistemas.
  • Integración: este zenoh-bridge-ros2dds Snap une las aplicaciones existentes basadas en DDS con las redes Zenoh sin requerir cambios de código.

Snap unifica estas implementaciones con un modelo operativo consistente. Los tres métodos son compatibles amd64 y arm64 plataforma para garantizar una implementación independiente del hardware en diferentes robots. Además, snap proporciona un marco único para actualizaciones de transacciones, gestión del ciclo de vida y control de servicios a través de: snapd.

La seguridad es el núcleo de este modelo. Las restricciones estrictas aíslan la pila de comunicación, mientras que las interfaces obligatorias como network y network-bind Forzar el acceso explícito al sistema. Esto garantiza que cada elemento opere dentro de límites claramente definidos.

En última instancia, esto permite que las aplicaciones, puentes y enrutadores evolucionen de forma independiente con su propia configuración y ciclos de actualización. Esta modularidad mantiene límites operativos sólidos para toda la arquitectura del robot.

Comience a integrar Zenoh en ROS 2

A continuación se presentan algunos puntos de partida prácticos para estos tres proyectos:

Si las instantáneas son nuevas para usted, comience con Descripción general de SnapcraftEntonces Configurando Snapcraft y sigue la guía Crear una instantánea. este Documentación del robot Snapcraft Cubre extensiones y flujos de trabajo específicos de ROS.

Para el middleware en sí, consulte Una guía para usar ROS 2 Jazzy de Zenoheste rmw_zenoh repositorio,así como archivo zenoh.

Ya sea que Zenoh pertenezca dentro de su aplicación, junto a ella o en el centro de su infraestructura de comunicaciones, existe una forma instantánea de implementarlo.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba