DDS 通信是不是可以在不同网络中的两台计算机之间进行?
Posted
技术标签:
【中文标题】DDS 通信是不是可以在不同网络中的两台计算机之间进行?【英文标题】:Does DDS communication works between 2 computers in different networks?DDS 通信是否可以在不同网络中的两台计算机之间进行? 【发布时间】:2018-06-25 13:09:53 【问题描述】:我对 DDS 很陌生。我正在使用基于 DDS 的 ROS2。我想运行一个基于 ROS2 的发布者并订阅一个基于 RTI Connext 的 Simulink 模型,它们都位于不同的 PC 上。
我想在两台不同的电脑之间进行通信。
问题:
两台 PC 是否应位于同一网络中。 应该启用多播吗?多播在我公司的网络中被阻止。有没有替代方案?【问题讨论】:
【参考方案1】:是的,两台电脑必须在同一个网络下。 多播用于发现 ROS2 中的节点。
如果您的公司不提供必要的网络支持,您可以随时尝试构建自己的网络。例如,您可以使用交换机并将两台 PC 连接到它。
或者您可以使用手机。我用我的手机创建了一个热点,连接了 4 台设备并使用 ROS2 进行通信。
但是,如果您需要访问公司网络,请询问您的 IT 部门是否可以为您设置一个连接到具有多播功能的网络的交换机 :)
编辑:如另一个答案中所述,可以进行静态发现。但是,这将意味着修改 RTI Connext RMW> https://github.com/ros2/rmw_connext
的 ROS2 配置【讨论】:
【参考方案2】:如果计算机在同一个网络,并且启用了多播,并且多播 TTL 足够高,并且计算机在同一域上发布/订阅同一主题,并且它们的类型和 QoS 兼容,则他们应该自动发现彼此。
如果多播被禁用,您可以告诉 DDS 参与者使用特定地址来对等(请参阅“初始对等点”的文档)。这可以通过不同的方式来完成。这是一个很好的参考:Initial Peers
【讨论】:
以上是关于DDS 通信是不是可以在不同网络中的两台计算机之间进行?的主要内容,如果未能解决你的问题,请参考以下文章