Skip to content

Commit 794cc1d

Browse files
authored
Merge branch 'main' into main
2 parents 88abe56 + ea51ef3 commit 794cc1d

File tree

16 files changed

+189
-145
lines changed

16 files changed

+189
-145
lines changed

.wordlist.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4469,4 +4469,9 @@ tekton
44694469
tektoncd
44704470
tkn
44714471
verifiably
4472-
vhd
4472+
vhd
4473+
AssetLib
4474+
PerformanceStudio
4475+
VkThread
4476+
precompiled
4477+
rollouts

content/learning-paths/automotive/_index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ operatingsystems_filter:
2020
tools_software_languages_filter:
2121
- Automotive: 1
2222
- C: 1
23+
- DDS: 1
2324
- Docker: 2
2425
- Python: 2
2526
- Raspberry Pi: 1
2627
- ROS 2: 1
2728
- ROS2: 2
29+
- Rust: 1
30+
- Zenoh: 1
2831
---

content/learning-paths/automotive/openadkit2_safetyisolation/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ who_is_this_for: This Learning Path is for automotive engineers developing safet
88
learning_objectives:
99
- Apply functional safety principles, including risk prevention, fault detection, and ASIL compliance, to build robust, certifiable automotive systems
1010
- Use DDS and a publish-subscribe architecture for low-latency, scalable, and fault-tolerant communication in autonomous driving systems
11-
- Implement distributed development by separating the simulation platform into independent, safety-isolated components
11+
- Implement distributed development by separating the simulation platform into independent, safety-isolated components
1212

1313
prerequisites:
1414
- Access to two Arm-based Neoverse cloud instances, or a local Arm Neoverse Linux system with at least 16 CPUs and 32 GB of RAM
Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
2-
title: Introduction to Zenoh
2+
title: Build scalable communication systems with Eclipse Zenoh
33
weight: 2
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
## The Need for Scalable Communication in Robotics and Edge Computing
9+
## The need for scalable communication in robotics and edge computing
1010

1111
Modern robotics and industrial IoT systems are evolving rapidly, from indoor collaborative arms on assembly lines to fleets of outdoor autonomous delivery robots.
1212
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
1515
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.
1616

1717
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
2222

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.
2524

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
2826

