You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zenoh与ROS2集成:跨环境运行turtlesim遇INVALID传输错误求助

问题分析与解决方案

核心错误原因

日志中的Received a close message (reason INVALID)通常是zenoh两端版本不兼容、网络通信失败或配置不匹配导致的连接建立失败。

修复步骤

1. 对齐zenoh组件版本

错误显示使用的是zenoh-transport-1.0.0-beta.3,2021年的教程版本与当前beta版本可能存在兼容性问题:

  • 卸载Ubuntu虚拟机中的zenoh-bridge-ros2,重新安装与本机Python zenoh 包一致的稳定版本:
    sudo apt remove zenoh-bridge-ros2
    # 安装对应版本的桥接工具,确保与pip安装的zenoh版本匹配
    
  • 本机Python端重新安装匹配版本:
    pip uninstall zenoh
    pip install zenoh==<与桥接工具一致的稳定版本>
    

2. 强制使用IPv4通信

日志中使用IPv6地址通信,跨虚拟机场景下IPv6可能存在路由问题:

  • 虚拟机启动zenoh桥接时指定IPv4监听:
    zenoh-bridge-ros2 --listen tcp/0.0.0.0:7447 --no-multicast-scouting
    
  • 本机Python脚本中指定虚拟机IPv4地址连接:
    import zenoh
    config = zenoh.Config({"connect": {"endpoints": ["tcp://<虚拟机IPv4地址>:7447"]}})
    session = zenoh.open(config)
    

3. 解除防火墙端口限制

  • Ubuntu虚拟机开放zenoh默认通信端口:
    sudo ufw allow 7447/tcp
    
  • 检查Mac本机防火墙设置,允许运行Python脚本的程序获取网络连接权限。

4. 调整虚拟机网络模式

若使用NAT模式,本机无法直接访问虚拟机服务:

  • 将虚拟机网络切换为桥接模式,确保虚拟机与Mac本机处于同一局域网段,获取可直接访问的IPv4地址。

验证流程

  1. Ubuntu虚拟机中启动turtlesim节点:
    ros2 run turtlesim turtlesim_node
    
  2. 启动配置好的zenoh桥接:
    zenoh-bridge-ros2 --listen tcp/0.0.0.0:7447
    
  3. 运行Mac本机的Python脚本,发送cmd/vel消息,验证海龟是否正常移动。

内容的提问来源于stack exchange,提问作者J S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:33:18