DDS 通信是否可以在不同网络中的两台计算机之间进行?

Does DDS communication works between 2 computers in different networks?

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

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

问题:

是的,两台电脑必须在同一个网络下。 多播用于发现 ROS2 中的节点。

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

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

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

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

如果计算机在同一个网络上,并且启用了多播,并且多播 TTL 足够高,并且计算机 publishing/subscribing 在同一域的同一主题上,并且它们的类型和 QoS是兼容的,那么他们应该自动发现对方。

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