ArduPilot 4.5(及更高版本)提供了一个网络接口框架,允许局域网和广域网连接。一些后续的自动驾驶仪,例如ZeroOne X6,提供了以太网 MAC 接口,这使得 ArduPilot 能够使用传输层 UDP 或 TCP 协议通过 IP 连接到车辆外设、数据服务器,甚至广域网。
此外,搭载基于 H7 处理器的自动驾驶仪可以使用 PPP(点对点协议)、 PPP 至以太网适配器 和自定义固件版本通过串行端口连接到以太网。有关更多详细信息,请参阅下面的 PPP 配置部分 。
目前,ArduPilot 内置的常规串行管理器挂钩不仅允许串行协议通过常规 UART 连接连接到自动驾驶仪,还可以通过网络连接连接到自动驾驶仪。网络连接可以使用以太网或 PPP 接口。
此外,LUA 脚本绑定允许自动驾驶仪通过 LUA 脚本运行网络服务器类型的应用程序。Web 服务器 LUA 示例可作为小程序使用,以便更快地下载日志并显示车辆/系统状态数据。
对于具有网络接口的外设,ArduPilot 提供 AP_Periph 固件,允许使用外设的串行或 DroneCAN 接口轻松开发网络外设,并轻松设置将这些设备的数据传输到网络自动驾驶仪的方法。
ArduPilot 网络框架概述
ArduPilot 提供了一个 NET 管理器工具,其中包含 IP 协议引擎以及 UDP 和 TCP 传输层引擎。它提供了四个可配置的 IP 端口,每个端口都可以是 UDP 或 TCP、客户端或服务器。自动飞行器可以使用这些端口的数据流,就像使用以下设备的数据流一样:
-
ArduPilot 支持的串行设备(即测距仪、万向节、串行 ESC 等)
-
与另一飞行器或 GCS 的 MAVLink 连接
此外,自动驾驶仪上运行的 LUA 脚本可以访问这些数据端口。

配置
-
必须将NET_ENABLE设置为“1”并重新启动自动驾驶仪才能查看网络参数:
以太网MAC配置
如果自动驾驶仪具有以太网 MAC 地址,则适用以下参数。这是全局 6 字节 MAC 地址。默认值由自动驾驶仪的 CPU 唯一 ID 自动生成,但可以根据需要进行更改。
自动驾驶仪 IP 地址
以下参数保存自动驾驶仪的 4 字节 IP 地址。默认值为 192.168.144.14
-
NET_IPADDR0 (e.g. 192)
-
NET_IPADDR1 (e.g. 168)
-
NET_IPADDR2 (e.g. 144)
-
NET_IPADDR3 (e.g. 14)
如果网络有 DHCP 服务器,则可以通过使用NET_DHCP 参数启用 ArduPilot 的 DHCP 客户端来动态分配这些,或者根据需要手动设置。
子网掩码和网关
子网掩码限制了自动驾驶仪可以直接通信的 IP 地址。
-
NET_NETMASK 是子网掩码的前导位数。例如,如果设置为 24(默认值),则子网掩码为 255.255.255.0。
网关 IP 地址用于与 NET_NETMASK 定义的本地子网之外的 IP 地址通信时进行路由。任何位于掩码子网范围之外的目标 IP 都将发送到网关的 MAC 地址以及最终目标 IP 地址。默认值为 192.168.144.1
.
-
NET_GWADDR0 (e.g. 192)
-
NET_GWADDR1 (e.g. 168)
-
NET_GWADDR2 (e.g. 144)
-
NET_GWADDR3 (e.g. 1)
PPP 配置
此功能允许任何基于 H7 CPU 的自动驾驶仪使用 PPP 通过串行端口连接到网络。这可以是串行 PPP 设备,也可以是 PPP 到以太网适配器。
注意
此设置不适用于内置以太网 MAC 的自驾仪。目前每台自驾仪仅允许一个网络连接。此外,自驾仪上只有一个串口可以配置为 PPP。
要启用此功能,首先必须将其包含在自动驾驶仪固件中。这可以通过 自定义固件构建服务器 或者使用“--enable-PPP”waf 配置选项在本地构建代码 (看 构建代码)

