Who is this for?

This Learning Path is for robotics developers who want to understand how Zenoh manages ROS 2 sensor traffic over Wi-Fi.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Measure the rate, bandwidth, and regularity of ROS 2 sensor data at a remote receiver
  • Reproduce a constrained wireless link with Linux traffic control
  • Configure Zenoh compression, access control, downsampling, and quality of service policies
  • Validate the policies over real Wi-Fi and select a suitable deployment configuration

Prerequisites

Before starting, you will need the following:

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll measure ROS 2 sensor traffic, emulate a constrained wireless link, and tune Zenoh policies to manage ROS 2 traffic over Wi-Fi. First, you’ll record baseline rates for /scan, /camera/image_raw, and /camera/points in a wireless emulation. Then, you’ll apply tc and netem, test compression, access control, downsampling, and quality of service (QoS), and compare the results. Finally, you’ll repeat the policy tests with a Raspberry Pi over real Wi-Fi and choose a deployment policy.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
How do I start and verify the ROS 2 and Zenoh environment before measuring?
From the Arm server host, run docker compose up -d in ~/ros_zenoh, then use docker compose ps. Both services should report Up. Then, open the robot container desktop and confirm that the Zenoh router, simulation, and Navigation2 processes are running. Restart any process that stopped.
Where do I run the network emulation command?
Open a terminal in the robot container desktop and run source ~/workshop_env.bash, followed by just network_limit. Apply the tc/netem limits from within the container environment used for the experiments.
How do I know the emulated wireless limits are active?
just network_limit prints the applied parameters, including rate, latency variation, loss, and reordering. Look for output that states the simulation is applied with values such as a 25mbit rate and nonzero latency and loss.
Which ROS 2 topics should I target first when the link is constrained?
The /camera/image_raw and /camera/points streams dominate bandwidth, while /scan is small. Compress the streams when you need to preserve them. If you don’t need point-cloud data, use access control to block /camera/points. If you need complete point-cloud frames, use compression with the QoS block_first policy.
When should I use downsampling instead of compression?
Use downsampling when the compressed camera stream still exceeds the available link capacity. Set the forwarded image rate less than the sustained capacity of the link to trade frame rate for steadier delivery and lower jitter.
Next