You're reading the documentation for an older, but still supported, version of ROS 2. For information on the latest version, please have a look at Kilted.

Getting Started

This guide walks you through setting up Zenbedded end-to-end.

Prerequisites

  • ROS 2 Jazzy (or later)

  • A Zephyr-supported board (ESP32-S3 reference target)

  • west installed and configured

1. Build the ROS 2 workspace

mkdir -p ~/zephyr_zenoh_ws/src
cd ~/zephyr_zenoh_ws/src
git clone git@github.com:ros-controls/zenbedded.git
cd ~/zephyr_zenoh_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build

2. Build and flash a demo firmware

The easiest route is the Docker development environment, which provides a ready-made west workspace with the modules and zenoh-pico preloaded (see the Docker):

cd /zephyr_ws/demos/inverted_pendulum
west build -p always -b esp32s3_devkitc/esp32s3/procpu
west flash --esp-device /dev/ttyUSB0

Note

A standalone host west workspace is not supported yet – the repository has no root west.yml to initialize from.

3. Run the hardware interface (ROS 2 host)

The hardware interface is loaded via the ros2_control plugin system. You can test it with the included test suite:

source ~/zephyr_zenoh_ws/install/setup.bash
colcon test --packages-select zenbedded_hardware_interface

For integration with a real MCU, the zenbedded_hardware_interface must be instantiated in a ros2_control URDF with the required parameters. See the zenbedded_hardware_interface for parameter details.

4. Verify

# Verify the plugin is registered
ros2 control list_hardware_interfaces

# Monitor Zenoh topics (if MCU is publishing)
zenohc sub rt/robot/state