移动机器人基地的网络设置

移动机器人基地的网络设置

我正在研究一个移动机器人基座,它应该由一个固定控制站控制。机器人本身有多台计算机,它们位于内部以太网网络上。控制软件分布在这些设备上,并使用 ROS2 进行通信。机载主控制器运行 Ubuntu 服务器 22.04,只有它连接到控制站上的主路由器,使用整个建筑物中的多个 WiFi 接入点。网络配置由 netplan 使用 NetworkManager(而非 networkd)作为后端进行管理。

我想做的是让主控制器以某种方式桥接两个网络,而无需 NAT。主网络上还有另一台服务器,我也可以使用它。

理想情况下它应该能够:

  • 路由所有流量包括广播数据包,基本上与两者之间的直接以太网链路相同,或者至少允许 ROS2 DDS 数据包通过
  • 使用主路由器进行 DHCP
  • 延迟最小,但吞吐量不太重要

基本上,我正在寻找一个 WiFi 客户端桥,但是我拥有的桥绑定到单个 AP MAC 并且根本不漫游。

我首先尝试使用 netplan 在 WiFi 接口和以太网之间建立桥接,但不知何故,将 WiFi 接口添加到桥接会导致它永远无法启动。然后我设置了 dnsmasq 和 iptables,让主控制器充当单独的 DHCP 服务器和 NAT 路由器,但这会阻止大多数流量通过,并且不允许 ROS2 节点与主网络通信。

我的想法是:

  • Tailscale,因为它也允许通过它共享子网,但我还没有测试它是否允许广播数据包通过,而且我认为在本地网络上应该可以使用更轻量级的解决方案,因为我不需要流量通过互联网。
  • 主控制器上的 DHCP 中继,但这并不能解决路由问题。我根本无法让它工作,我猜是因为中间的 WiFi 连接。
  • 1 对 1 NAT,但我找不到有关如何在 Ubuntu 上设置它的任何最新信息。

我听说 IPv6 消除了对 NAT 的需求,结合 DHCP 中继也许可以实现这一点,但我找不到任何关于如何设置 IPv6 路由的信息。也许我的 Google 能力不够强。

我所尝试做的事情有可能实现吗?

相关内容