2927
[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:
3028

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
3533

3634
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.
3735

3836
It supports heterogeneous platforms, is implemented in Rust for performance and safety, and also offers bindings for Python, enabling rapid prototyping.
3937

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.
4239

4340
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.
4441

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
4648

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.

content/learning-paths/cross-platform/zenoh-multinode-ros2/2_zenoh-install.md

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,62 @@
11
---
2-
title: Setting Up Zenoh on Arm Devices
2+
title: Get started with Zenoh on Raspberry Pi and Arm Linux
3+
34
weight: 3
45

56
### FIXED, DO NOT MODIFY
67
layout: learningpathall
78
---
89

9-
## Setting Up Zenoh on Arm Devices
10+
## Set up Zenoh on Arm devices
1011

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.
1213

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.
1415

15-
### Install the Rust development environment
16+
## Install the Rust development environment
1617

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.
1819

1920
```bash
2021
sudo apt update
2122
sudo apt install -y curl gcc
2223
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
2324
```
2425

25-
Near the end of the installation you will see the success message:
26+
Near the end of the installation, you should see the message:
2627

2728
```output
2829
Rust is installed now. Great!
2930
```
30-
31-
Make sure to source the environment to add Rust to your shell environment:
31+
Source your shell environment to activate Rust:
3232

3333
```bash
3434
source "$HOME/.cargo/env"
3535
```
3636

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.
3838

39-
### Install ROS 2
39+
## Install ROS 2
4040

4141
[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.
4242

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.
4444

45-
### Download and build the Zenoh source
45+
## Download and build the Zenoh source
4646

4747
Clone the Zenoh repository:
4848

4949
```bash
5050
cd $HOME
5151
git clone https://github.com/eclipse-zenoh/zenoh.git
5252
```
53-
54-
After cloning, use cargo to build the source:
53+
Build the source using Cargo:
5554

5655
```bash
5756
cd zenoh
5857
cargo build --release --all-targets -j $(nproc)
5958
```
60-
61-
This process will take several minutes depending on your device. Once the installation is complete, you should see:
59+
This process will take several minutes depending on your device. When complete, you should see output like:
6260

6361
```output
6462
Updating crates.io index
@@ -101,13 +99,16 @@ This may become a hard error in the future; see <https://github.com/rust-lang/ca
10199
Finished `release` profile [optimized] target(s) in 6m 28s
102100
```
103101

104-
After the build process, the binary executables will be stored under the directory of `~/zenoh/target/release/examples/`.
102+
After the build process, the binary executables will be located at `~/zenoh/target/release/examples/`.
105103

106104
{{% notice Note %}}
107-
Installation time may vary depending on your device’s performance.
105+
Installation time can vary depending on your device’s performance.
108106
{{% /notice %}}
109107

110-
If you get a build error:
108+
109+
## Troubleshooting build errors
110+
111+
If you get a build error like this:
111112
```output
112113
error[E0599]: no function or associated item named `start` found for struct `StoragesPlugin` in the current scope
113114
--> plugins/zenoh-plugin-storage-manager/tests/operations.rs:91:55
@@ -120,7 +121,7 @@ Edit the file `./plugins/zenoh-plugin-storage-manager/tests/operations.rs` and c
120121
use crate::path::to::Plugin;
121122
```
122123

123-
Run the build again:
124+
Then rebuild:
124125

125126
```bash
126127
cargo clean && cargo build

content/learning-paths/cross-platform/zenoh-multinode-ros2/3_zenoh-multinode.md

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,35 @@
11
---
2-
title: Setting Up a Multi-Node Environment
2+
title: Containerize and deploy Zenoh across multiple Raspberry Pi devices
3+
34
weight: 4
45

56
### FIXED, DO NOT MODIFY
67
layout: learningpathall
78
---
89

9-
## Deploying Zenoh on Multiple Raspberry Pi Devices
10+
## Deploy Zenoh on multiple Raspberry Pi devices
1011

1112
After building Zenoh and its core examples, the next step is to deploy them across multiple Arm-based devices.
1213

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.
1815

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.
2017

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.
2219

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.
2622

27-
This enables multi-node testing and real-world distributed communication scenarios.
23+
This enables scalable, multi-node testing in realistic distributed environments.
2824

29-
First, install Docker on each of Raspberry Pi.
25+
First, install Docker on each Raspberry Pi device:
3026

3127
```bash
3228
curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
3329
sudo usermod -aG docker $USER ; newgrp docker
3430
```
3531

36-
### Create a ROS2 + Zenoh Docker Image
32+
## Create a Docker image with ROS 2 and Zenoh
3733

3834
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.
3935

@@ -83,7 +79,8 @@ WORKDIR /root/zenoh/target/release
8379
CMD ["/bin/bash"]
8480
```
8581

86-
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+
8784

8885
```bash
8986
docker build -t zenoh-node .
@@ -106,12 +103,16 @@ You can pull it directly using:
106103
```bash
107104
docker pull odinlmshen/zenoh-node
108105
```
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
109111

110-
### Transfer the Docker image to the other Raspberry Pi
111112

112113
There are two options to transfer the Docker image to your second device. Choose one of the following methods.
113114

114-
Option 1: Save and copy via file
115+
1. Save and copy using the file:
115116

116117
```bash
117118
docker save zenoh-node > zenoh-node.tar
@@ -124,11 +125,11 @@ On the target device:
124125
docker load < zenoh-node.tar
125126
```
126127

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:
128129

129130
You can also push the image to Docker Hub or GitHub Container Registry and pull it on the second device.
130131

131-
### Run the Docker Image
132+
## Run the Docker image
132133

133134
Once the image is successfully loaded on the second device, you can run the container to start the Zenoh environment.
134135

@@ -138,15 +139,17 @@ docker run -it --network=host zenoh-node
138139

139140
The Zenoh example binaries are now available within this container, allowing you to test pub/sub and query flows across devices.
140141

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.
142145

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+
144148

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
147154

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

Comments
 (0)