机器人系统的网络通常使用没有路由器的内部以太网,但可以连接到我无法访问的外部路由器

机器人系统的网络通常使用没有路由器的内部以太网,但可以连接到我无法访问的外部路由器

注意:我是网络方面的新手。另外,不需要重新设计机器人硬件的建议优先考虑

我正在开发一款开源水下机器人 (AUV),我的机器人目前使用 UDP 通过内部以太网线路传输数据包。机器人中有 3 个非托管网络交换机(嵌入在系统中)、一个带有 1 个以太网端口和 1 个 wifi 端口的 SOC 计算机(Latte Panda Alpha、DJI Manifold 2 或 raspberry pi 4),以及多个使用 W5500 芯片通过以太网进行通信的低级微控制器。

为了避免我所在大学的企业网络系统出现问题(该系统要求每台设备都获得 24 小时的连接批准),我可以将机器人连接到我的家庭互联网。在那里,我可以使用 UDP 在所有模块、SOC 和我的个人计算机之间进行通信。目前,我已将所有设备设置为静态 IP,以尽量减少连接难度。在将机器人发布到社区时,我确实对此设置有一些担忧。

我更喜欢的系统行为是这样的:当与外部路由器/互联网断开连接时,机器人会在本地进行通信。当连接到外部路由器/互联网时(当水下机器人被束缚时),设备会继续在本地不间断地相互通信,并且 SOC 会连接到路由器/互联网。我还希望能够在机器人在岸上时将 SOC 连接到 WIFI 以通过 SSH 进入设备,并保持内部设备在本地进行通信。

我担心外部路由器不接受静态 IP,或者可能更改它们,导致机器人失去本地通信。我还担心外部路由器会阻止 UDP 数据包。

我可以向 SOC 添加一些路由器软件,或者将 UDP 更改为其他通信协议,或者其他什么,但我对实际网络不太熟悉,不知道这种系统的最佳配置。我也无法将完整的商用路由器添加到系统中,因为它不适合。

简而言之:

  1. 我可以在没有路由器的情况下在板载所有设备之间进行本地通信吗?(如果不行,我可以将路由器软件添加到 SOC)。
  2. 如果我连接了路由器(我无法访问),我该如何保持本地通信正常运转?
  3. 如果我希望 SOC 通过 Wi-Fi 连接互联网,并使用以太网进行本地通信,这可能吗?

任何帮助/建议都将不胜感激!下面是没有路由器和有路由器的轮廓图片。Wifi 并非始终启用或可用。 无需设置路由器 使用路由器设置

答案1

我可以在没有路由器的情况下在板载所有设备之间进行本地通信吗?(如果不行,我可以将路由器软件添加到 SOC)。

是的。仅当与本地子网外的节点进行通信时才需要路由器。

如果我连接了路由器(我无法访问),我该如何保持本地通信正常运转?

如果您使用静态寻址,路由器不会也不能更改它的任何内容。但是,对于本地子网外的通信,您需要使用路由器的寻址。您也可以坚持使用本地静态寻址,每个接口使用多个地址,或者最好使用多个接口,一个用于内部通信,一个用于外部通信(有或没有网关/路由器)。

如果我希望 SOC 通过 Wi-Fi 连接互联网,并使用以太网进行本地通信,这可能吗?

当然。如上所述,使用专用接口进行外部通信将是更简洁的方法 - 这是以太网与 Wi-Fi 的共同点,但对于同时使用以太网的两种情况来说也是一个不错的选择。

重点是主机可以使用多个接口,而一个接口可以使用多个 IP 地址用于不同目的。如果 IP 堆栈允许,您甚至可以在同一接口上使用静态地址进行内部通信,使用 DHCP 地址进行外部/网关通信。使用双接口,这无论如何都不是问题。

对于静态、非路由寻址,您应考虑使用来自 169.254.0.0/16 的链路本地(又名 Zeroconf)或 APIPA 地址。否则,请使用来自 RFC 1918 的地址(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)。

相关内容