将基于 H7 的自动驾驶仪的一个串行端口连接到以太网交换机或以太网转 PPP 适配器的 USART 端口。为了获得最佳性能,应使用具有流控制的串行端口(例如,通常为 SERIAL1 或 SERIAL2)。如果使用不带流控制的端口,则波特率最高可设置为 921000。
要为 PPP 配置串行端口(本例中使用 Serial2):
-
设置 SERIAL2_PROTOCOL = 48 (PPP) 需要重新启动才能生效。
-
设置 SERIAL2_BAUD = 12500000 (12.5MBaud)
ArduPilot 端口配置
这些参数适用于以太网或 PPP 数据链路连接到网络。每个网络物理接口的四个逻辑端口的参数(仅显示端口 1 的示例):
-
NET_P1_TYPE:类型可选为禁用 (0)、UDP 客户端 (1)、UDP 服务器 (2)、TCP 客户端 (3) 或 TCP 服务器 (4)。对于这两种客户端类型,必须设置有效的目标 IP 地址。对于这两种服务器类型,可以使用 0.0.0.0 或自动驾驶仪的本地 IP 地址。如果 IP 设置为 255.255.255.255,UDP 客户端类型将使用广播;如果 IP 在多播地址范围内,则使用 UDP 多播。设置类型后,需要重启才能查看以下参数。
-
NET_P1_IP0, NET_P1_IP1, NET_P1_IP2, NET_P1_IP3:客户端发送数据包的 IP 地址。可以为 0.0.0.0 或自动驾驶仪服务器的 IP 地址。更改后需要重启设备。
-
NET_P1_PORT:这是 TCP 或 UDP 端口号。更改后需要重启设备。
-
NET_P1_PROTOCOL:这会将此端口注册到 ArduPilot 串行管理器,使其显示已连接使用指定协议的设备。这样,ArduPilot 就可以像使用来自 UART 连接设备或连接的数据一样使用这些数据。更改后需要重启设备。
下图显示了以太网万向节的典型单设备设置。

下图显示了一个典型的车辆系统,该系统具有多个外围设备以及一个可选的地面工厂网络连接,用于数据检索和车辆设置。

服务器还是客户端?
客户端或服务器的选择取决于所连接设备的功能。如果是 TCP 服务器,那么 ArduPilot 的端口应该是 TCP 客户端。如果是 UDP 客户端,那么 ArduPilot 应该是 UDP 服务器。
一般来说,如果设备对于自动驾驶仪来说是可控的,那么它应该是服务器,始终监听命令(例如电调、云台等)。如果是连续数据流(例如空速传感器),那么它可能是客户端,能够直接发送数据而无需查询。
脚本
LUA 脚本的网络访问通过几个套接字样式绑定(搜索“套接字”)提供,允许脚本连接和管理从脚本到网络的 UDP 或 TCP 数据流。
示例脚本在自动驾驶仪上实现了一个简单的 Web 服务器应用程序,该应用程序允许访问 SD 卡(用于快速下载日志)和访问自动驾驶仪状态(本例中为布防和 GPS/AHRS 位置),可在此处和自述文件获取。
在 SITL 下运行 Web 服务器脚本
-
运行 SITL
-
启用脚本 (SCR_ENABLE = 1),重新启动 SITL
-
设置 SCR_VM_I_COUNT = 1000000,重启 SITL
-
将本地网络浏览器连接到 “http://127.0.0.1:8080”(不要按照所示输入以避免使用 https)
生成的网页

通过网络连接自动驾驶仪连接到 Web 服务器
为了将运行 Web 服务器的自动驾驶仪连接到本地网络,以允许其他 PC 访问该服务器:
电缆适配器、电缆和接线
大多数以太网设备都使用带有 RJ-45 连接器的 CAT5(或更高)电缆进行互连。这些连接器显然过于笨重,不适合用于自动驾驶仪或车载以太网交换机。因此,人们会使用 4 针或 5 针 JST-GH 或 Picoblade 连接器。有关已知设备的列表,请参阅 以太网适配器 页面。
可能需要使用完整的 CAT5 电缆来连接车辆组件以实现更长的线路,但使用两对 22-24 AWG 的双绞线即可实现 1-2 米或更短的线路。从自动驾驶仪到开关以及外围设备的线路都可以使用短双绞线和 JST-GH/Picoblade 连接器来实现。