ArduPilot 网络接口¶
从固件 4.5 及更高版本开始,ArduPilot 提供了一个网络接口框架,允许本地和广域网络连接。Pixhawk6X 和 CubePilot CubeRed 等几款新一代(飞行)控制器提供以太网 MAC 接口,允许 ArduPilot 使用传输层 UDP 或 TCP 协议通过 IP 连接到载具外设、数据服务器甚至广域网。
此外,对于未集成以太网 MAC 的基于 H7 处理器的定制构建,可以使用 ArduPilot 定制固件服务器 它包括 PPP(点对点协议),允许使用 PPP 通过(飞行)控制器的串行端口进行网络连接。
备注
对于那些 本地生成固件PPP 可与 -enable-ppp 配置选项一起使用。
目前,通过 ArduPilot 内的普通串行管理器钩子,串行协议不仅可以通过普通 UART 连接连接到(飞行)控制器,还可以通过网络连接连接到(飞行)控制器。这些连接可与 Etnernet 或 PPP 接口一起使用。
此外,LUA 脚本绑定允许(飞行)控制器通过 LUA 脚本运行网络服务器类型的应用程序。网络服务器 LUA 示例以 applet 的形式提供,可加快日志下载速度,并显示载具/系统状态数据。
对于带有网络接口的外围设备,ArduPilot 的 AP_Periph 固件允许使用外围设备的串行接口或 DroneCAN 接口轻松开发网络外围设备,并通过轻松设置的方法将这些设备的数据通过网络传输到(飞行)控制器。
ArduPilot 网络框架概述¶
ArduPilot 提供了一个 NET 管理器,可提供 IP 协议引擎以及 UDP 和 TCP 传输层引擎。有四个可配置的 IP 端口,每个端口都可以是 UDP 或 TCP、客户端或服务器端口。(飞行)控制器可以使用这些端口的数据流,就像使用 UDP 或 TCP 数据流一样:
ArduPilot 支持的串行设备(如测距仪、云台、串行电调等)。
与另一辆车或 GCS 的 MAVLink 连接
此外,在(飞行)控制器上运行的 LUA 脚本也可以访问这些数据端口。
配置¶
NET_ENABLE 必须设置为 "1 "并重启(飞行)控制器才能查看网络参数:
以太网 MAC 配置¶
如果(飞行)控制器具有以太网 MAC,则适用以下参数:
这是全局 6 字节 MAC 地址。默认值由(飞行)控制器 CPU 的唯一 ID 自动生成,但也可根据需要进行更改。
这是(飞行)控制器的 4 字节 IP 地址。默认为 192.168.13.14
.如果网络有 DHCP 服务器,可以通过使用 NET_DHCP 参数,或根据需要手动设置。
NET_NETMASK 是子网掩码中设置的前导位数。例如,如果设置为 24,则子网掩码为 255.255.255.0,这是默认值。
这是网关在本地子网之外的 IP 地址。 NET_NETMASK 屏蔽。任何在掩码子网范围之外的目标 IP 都将被发送到网关的 MAC 地址和最终目标 IP 地址。
PPP 配置¶
该功能允许基于 H7 cpu 的(飞行)控制器通过串行端口使用 PPP 连接到网络。
备注
此功能不能用于内置以太网 MAC 的(飞行)控制器。目前每个(飞行)控制器只允许一个网络连接。此外,(飞行)控制器上只能有一个串行端口配置为 PPP。
要启用该功能,首先必须在(飞行)控制器固件中存在该功能。可以使用 定制固件构建服务器 或使用"-enable-ppp "waf 配置选项在本地编译代码(参见 编写代码)
为 PPP 配置串行端口(本例中使用串行 2):
设置 serial2_protocol = 48 (PPP) 需要重新启动才能生效。
设置 SERIAL2_BAUD = 12500000(12.5MBaud)
备注
要获得最佳吞吐量,串行端口应具有流量控制(RTS/CTS),并应启用和使用。如果使用不带流量控制的端口,可以将波特率设置为 921000。
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 地址。服务器的 IP 地址可以是 0.0.0.0 或(飞行)控制器的 IP 地址。更改后需要重启。
NET_P1_PORT:这是 TCP 或 UDP 端口号。更改后需要重启。
net_p1_protocol:这将向 ArduPilot 串行管理器注册该端口,将其视为已连接使用指定协议的设备。这样 ArduPilot 就能像使用 UART 设备或连接一样使用数据。更改后需要重新启动。
下图显示了以太网万向节的典型单设备设置。
下图显示了一个典型的车载系统,该系统带有多个外围设备和一个可选的与工厂网络的地面连接,用于数据检索和载具设置。
服务器还是客户端?¶
客户端或服务器的选择取决于所连接设备的功能。如果是 TCP 服务器,那么 ArduPilot 的端口应该是 TCP 客户端。如果是 UDP 客户端,那么 ArduPilot 将是 UDP 服务器。
一般来说,如果一个设备是(飞行)控制器的可控对象,那么它就是一个服务器,始终在监听命令(电调、云台等)。如果是连续数据流(如空速传感器),则可能是客户端,无需询问即可发送数据。
脚本¶
对 LUA 脚本的网络访问有以下几种方式 套筒式绑带 (搜索 "socket"),允许脚本连接并管理从脚本流向网络的 UDP 或 TCP 数据流。
在(飞行)控制器上实施简单网络服务器应用程序的示例脚本,允许访问 SD 卡(用于快速下载日志)和访问(飞行)控制器状态(本例中为上膛和 GPS/AHRS 定位)。 这里 及其 在此阅读自述文件
在 SITL 下运行网络服务器脚本¶
运行 SITL
启用脚本 (SCR_ENABLE = 1),重新启动 SITL
设置 SCR_VM_I_COUNT = 1000000,重启 SITL
将本地网络浏览器连接到"http://127.0.0.1:8080"(不是如图所示的类型,以避免使用 https)
结果网页
通过网络附加(飞行)控制器连接到网络服务器¶
以便将运行网络服务器的(飞行)控制器连接到本地网络,允许其他 PC 访问服务器:
电缆适配器、布线和接线¶
大多数以太网设备都使用带有 RJ-45 接头的 CAT5(或更高)电缆互连。对于(飞行)控制器或车载以太网交换机来说,这些连接器显然过于笨重。取而代之的是 4 针或 5 针 JST-GH 或 Picoblade 连接器。因此,电缆适配器如 BotBox 适配器 或其他 RJ45 分线板连接到传统的 RJ45 接口时需要使用。
可能需要使用全 CAT5 电缆来互连较长线路的载具组件,但 1-2 米或更短的线路可以使用两对 22-24 AWG 的双绞线。从(飞行)控制器到开关和外围设备的连接都可以使用短双绞线和 JST-GH/Picoblade 连接器。