Your first steps with Zenoh as an RMW in ROS 2
Built by the Zenoh team at ZettaScale with ❤️
Welcome! This repository is part of the ROS 2 Networking Redefined: Deep Dive into RMW Zenoh workshops, scheduled to take place at several ROSCons in 2025:
- ROSCon UK 🇬🇧 🏴, on September 16th
- ROSCon Singapore 🇸🇬, on October 27th
- ROSCon FR & DE 🇫🇷 🇩🇪, on November 18th
It contains all the resources you’ll need to get started with rmw_zenoh, the Zenoh middleware for ROS 2.
In this hands-on workshop, you’ll explore how to leverage Zenoh as a ROS 2 middleware (RMW) layer. Whether you're new to Zenoh or looking to deepen your understanding of it, this workshop is designed to give you practical insights through simple demonstrations.
What's Included:
- Some introduction slides showing an overview of both Zenoh and
rmw_zenoh. - Dockerized environment: Pre-configured for easy setup and reproducibility.
- Simple ROS 2 applications: Designed to showcase the use of rmw_zenoh.
- Scripts and utilities: Simplifying container management, environment setup and configuration files.
Get ready to dive into the exciting world of ROS 2 networking with Zenoh!
A laptop on Linux, MacOS or Windows with:
- 8 cores minimum
- 16 GB RAM minimum
- 30 GB disk free minimum
- Docker installed and configured with allocated resources: 8 CPU and 16 GB memory limit
Warning
We strongly recommend pulling this Docker image before your arrival at ROSCon:
docker pull zettascaletech/roscon2025_workshopIt is available for both amd64 and arm64 architectures.
Pull this repository and change to its directory:
git clone https://github.com/ZettaScaleLabs/roscon2025_workshop.git
cd roscon2025_workshop
This workshop relies on 2 containers with ROS 2 Jazzy and RMW Zenoh installed:
- robot: to simulate a robot
- control: a host to control the robot
Run those containers with Docker compose as such:
docker compose up -dThen you can open 2 VNC connections to each container in a Web browser:
- Robot container: http://localhost:6080/
- Controller container: http://localhost:6081/
If the sessions are locked, the password is ubuntu.
The 2 containers are based on the same image and are already configured with ROS 2 environment and RMW_IMPLEMENTATION=rmw_zenoh_cpp.
A justfile in home directory defines some commands shorcuts that can be called with just <command_name>.
Each container has a ~/container_data volume bound to your host's container_volumes/robot_container and container_volumes/control_container respectively.
The Dockerfile is based on Tiryoh/docker-ros2-desktop-vnc, licensed under the Apache License 2.0.
The simulation of the ROX robot is courtesy of Neobotix and comes from neobotix/rox.
