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 通信是不是可以在不同网络中的两台计算机之间进行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Visual Studio 2010 在 C# 中的两台不同机器上运行的客户端和服务器之间的通信

TCP路径MTU发现

ip与子网掩码,啥样的两台计算机能互相通信。

图解网络

网络通信--Python高级

如何使用 R 连接两台计算机?