
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_cppeste 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.daemonEl 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.json5este Configuración de referencia aguas arriba Documentar las opciones disponibles.
Después de realizar los cambios, reinicie el servicio:
sudo snap restart zenohd.daemoneste 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.bridgeAl 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.json5O en el directorio del perfil de usuario raíz
/root/snap/zenoh-bridge-ros2dds/common/config.json5este 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_cppRMW lo implementa directamente en la instantánea de su aplicación. - Infraestructura: este
zenohdUn enrutador sirve como infraestructura compartida para enrutar el tráfico entre sistemas. - Integración: este
zenoh-bridge-ros2ddsSnap 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.









