使用 ros2 主题列表时可以看到主题,但无法通过网络回显?



我在同一网络中有两台计算机(Ubuntu 20.04(,ROS_DOMAIN_ID=1,我有一个名为cloud的主题,它是来自激光雷达传感器的点云。驱动程序正在PC=A上运行,我想在PC=B上显示云。现在,当我在PC=A上ros2 topic echo /cloud时,我会正常接收消息。当我在PC=B上浏览2主题列表时,我会看到云主题。我只在设置ROS_DOMAIN_ID=1以确保没有该名称的先前主题可用后才能看到它。到目前为止还不错,但现在当我在PC=B上尝试ros2 topic echo /cloud时,我一无所获。知道为什么会这样吗?据我所知,消息正在到达,如PC=A上的ros2 topic echo /cloud所示,我可以在PC=B上看到它们,如ros2 topic list所示。有趣的是,ros2 topic info /cloud运行良好,告诉我发布者和订阅者分别为1和2。在PC=A上运行ros2 run demo_nodes_cpp talker演示程序,在PC=B上运行ros2 run demo_nodes_cpp listener演示程序也可以正常工作。这可能是因为传感器是UDP,而演示侦听器是tcp吗?

你好,我记得我在某个地方也遇到过这个问题,这是由dds版本不匹配引起的,你在两台电脑上使用相同的dds发行版(ROS2发行版(吗?ROS2有改变发行版中DDS版本的趋势,这两台电脑都是最新的吗?

您能检查您订阅的节点PC=B是否确实获得了信息吗?因为echo可能是错误的,但节点仍然可以接收。

如果您使用发现服务器,请不要忘记您必须是一个超级客户端。

我刚刚解决了这个问题"主题列表有效,主题回声不起作用;在我的Ubuntu 20.04 ROS2银河环境中。

我正在运行

  • ROS2银河,结束
  • Ubuntu 20.04 LTS桌面作为
  • VMware Fusion 12.2.4中的虚拟机
  • Mac Mini 2018运行
    • macOS蒙特利12.6.1

使用CYCLONE DDS:

  • TurtleBot4lite RaspberryPi4和
  • 创建3

当我将虚拟机网络适配器配置为时

  • "桥接适配器:WiFi";(具有高级选项:生成MAC ID(

我可以列出在两个ROS2平台上运行的节点中的主题,
但只能回显在Turtlebot4lite的RaspberryPi4上运行的结点中发布的主题。
Create3发布的主题不回显。

[我的解决方案]当我将虚拟机网络适配器更改为时

  • "桥接适配器:以太网";(具有高级选项:生成的MAC ID与生成的WiFI MAC ID相同(

魔术发生了!列表和回声主题

我在Ubuntu 22.04/ROS 2 Humble上遇到了同样的问题,只是在同一设备上的两个不同的Linux用户之间。对我来说,修复它的是将DDS中间件更改为Cyclone DDS,用于两个用户:

https://docs.ros.org/en/humble/Installation/DDS-Implementations/Working-with-Eclipse-CycloneDDS.html

默认情况下,我的Humble设置使用rmw_fastrtps_cpp(可以通过运行ps -ax | grep rmw-implementation来查看(,我想这可能会导致不同用户之间的通信问题。我不知道到底发生了什么,但对我来说已经足够了。

相关内容

  • 没有找到相关文章

最新更新