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
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/zenoh-multinode-ros2/2_zenoh-install.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ This section shows you how to install and build the open-source Eclipse Zenoh pr
13
13
14
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.
15
15
16
-
###Install the Rust development environment
16
+
## Install the Rust development environment
17
17
18
18
First, install the [Rust](https://www.rust-lang.org/) environment. The core of Zenoh is developed in Rust for performance and safety.
19
19
@@ -36,13 +36,13 @@ source "$HOME/.cargo/env"
36
36
37
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
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
+9-10Lines changed: 9 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,9 +15,9 @@ If you’ve already installed Zenoh on an Arm Cortex-A or Neoverse platform as s
15
15
16
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.
17
17
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. Zenoh is ideal for robotics and industrial IoT systems that require fast, decentralized communication. It supports scalable data exchange across devices using pub/sub, storage, and query models.
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.
19
19
20
-
###Install Docker on Raspberry Pi
20
+
## Install Docker on Raspberry Pi
21
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.
22
22
23
23
This enables scalable, multi-node testing in realistic distributed environments.
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.
Once built, you can reuse this Docker image across multiple Arm-based nodes, including Raspberry Pi, AWS Graviton, and Arm Virtual Hardware.
108
108
{{% /notice %}}
109
109
110
-
### Transfer the Docker image to the other Raspberry Pi
110
+
## Transfer the Docker image to another Raspberry Pi
111
+
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,14 +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
-
132
-
133
-
134
-
### Run the Docker image
132
+
## Run the Docker image
135
133
136
134
Once the image is successfully loaded on the second device, you can run the container to start the Zenoh environment.
137
135
@@ -154,3 +152,4 @@ The following sections illustrate the procedures to run the Zenoh examples so as
154
152
- Queryable – for enabling on-demand remote computation
155
153
- Dynamic queryable with computation – for executing dynamic logic across nodes
156
154
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.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/zenoh-multinode-ros2/4_zenoh-ex1-pubsub.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,11 +8,11 @@ layout: learningpathall
8
8
9
9
## Test Zenoh pub/sub across two devices
10
10
11
-
This example demonstrates Zenoh's real-time publish/subscribe model across two Raspberry Pi devices.
11
+
This example demonstrates how to use Zenoh’s real-time publish/subscribe model to exchange messages between two Raspberry Pi devices over a local network.
12
12
13
-
The subscriber listens for all data published under the key expression `demo/example/**`, which matches any topic beginning with `demo/example/`.
13
+
Pub/sub is a core Zenoh communication pattern where data producers (publishers) send values to a key, and data consumers (subscribers) receive updates for matching key expressions. In this case, the subscriber listens for all messages published under the key expression `demo/example/**`, which matches any topic that begins with `demo/example/`. This enables flexible topic filtering and lightweight data dissemination across distributed systems.
14
14
15
-
###Start the subscriber node
15
+
## Start the subscriber node
16
16
17
17
Run the subscriber example on one of the Raspberry Pi systems:
18
18
@@ -21,7 +21,7 @@ cd ~/zenoh/target/release/examples
21
21
./z_sub
22
22
```
23
23
24
-
###Start the publisher node
24
+
## Start the publisher node
25
25
26
26
Then, log in to the other Raspberry Pi and run the publisher:
27
27
@@ -34,7 +34,7 @@ cd ~/zenoh/target/release/examples
34
34
You can run both `z_sub` and `z_pub` on the same device for testing, but running them on separate Raspberry Pis demonstrates Zenoh’s distributed discovery and cross-node communication.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/zenoh-multinode-ros2/6_zenoh-ex3-queryable.md
+7-8Lines changed: 7 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,17 +9,17 @@ layout: learningpathall
9
9
10
10
## Computation on query
11
11
12
-
This example demonstrates Zenoh's queryable capability, which lets a node respond to incoming data requests by computing results in real time, rather than returning previously stored values.
12
+
This example shows how to use Zenoh’s queryable feature to return computed results in real time, instead of serving pre-stored values.
13
13
14
-
Unlike `zenohd` which simply returns stored data, a queryable node can register to handle a specific key expression and generate responses at runtime. This is ideal for distributed computing at the edge, where lightweight devices, such as Raspberry Pi nodes, can respond to requests with calculated values. This enables sensor fusion, AI inference results, and diagnostics.
14
+
Unlike `zenohd` which simply returns stored data, a queryable node can register to handle a specific key expression and generate responses at runtime. This is ideal for distributed computing at the edge, where lightweight devices, such as Raspberry Pi nodes, can respond to requests with calculated values. This pattern is ideal for sensor fusion, lightweight AI inference, and dynamic system diagnostics on resource-constrained edge devices.
15
15
16
-
###Use case: estimate battery health on demand
16
+
## Use case: estimate battery health on demand
17
17
18
18
Imagine a robot fleet management system where the central planner queries each robot for its latest battery health score, which is not published continuously but calculated only when queried.
19
19
20
20
This reduces bandwidth usage and enables edge-side optimization using Zenoh's queryable feature.
21
21
22
-
###Launch a queryable node
22
+
## Launch a queryable node
23
23
24
24
On one Raspberry Pi device, run the `z_queryable` Zenoh example to register a queryable handler.
25
25
@@ -38,7 +38,7 @@ Press CTRL-C to quit...
38
38
39
39
The node is now ready to accept queries on the key `demo/example/zenoh-rs-queryable` and respond with a predefined message.
40
40
41
-
###Trigger a query from another node
41
+
## Trigger a query from another node
42
42
43
43
On the other Raspberry Pi device, run the `z_get` example.
44
44
@@ -59,10 +59,9 @@ The result is shown below:
59
59
60
60

61
61
62
-
The value you receive is generated in real time by the function defined in the queryable handler, not from pre-stored data.
62
+
The response is generated dynamically by the queryable handler, and not fetched from stored data.
63
63
64
-
65
-
### Real-world application: distributed inference and computation
64
+
## Real-world use cases
66
65
67
66
This model enables edge-based intelligence, such as:
68
67
- Executing custom logic in response to a query such as “calculate load average”
0 commit comments