Skip to content

Instantly share code, notes, and snippets.

@cardboardcode
Last active September 7, 2026 15:15
Show Gist options
  • Select an option

  • Save cardboardcode/b21aa55651d2e1af4940c0b41be39a16 to your computer and use it in GitHub Desktop.

Select an option

Save cardboardcode/b21aa55651d2e1af4940c0b41be39a16 to your computer and use it in GitHub Desktop.
For People In A Hurry: How To Set Up Zenoh Bridge on a Turtlebot4

Note

This is a quick copy-paste-observe guide that shows you how to set up and run a Zenoh Bridge.

Please refer to the references below if unclear on what is a Zenoh Bridge.

Instruction(s) πŸ“˜

  1. Download binaries for Zenoh Bridge.

Release Page: https://github.com/eclipse-zenoh/zenoh-plugin-ros2dds/releases/tag/1.9.0 Asset Name: zenoh-plugin-ros2dds-1.9.0-aarch64-unknown-linux-gnu-standalone.zip

wget https://github.com/eclipse-zenoh/zenoh-plugin-ros2dds/releases/download/1.9.0/zenoh-plugin-ros2dds-1.9.0-aarch64-unknown-linux-gnu-standalone.zip

Note

Last verified working with the above version of Zenoh Bridge

  1. Unpack the following binary:
unzip zenoh-plugin-ros2dds-1.9.0-aarch64-unknown-linux-gnu-standalone.zip zenoh-bridge-ros2dds
  1. Create the following config.json5 Zenoh Bridge configuration file:
{
  plugins: {
    ros2dds: {}
  },

  mode: "client",

  connect: {
    endpoints: [
      "tcp/<INSERT IP ADDRESS OF ZENOH ROUTER HERE>:7447"
    ]
  }
}

Replace <INSERT IP ADDRESS OF ZENOH ROUTER HERE> with the actual IP address of a Zenoh Router you intend to use. Eg. 192.168.100.50

Note

For further details on how to configure, please refer to this template DEFAULT_CONFIG.json5.

  1. Run Zenoh Bridge manually using the command below:
./zenoh-bridge-ros2dds -c config.json5

Reference(s) πŸ“š

  1. What is Zenoh - https://zenoh.io/docs/overview/what-is-zenoh/
  2. Integrating ROS 2 with Eclipse Zenoh - https://zenoh.io/blog/2021-04-28-ros2-integration/
  3. Can't teleoperate TB4 with remote PC - turtlebot/turtlebot4#494 (comment)
@cardboardcode

cardboardcode commented Aug 30, 2026 •

Copy link
Copy Markdown
Author

πŸŒ‰ Looking To Run Zenoh Bridge Detached [SUDO]?

It would get very cumbersome and inefficient if you have to start Zenoh Bridge manually for multiple Turtlebot4s in your fleet. Therefore, follow the steps below to run Zenoh Bridge as a boot-persistent service daemon:

Instructions πŸ“˜

sudo nano /etc/systemd/system/zenoh-bridge.service
[Unit]
Description=Zenoh Bridge ROS 2 DDS
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=< INSERT PATH TO ZENOH BRIDGE BINARY >/zenoh-bridge-ros2dds -c < INSERT PATH TO ZENOH CONFIG JSON >/bridge.json5
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

Replace < INSERT PATH TO ZENOH BRIDGE BINARY > with the directory path to the binary.
Replace < INSERT PATH TO ZENOH CONFIG JSON > with the directory path to the .json5 configuration file.

sudo systemctl daemon-reload
sudo systemctl enable zenoh-bridge.service
sudo systemctl start zenoh-bridge.service

Verify βœ…

sudo systemctl status zenoh-bridge.service

It should show that its status to be active.

sudo journalctl -u zenoh-bridge.service -f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment