下载地址

https://mirrors.tuna.tsinghua.edu.cn/eclipse/zenoh/zenoh-plugin-ros2dds/1.9.0/

Releases · eclipse-zenoh/zenoh-plugin-ros2dds · GitHub

zenoh-plugin-ros2dds-<版本>-<CPU架构>-<操作系统>-<libc/变种>-<打包类型>.zip

​## 命名规则拆解
这些文件名遵循统一的规则:

zenoh-plugin-ros2dds-<版本>-<CPU架构>-<操作系统>-<libc/变种>-<打包类型>.zip

四个字段含义如下:

字段 取值 含义
CPU 架构 x86_64 Intel / AMD 64 位(普通 PC、多数服务器)
aarch64 ARM 64 位(Apple Silicon Mac、树莓派 4/5、Jetson Orin、ARM 云服务器)
armv7 ARM 32 位硬浮点(树莓派 2、部分老嵌入式板)
arm-unknown-linux-gnueabi ARM 32 位软浮点(很少见的旧板子)
arm-unknown-linux-gnueabihf ARM 32 位硬浮点(同 armv7,ABI 命名不同)
操作系统 apple-darwin macOS
unknown-linux Linux
pc-windows Windows(1.9.0 列表里可能也有)
libc / 变种 gnu 使用 glibc,即绝大多数主流 Linux(Ubuntu / Debian / CentOS 等)
musl 静态链接 musl libc,适合 Alpine Linux 或需要完全静态二进制的场景
msvc Windows 专用
打包类型 standalone 独立可执行文件,解压后直接 ./zenoh-bridge-ros2dds 运行,内嵌 Zenoh 路由功能,不依赖任何其他包
debian .deb 安装包,用 dpkg -i 安装到系统,仅作为 zenohd 路由器的插件加载,不能单独运行

应该下载哪一个

绝大多数情况选 standalone,因为它解压即用,不依赖 zenohd 路由器,命令就是 zenoh-bridge-ros2ddsdebian 版只是个插件动态库,需要配合 zenohd 一起跑,对单独做 ROS 2 桥接的用户来说反而麻烦。
按你的运行平台对号入座(在你列出的 1.9.0 文件里):

  • 普通 Ubuntu/Debian PC(Intel/AMD CPU) → 列表里没贴出来,文件名应为
    zenoh-plugin-ros2dds-1.9.0-x86_64-unknown-linux-gnu-standalone.zip
  • 树莓派 4/5、Jetson Orin、ARM 云主机(64 位 ARM)
    zenoh-plugin-ros2dds-1.9.0-aarch64-unknown-linux-gnu-standalone.zip
  • Apple Silicon Mac(M1/M2/M3/M4)
    zenoh-plugin-ros2dds-1.9.0-aarch64-apple-darwin-standalone.zip
  • Intel Mac
    zenoh-plugin-ros2dds-1.9.0-x86_64-apple-darwin-standalone.zip
  • Alpine Linux 容器 → 选对应的 musl-standalone
  • 想用 apt/dpkg 管理、且已经在跑 zenohd 路由器 → 才考虑 debian

一句话决策

先确认自己的 CPU 架构(uname -mx86_64aarch64)和系统,然后在 release 列表里找 -standalone.zip 结尾、且架构和系统匹配的那一个下载即可。
补充一个国内下载加速:GitHub Releases 国内拉取慢时,可改用清华镜像站,路径结构为 https://mirrors.tuna.tsinghua.edu.cn/eclipse/zenoh/zenoh-plugin-ros2dds/1.9.0/,文件名与 GitHub Release 完全一致。

pip install eclipse-zenoh
python3 turtle_control.py

import zenoh
import struct
import time
import sys


def serialize_twist_cdr(linear_x, linear_y, linear_z,
                        angular_x, angular_y, angular_z):
    """
    将 geometry_msgs/msg/Twist 序列化为 CDR 格式字节流。
    
    Twist 结构:
      Vector3 linear   (float64 x, y, z)
      Vector3 angular  (float64 x, y, z)
    
    CDR 格式:
      [4字节头] + [6个float64小端] = 4 + 48 = 52字节
    """
    # CDR 封装头: 0x00, 0x01=小端, 0x00, 0x00
    header = bytes([0x00, 0x01, 0x00, 0x00])
    # 6个 float64, 小端序
    data = struct.pack('<6d',
                       linear_x, linear_y, linear_z,
                       angular_x, angular_y, angular_z)
    return header + data


def main():
    # 1. 连接本地 zenoh-bridge-ros2dds (默认端口 7447)
    config = zenoh.Config()
    config.insert_json5("connect/endpoints", '["tcp/127.0.0.1:7447"]')
    session = zenoh.open(config)
    print("✅ 已连接到 Zenoh 桥接器 (127.0.0.1:7447)")


    key = 'turtle1/cmd_vel'

    # 2. 声明发布者
    pub = session.declare_publisher(key)
    print(f"✅ 已声明发布者: {key}")
    print("🚀 开始以 1Hz 发布 Twist 消息 (linear.x=2.0, angular.z=1.8)")
    print("   按 Ctrl+C 停止\n")

    try:
        while True:
            # 3. 序列化并发布 CDR 格式的 Twist 消息
            payload = serialize_twist_cdr(
                linear_x=2.0, linear_y=0.0, linear_z=0.0,
                angular_x=0.0, angular_y=0.0, angular_z=1.8
            )
            pub.put(payload)
            print(f"📤 已发布: linear.x=2.0, angular.z=1.8  ({len(payload)} bytes)")
            time.sleep(1)  # --rate 1 = 每秒1次

    except KeyboardInterrupt:
        print("\n🛑 停止发布")
    finally:
        session.close()
        print("✅ Zenoh 会话已关闭")


if __name__ == '__main__':
    main()

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