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

时间:2018-06-25 13:09:53

标签: networking simulink multicast data-distribution-service ros2

我对DDS相当陌生。我使用的是基于DDS的ROS2。我想运行一个基于ROS2的发布者,并订阅一个都位于不同PC上的基于RTI Connext的Simulink模型。

我想要两台不同PC之间的通信。

问题:

  • 两台PC是否应位于同一网络中。
  • 是否应该启用多播?多播在我公司的网络中被阻止。是否有替代方法?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

编辑:如另一个答案中所述,可以进行静态发现。但是,这将暗示修改RTI Connext RMW> https://github.com/ros2/rmw_connext

的ROS2配置

答案 1 :(得分:1)

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

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