以太网连接提供了一种快速、可靠且灵活的通信替代方案,可用于替代 USB 或其他串行连接。
它可用于连接地面站、机载计算机和其他 MAVLink 系统。当连接到“原生”使用以太网的系统(例如 IP 无线电)时,特别推荐使用以太网。
要通过以太网连接系统,您需要将它们配置为运行在同一个 IP 网络上,以便每个系统都有唯一的 IP 地址并能找到其他系统。这可以使用 DHCP 服务器来分配地址,或者通过手动配置网络上每个系统的地址来完成。
没有一个通用的“开箱即用配置”能够保证在您的本地网络中正常工作。因此,作为您可能进行的配置类型的示例,下面我们将展示如何在一个 IP 网络上设置系统,该网络使用 10.41.10.xxx 范围内的静态地址,其中 PX4 拥有静态分配的地址 10.41.10.2 (PX4-默认),计算机拥有地址 10.41.10.1。如果您想将另一台机载计算机或其他系统连接到网络,可以使用类似的方法来分配一个静态地址。
这个网络配置本身并没有什么“特殊”之处(除了可能用于修改网络设置的工具不同);它的工作原理与任何家庭或企业网络非常相似。也就是说,具备 IP 网络工作原理的知识是非常有用的!
PX4 使用 netman 模块来应用和更新网络设置。
默认配置首先从 DHCP 请求一个 IP 地址,如果失败,将回退到默认静态地址 10.41.10.2。您可以显式设置任何静态 IP 地址(包括默认地址),以跳过初始 DHCP 检查并使连接更快一些。
信息 如果您想使用 PX4 的默认静态 IP 地址,可以直接跳到下一节。
网络设置在 SD 卡上的配置文件 /fs/microsd/net.cfg 中定义。这是一个文本文件,每行定义一个设置,格式为 名称=值 对。配置文件可能如下所示:
DEVICE=eth0
BOOTPROTO=fallback
IPADDR=10.41.10.2
NETMASK=255.255.255.0
ROUTER=10.41.10.254
DNS=10.41.10.254
其中各值的含义为:
eth0。proto 的有效值为:dhcp、static、fallback(先尝试 DHCP,超时失败后回退到静态地址)。BOOTPROTO 是 static 或 fallback 则使用)。要使用 QGroundControl 设置上述“示例”配置:
echo DEVICE=eth0 > /fs/microsd/net.cfg
echo BOOTPROTO=fallback >> /fs/microsd/net.cfg
echo IPADDR=10.41.10.2 >> /fs/microsd/net.cfg
echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg
echo ROUTER=10.41.10.254 >>/fs/microsd/net.cfg
echo DNS=10.41.10.254 >>/fs/microsd/net.cfg
请注意,上述设置赋予了飞控板一个以太网上的地址。您还需要将以太网端口配置为使用 MAVLink。
如果您将 Ubuntu 用作地面站(或机载计算机),则可以使用 netplan 来配置网络。
下面我们将展示如何将一个配置写入 netplan 配置文件 /etc/netplan/01-network-manager-all.yaml,该配置将与上面 PX4 设置所使用的网络在同一网络上运行。请注意,在 netplan 文档中有更多的示例和说明。
设置 Ubuntu 计算机的步骤:
netplan 配置文件:/etc/netplan/01-network-manager-all.yaml。下面我们使用 nano 文本编辑器执行此操作。
sudo nano /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
enp2s0:
addresses:
- 10.41.10.1/24
nameservers:
addresses: [10.41.10.1]
routes:
- to: 10.41.10.1
via: 10.41.10.1
sudo netplan apply
机载计算机的设置取决于其操作系统。
如果 Linux 操作系统支持 netplan,那么设置说明将与上面相同,但需要使用一个唯一的 IP 地址。
以太网端口配置设置了串行链路(这是 PX4 看待以太网连接的方式)的属性。这包括要流式传输的 MAVLink 消息集、数据速率、远程系统可以连接的 UDP 端口等。
信息 您必须单独配置 PX4 IP 地址和其他网络设置(如前所示)。
PX4 使用如下所示的参数,将串行端口配置为通过 MAVLink 连接到 GCS:
| 参数 | 值 | 描述 |
|---|---|---|
| MAV_2_CONFIG | 1000 | 配置以太网端口 |
| MAV_2_BROADCAST | 1 | 广播心跳(HEARTBEAT)消息 |
| MAV_2_MODE | 0 | 发送“正常”的 MAVLink 消息集(即 GCS 消息集) |
| MAV_2_RADIO_CTL | 0 | 禁用 MAVLink 流量的软件限流 |
| MAV_2_RATE | 100000 | 最大发送速率 |
| MAV_2_REMOTE_PRT | 14550 | MAVLink 远程端口为 14550 (GCS) |
| MAV_2_UDP_PRT | 14550 | MAVLink 网络端口为 14550 (GCS) |
通常,机载计算机应使用端口 14540(而不是 14550),并流式传输“机载(Onboard)”配置文件中指定的 MAVLink 消息集。您可以通过将 MAV_2_REMOTE_PRT 和 MAV_2_UDP_PRT 更改为 14540,并将 MAV_2_MODE 更改为 2(机载)来配置此设置。但请注意,使用 GCS 配置文件仍然可以工作。
有关 MAVLink 串行端口配置的更多信息,请参阅 MAVLink 外设(GCS/OSD/机载计算机)。
假设您已经设置了以太网络,使得您的地面站计算机和 PX4 运行在同一网络上。
要通过以太网将 QGroundControl 连接到 PX4:
假设值按本主题其余部分所述进行设置,则设置将如下所示:

如果选择此链路,QGroundControl 应该能够连接。
PX4 以太网端口配置可能不需要修改(默认配置适用于 GCS)。
要在运行于机载计算机上的 MAVSDK-Python 进行设置:
MAV_2_REMOTE_PRT 和 MAV_2_UDP_PRT 更改为 14540,并将 MAV_2_MODE 更改为 2(机载)。例如,您的代码将使用以下方式连接到 PX4:
await drone.connect(system_address="udp://10.41.10.2:14540")
如果您不修改 PX4 以太网端口配置,MAVSDK 可以通过端口
14550连接到 PX4。但不推荐这样做,因为默认配置是为与 GCS(而非机载计算机)通信而优化的。
先决条件:
uxrce_dds_client 模块。设置 ROS 2 的步骤:
10.41.10.1,下一步中将 Agent UDP 端口设置为 8888)。8888 的 Agent:
MicroXRCEAgent udp4 -p 8888
source ~/ws_sensor_combined/install/setup.bash
ros2 launch px4_ros_com sensor_combined_listener.launch.py
RECEIVED SENSOR COMBINED DATA
=============================
ts: 855801598
gyro_rad[0]: -0.00339938
gyro_rad[1]: 0.00440091
gyro_rad[2]: 0.00513893
gyro_integral_dt: 4997
accelerometer_timestamp_relative: 0
accelerometer_m_s2[0]: -0.0324082
accelerometer_m_s2[1]: 0.0392213
accelerometer_m_s2[2]: -9.77914
accelerometer_integral_dt: 4997
参考来源:https://docs.px4.io/main/en/advanced_config/ethernet_setup