You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title: Build scalable communication systems with Eclipse Zenoh
3
3
weight: 2
4
4
5
5
### FIXED, DO NOT MODIFY
6
6
layout: learningpathall
7
7
---
8
8
9
-
## The Need for Scalable Communication in Robotics and Edge Computing
9
+
## The need for scalable communication in robotics and edge computing
10
10
11
11
Modern robotics and industrial IoT systems are evolving rapidly, from indoor collaborative arms on assembly lines to fleets of outdoor autonomous delivery robots.
12
12
These applications must operate in real-time, often across multiple compute nodes, over networks that may span factory LANs, 5G cellular links, or even cloud data centers.
@@ -15,36 +15,34 @@ Such systems require fast, reliable, and scalable data communication between nod
15
15
This includes not just broadcasting sensor updates or actuator commands (pub/sub), but also performing state queries, storing values for later use, and even distributed computation across nodes.
16
16
17
17
A modern protocol must be:
18
-
* Low-latency: Immediate delivery of time-critical messages.
19
-
* High-throughput: Efficient data flow across many devices.
20
-
* Decentralized: No reliance on central brokers or fixed infrastructure.
21
-
* Flexible: Able to run on lightweight edge devices, across WANs, or inside cloud-native environments.
18
+
* Low-latency: immediate delivery of time-critical messages
19
+
* High-throughput: efficient data flow across many devices
20
+
* Decentralized: no reliance on central brokers or fixed infrastructure
21
+
* Flexible: able to run on lightweight edge devices, across WANs, or inside cloud-native environments
22
22
23
-
Traditional communication stacks such as Data Distribution Service (DDS) serve as the backbone for middleware like ROS 2. However, DDS struggles in multi-network or wireless environments where multicast is unavailable, or NAT traversal is needed.
24
-
These constraints can severely impact deployment and performance at the edge.
23
+
Traditional communication stacks such as Data Distribution Service (DDS) serve as the backbone for middleware like ROS 2. However, DDS struggles in multi-network or wireless environments where multicast is unavailable, or NAT traversal is needed. Zenoh was developed to address these challenges with a unified approach to data movement, storage, and interaction across heterogeneous, distributed systems.
25
24
26
-
27
-
## Zenoh: an open-source pub/sub protocol for the Industrial Edge
25
+
## What is Zenoh? A scalable pub/sub protocol for the industrial edge
28
26
29
27
[Eclipse Zenoh](https://zenoh.io/) is a modern, open-source, data-centric communication protocol that goes beyond traditional pub/sub. Designed specifically for edge computing, industrial IoT, robotics, and autonomous systems, Zenoh unifies:
30
28
31
-
- Data in motion through a powerful and efficient pub/sub model.
32
-
- Data at rest via geo-distributed storage plugins.
33
-
- Data in use with direct query support.
34
-
- On-demand computation via queryable nodes that can generate data dynamically.
29
+
- Data in motion through a powerful and efficient pub/sub model
30
+
- Data at rest via geo-distributed storage plugins
31
+
- Data in use with direct query support
32
+
- On-demand computation via queryable nodes that can generate data dynamically
35
33
36
34
Unlike most traditional stacks, Zenoh is fully decentralized and designed to operate across cloud-to-edge-to-thing topologies, making it ideal for industrial robotics, autonomous systems, and smart environments.
37
35
38
36
It supports heterogeneous platforms, is implemented in Rust for performance and safety, and also offers bindings for Python, enabling rapid prototyping.
39
37
40
-
Zenoh is particularly effective in wireless, 5G, or cross-network deployments where multicast and DDS fall short.
41
-
Its routing engine avoids excessive discovery traffic, conserves bandwidth, and supports seamless bridging between legacy ROS 2/DDS apps and modern, optimized Zenoh networks using Zenoh-Bridge-DDS, a bridge between DDS systems and Zenoh networks.
38
+
Zenoh excels in wireless, 5G, and cross-network deployments, which are environments where multicast is unavailable and DDS often struggles. Its routing engine avoids excessive discovery traffic, conserves bandwidth, and supports seamless bridging between legacy ROS 2/DDS apps and modern, optimized Zenoh networks using Zenoh-Bridge-DDS, a bridge between DDS systems and Zenoh networks.
42
39
43
40
In this Learning Path, you’ll use Zenoh to build and validate a multi-node distributed communication system across multiple Arm-based platforms, gaining hands-on experience with data exchange and coordination between edge devices.
44
41
45
-
The examples use Raspberry Pi boards, but you’re free to substitute any Cortex-A or Neoverse devices that support network connectivity running Linux.
42
+
You can substitute Raspberry Pi with any Linux-based Arm device that supports networking, such as a Cortex-A or Neoverse board.
43
+
44
+
By the end of this Learning Path, you'll be able to:
45
+
- Explain the core architecture and data flow principles behind Eclipse Zenoh protocol, including its support for pub/sub, querying, and queryable edge functions
46
+
- Build and run distributed Zenoh examples across multiple Arm-based nodes using Raspberry Pi or other Arm Linux devices
47
+
- Rebuild and extend a Zenoh queryable node to simulate edge-side logic
46
48
47
-
Upon completion, you will be able to:
48
-
- Understand the core architecture and data flow principles behind Eclipse Zenoh, including its support for pub/sub, querying, and queryable edge functions.
49
-
- Build and run distributed Zenoh examples across multiple Arm-based nodes using Raspberry Pi or other Arm Linux devices.
50
-
- Rebuild and extend the Zenoh queryable example to simulate edge-side logic.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/zenoh-multinode-ros2/2_zenoh-install.md
+22-21Lines changed: 22 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,64 +1,62 @@
1
1
---
2
-
title: Setting Up Zenoh on Arm Devices
2
+
title: Get started with Zenoh on Raspberry Pi and Arm Linux
3
+
3
4
weight: 3
4
5
5
6
### FIXED, DO NOT MODIFY
6
7
layout: learningpathall
7
8
---
8
9
9
-
## Setting Up Zenoh on Arm Devices
10
+
## Set up Zenoh on Arm devices
10
11
11
-
The following instructions have been verified on both Raspberry Pi 4 and 5 devices, but you can implement them on any Arm Linux device.
12
+
This section shows you how to install and build the open-source Eclipse Zenoh protocol on Arm-based devices like Raspberry Pi.
12
13
13
-
Before building Zenoh, make sure your system has the necessary development tools and runtime libraries.
14
+
The following instructions have been verified on Raspberry Pi 4 and 5, but you can use any Arm Linux device. These steps apply to Raspberry Pi and other Arm-based Linux platforms. Before building Zenoh, make sure your system has the necessary development tools and runtime libraries.
14
15
15
-
###Install the Rust development environment
16
+
## Install the Rust development environment
16
17
17
-
First, install the [Rust](https://www.rust-lang.org/) environment, since the core of Zenoh is developed using Rust to keep it safe and efficient.
18
+
First, install the [Rust](https://www.rust-lang.org/) environment. The core of Zenoh is developed in Rust for performance and safety.
Near the end of the installation you will see the success message:
26
+
Near the end of the installation, you should see the message:
26
27
27
28
```output
28
29
Rust is installed now. Great!
29
30
```
30
-
31
-
Make sure to source the environment to add Rust to your shell environment:
31
+
Source your shell environment to activate Rust:
32
32
33
33
```bash
34
34
source"$HOME/.cargo/env"
35
35
```
36
36
37
-
You can learn more using the [Rust install guide](/install-guides/rust/) for Arm Linux.
37
+
For more information, see the [Rust Install Guide](/install-guides/rust/) for Arm Linux.
38
38
39
-
###Install ROS 2
39
+
## Install ROS 2
40
40
41
41
[Robot Operating System](https://www.ros.org/) is a set of software libraries and tools that help you build robot applications. ROS provides everything from drivers to state-of-the-art algorithms, as well as developer tools. It is completely open-source.
42
42
43
-
Follow the [ROS2 installation guide](/install-guides/ros2/) to install ROS 2 on your Arm platforms.
43
+
If you plan to use Zenoh alongside ROS 2, for example, to bridge DDS-based nodes, you should install ROS 2 before proceeding. See the [ROS2 Installation Guide](/install-guides/ros2/) to install ROS 2 on your Arm platforms.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/zenoh-multinode-ros2/3_zenoh-multinode.md
+32-29Lines changed: 32 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,39 +1,35 @@
1
1
---
2
-
title: Setting Up a Multi-Node Environment
2
+
title: Containerize and deploy Zenoh across multiple Raspberry Pi devices
3
+
3
4
weight: 4
4
5
5
6
### FIXED, DO NOT MODIFY
6
7
layout: learningpathall
7
8
---
8
9
9
-
## Deploying Zenoh on Multiple Raspberry Pi Devices
10
+
## Deploy Zenoh on multiple Raspberry Pi devices
10
11
11
12
After building Zenoh and its core examples, the next step is to deploy them across multiple Arm-based devices.
12
13
13
-
If you’ve already installed Zenoh on an Arm Cortex-A or Neoverse platform as shown in the previous section, you can simply copy the compiled binaries from `~/zenoh/target/release/` to each of your Raspberry Pi devices.
14
-
15
-
However, to streamline deployment across multiple devices and ensure repeatability, this section demonstrates how to package Zenoh into a Docker image for batch rollout and scalable testing.
16
-
17
-
This containerized approach not only simplifies deployment on Raspberry Pi, but also integrates seamlessly with Arm cloud platforms such as AWS Graviton Arm Cortex-A Linux or Arm Virtual Hardware—enabling a consistent cloud-to-edge development and validation workflow.
14
+
If you’ve already installed Zenoh on an Arm Cortex-A or Neoverse platform as shown in the previous section, you can copy the compiled binaries from `~/zenoh/target/release/` to each of your Raspberry Pi devices.
18
15
19
-
In this session, you’ll use Raspberry Pi boards to simulate a scalable distributed environment. The same workflow applies to any Arm Linux system, including cloud instances and virtual hardware.
16
+
To simplify and scale deployment across multiple devices, this section shows how to containerize Zenoh with Docker for streamlined distribution and consistent multi-node testing. This containerized approach enables repeatable rollouts and makes it easier to test distributed communication across Raspberry Pi, Arm cloud instances (like AWS Graviton), and Arm Virtual Hardware.
20
17
21
-
This setup allows you to simulate real-world, cross-node communication scenarios, making it ideal for evaluating Zenoh’s performance in robotics and industrial IoT applications.
18
+
In this session, you’ll use Raspberry Pi boards to simulate a scalable distributed environment. The same workflow applies to any Arm Linux system, including cloud instances and virtual hardware. This setup allows you to simulate real-world, cross-node communication scenarios, making it ideal for evaluating Zenoh’s performance in robotics and industrial IoT applications. This setup simulates real-world, cross-node communication scenarios, making it ideal for robotics and industrial IoT applications that require fast, decentralized messaging using pub/sub, storage, and query models.
22
19
23
-
### Install Docker on Raspberry Pi
24
-
To simplify this process and ensure consistency, you can use Docker to containerize your Zenoh and ROS 2 environment.
25
-
This lets you quickly replicate the same runtime on any device without needing to rebuild from source.
20
+
## Install Docker on Raspberry Pi
21
+
To simplify this process and ensure consistency, you can use Docker to containerize your Zenoh and ROS 2 environment. This lets you quickly replicate the same runtime on any device without needing to rebuild from source.
26
22
27
-
This enables multi-node testing and real-world distributed communication scenarios.
23
+
This enables scalable, multi-node testing in realistic distributed environments.
28
24
29
-
First, install Docker on each of Raspberry Pi.
25
+
First, install Docker on each Raspberry Pi device:
30
26
31
27
```bash
32
28
curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
33
29
sudo usermod -aG docker $USER; newgrp docker
34
30
```
35
31
36
-
###Create a ROS2 + Zenoh Docker Image
32
+
## Create a Docker image with ROS 2 and Zenoh
37
33
38
34
To ensure compatibility with ROS-related tools, create a `Dockerfile` based on `ros:galactic `, and use the official Rust installation method to build Zenoh, as shown below.
Under the directory where the above Dockerfile exists, run the following command to generate the docker image.
82
+
From the directory containing the above Dockerfile, run the following command to generate the docker image:
83
+
87
84
88
85
```bash
89
86
docker build -t zenoh-node .
@@ -106,12 +103,16 @@ You can pull it directly using:
106
103
```bash
107
104
docker pull odinlmshen/zenoh-node
108
105
```
106
+
{{% notice Tip %}}
107
+
Once built, you can reuse this Docker image across multiple Arm-based nodes, including Raspberry Pi, AWS Graviton, and Arm Virtual Hardware.
108
+
{{% /notice %}}
109
+
110
+
## Transfer the Docker image to another Raspberry Pi
109
111
110
-
### Transfer the Docker image to the other Raspberry Pi
111
112
112
113
There are two options to transfer the Docker image to your second device. Choose one of the following methods.
113
114
114
-
Option 1: Save and copy via file
115
+
1. Save and copy using the file:
115
116
116
117
```bash
117
118
docker save zenoh-node > zenoh-node.tar
@@ -124,11 +125,11 @@ On the target device:
124
125
docker load < zenoh-node.tar
125
126
```
126
127
127
-
Option 2: Push the image to a container registry such as Docker Hub
128
+
2. Push the image to a container registry such as Docker Hub:
128
129
129
130
You can also push the image to Docker Hub or GitHub Container Registry and pull it on the second device.
130
131
131
-
###Run the Docker Image
132
+
## Run the Docker image
132
133
133
134
Once the image is successfully loaded on the second device, you can run the container to start the Zenoh environment.
134
135
@@ -138,15 +139,17 @@ docker run -it --network=host zenoh-node
138
139
139
140
The Zenoh example binaries are now available within this container, allowing you to test pub/sub and query flows across devices.
140
141
141
-
## Run Zenoh in Multi-Node Environment
142
+
## Run Zenoh examples in a multi-node environment
143
+
144
+
With Zenoh running inside containers across devices, you’re now ready to explore real-time communication using prebuilt examples.
142
145
143
-
You’re now ready to run and test Zenoh communication flows across distributed edge devices.
146
+
The following examples are written in Rust and precompiled in your container image. They're fully interoperable and can be used to demonstrate Zenoh's key capabilities across devices. The Rust binaries are available in the `$ZENOH_LOC/target/release/examples/` directory. If you haven't set `ZENOH_LOC`, they can be found under `~/zenoh/target/release/examples/`.
147
+
144
148
145
-
The source of the examples written in Rust will be provided, and both are interoperable. The
146
-
Rust binaries are already available under: `$ZENOH_LOC/target/release/examples/` directory.
149
+
The following sections illustrate the procedures to run the Zenoh examples so as to demonstrate the primary capabilities of Zenoh:
150
+
- Basic pub/sub – for real-time message distribution
151
+
- Query and storage – for persisting and retrieving historical data
152
+
- Queryable – for enabling on-demand remote computation
153
+
- Dynamic queryable with computation – for executing dynamic logic across nodes
147
154
148
-
The following sections illustrate the procedures to run the Zenoh examples so as to demonstrate the primary capabilities of Zenoh
149
-
1. Basic Pub/Sub – for real-time message distribution
150
-
2. Query and Storage – to persist and retrieving historical data
151
-
3. Queryable – to enable on-demand remote computation
152
-
4. Dynamic Queryable with Computation
155
+
With your Zenoh examples running across containers, you’re now ready to build and benchmark real-time communication flows across nodes, which is ideal for simulating robotic fleets or industrial systems.
0 commit comments