DDS 通信在不同网络中的两台计算机之间是否有效?



我对DDS很陌生。我正在使用基于 DDS 构建的 ROS2。我想运行一个基于 ROS2 的发布商,并订阅一个基于 RTI Connext 的 Simulink 模型,这两个模型都位于不同的 PC 上。

我希望在 2 台不同的 PC 之间进行通信。

问题:

  • 两台PC是否应位于同一网络中。
  • 是否应启用多播?多播在我公司的网络中被阻止。有没有其他选择?

是的,两台 PC 必须位于同一网络下。 组播用于发现 ROS2 中的节点。

如果您的公司不提供必要的网络支持,您可以随时尝试构建自己的网络支持。例如,您可以使用交换机并将两台PC连接到它。

或者您可以使用手机。我用手机创建了一个热点,其中连接了 4 台设备并使用 ROS2 进行通信。

但是,如果您需要访问公司网络,请询问您的 IT 部门是否可以为您设置连接到具有多播:)网络的交换机

编辑:如另一个答案中所述,可以执行静态发现。但是,这意味着修改RTI Connext RMW的ROS2配置> https://github.com/ros2/rmw_connext

如果计算机位于同一网络上,并且启用了多播,并且多播 TTL 足够高,并且计算机在同一域上发布/订阅同一主题,并且它们的类型和 QoS 兼容,则它们应自动发现彼此。

如果禁用了多播,您可以告诉 DDS 参与者使用特定地址进行对等(请参阅"初始对等体"的文档(。 这可以通过不同的方式完成。 这是一个很好的参考:初始对等方

最新更新