DDS 通信是否可以在不同网络中的两台计算机之间进行?
Does DDS communication works between 2 computers in different networks?
我对 DDS 很陌生。我正在使用基于 DDS 构建的 ROS2。我想 运行 一个基于 ROS2 的发布者并订阅一个基于 RTI Connext 的 Simulink 模型,两者都位于不同的 PC 上。
我想在 2 台不同的 PC 之间进行通信。
问题:
- 两台 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
我对 DDS 很陌生。我正在使用基于 DDS 构建的 ROS2。我想 运行 一个基于 ROS2 的发布者并订阅一个基于 RTI Connext 的 Simulink 模型,两者都位于不同的 PC 上。
我想在 2 台不同的 PC 之间进行通信。
问题:
- 两台 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