0

我有一个配置,其中 3 个应用程序在 3 个不同的虚拟机上运行,​​它们必须通过 DDS 即 RTPS 协议进行通信。配置如下:

  1. 基于 ROS2 的 ADAS 功能
  2. 模拟工具
  3. 基于 Python/Tensorflow 的机器学习函数

所有 3 个都需要在不同的虚拟机上。

在我们这一端,不允许 MS AZURE VM 和我们的网络进行多播是不可能的。这里有一些问题:

  1. 是否仍然可以通过 DDS 进行通信?
  2. 如果是,通过单播,即点对点连接?
  3. 如果我已经可以选择基本的 UDP 套接字编程,那么在这种情况下使用 DDS 通信是否有益?
  4. 您能想到将 DDS 用于此类配置的任何限制/进一步问题吗?
4

1 回答 1

1

是否仍然可以通过 DDS 进行通信?

是的。开箱即用,DDS 参与者仅在启动时使用多播来发现其他 DDS 参与者。这种发现机制可以通过多种方式进行配置。有关如何实现此目的的说明,请参阅此 RTI 社区知识库文章:将 RTI Connext DDS 配置为不使用多播

如果是,通过单播,即点对点连接?

是的,通过无组播设置,所有通信都通过 UDP 单播、对等、无连接进行。

如果我已经可以选择基本的 UDP 套接字编程,那么在这种情况下使用 DDS 通信是否有益?

与 UDP 相比,不能使用多播并不会消除 DDS 的任何优势。使用 DDS 时,传输/发现配置通常对应用程序不可见,所有发布/订阅概念保持不变。

如果您询问使用 DDS 与 UDP 相比的优势,我认为这本身就值得提出一个新问题。答案将非常广泛:-)

您能想到将 DDS 用于此类配置的任何限制/进一步问题吗?

使用此配置,您的配置设置将取决于您运行的网络。这意味着迁移到不同的网络可能需要重新配置,例如提供不同的主机名或 IP 地址。这很不方便,但并不难。

由于您的环境限制了多播的使用,如果有更多您没有提到或发现的限制,我不会感到惊讶。例如,您了解防火墙或网络带宽限制吗?同样,可以将 DDS 配置为处理此类事情,但您需要首先了解它们。

于 2018-08-30T13:06:19.120 回答