请输入
菜单

PX4以太网网口设置

PX4以太网网口设置

以太网连接提供了一种快速、可靠且灵活的通信替代方案,可用于替代 USB 或其他串行连接。
它可用于连接地面站、机载计算机和其他 MAVLink 系统。当连接到“原生”使用以太网的系统(例如 IP 无线电)时,特别推荐使用以太网。

设置以太网络

要通过以太网连接系统,您需要将它们配置为运行在同一个 IP 网络上,以便每个系统都有唯一的 IP 地址并能找到其他系统。这可以使用 DHCP 服务器来分配地址,或者通过手动配置网络上每个系统的地址来完成。

没有一个通用的“开箱即用配置”能够保证在您的本地网络中正常工作。因此,作为您可能进行的配置类型的示例,下面我们将展示如何在一个 IP 网络上设置系统,该网络使用 10.41.10.xxx 范围内的静态地址,其中 PX4 拥有静态分配的地址 10.41.10.2 (PX4-默认),计算机拥有地址 10.41.10.1。如果您想将另一台机载计算机或其他系统连接到网络,可以使用类似的方法来分配一个静态地址。

这个网络配置本身并没有什么“特殊”之处(除了可能用于修改网络设置的工具不同);它的工作原理与任何家庭或企业网络非常相似。也就是说,具备 IP 网络工作原理的知识是非常有用的!

PX4 以太网网络设置

PX4 使用 netman 模块来应用和更新网络设置。

默认配置首先从 DHCP 请求一个 IP 地址,如果失败,将回退到默认静态地址 10.41.10.2。您可以显式设置任何静态 IP 地址(包括默认地址),以跳过初始 DHCP 检查并使连接更快一些。

信息 如果您想使用 PX4 的默认静态 IP 地址,可以直接跳到下一节。

网络设置在 SD 卡上的配置文件 /fs/microsd/net.cfg 中定义。这是一个文本文件,每行定义一个设置,格式为 名称=值 对。配置文件可能如下所示:

ini 复制代码
DEVICE=eth0
BOOTPROTO=fallback
IPADDR=10.41.10.2
NETMASK=255.255.255.0
ROUTER=10.41.10.254
DNS=10.41.10.254

其中各值的含义为:

  • DEVICE:接口名称。默认为 eth0
  • BOOTPROTO:获取 PX4 IP 地址的协议。proto 的有效值为:dhcpstaticfallback(先尝试 DHCP,超时失败后回退到静态地址)。
  • IPADDR:静态 IP 地址(如果 BOOTPROTOstaticfallback 则使用)。
  • NETMASK:网络掩码。
  • ROUTER:默认路由的地址。
  • DNS:DNS 服务器的地址。

要使用 QGroundControl 设置上述“示例”配置:

  1. 使用 USB 线将飞控板连接到计算机。
  2. 打开 QGroundControl > 分析工具 > MAVLink 控制台。
  3. 在 MAVLink 控制台中输入“类似”下面的命令(以将值写入配置文件):
    sh 复制代码
    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
  4. 设置好网络配置后,您可以断开 USB 线缆。
  5. 重新启动飞控板以应用设置。

请注意,上述设置赋予了飞控板一个以太网上的地址。您还需要将以太网端口配置为使用 MAVLink。

Ubuntu 以太网网络设置

如果您将 Ubuntu 用作地面站(或机载计算机),则可以使用 netplan 来配置网络。

下面我们将展示如何将一个配置写入 netplan 配置文件 /etc/netplan/01-network-manager-all.yaml,该配置将与上面 PX4 设置所使用的网络在同一网络上运行。请注意,在 netplan 文档中有更多的示例和说明。

设置 Ubuntu 计算机的步骤:

  1. 在终端中,创建并打开一个 netplan 配置文件:/etc/netplan/01-network-manager-all.yaml。下面我们使用 nano 文本编辑器执行此操作。
    sh 复制代码
    sudo nano /etc/netplan/01-network-manager-all.yaml
  2. 将以下配置信息复制并粘贴到文件中(注意:缩进很重要!):
    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
    保存并退出编辑器。
  3. 通过在 Ubuntu 终端中输入以下命令来应用 netplan 配置。
    sh 复制代码
    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_PRTMAV_2_UDP_PRT 更改为 14540,并将 MAV_2_MODE 更改为 2(机载)来配置此设置。但请注意,使用 GCS 配置文件仍然可以工作。

有关 MAVLink 串行端口配置的更多信息,请参阅 MAVLink 外设(GCS/OSD/机载计算机)

QGroundControl 设置示例

假设您已经设置了以太网络,使得您的地面站计算机和 PX4 运行在同一网络上。

要通过以太网将 QGroundControl 连接到 PX4:

  1. 设置以太网络,使您的地面站计算机和 PX4 运行在同一网络上。
  2. 使用以太网线缆连接地面站计算机和 PX4。
  3. 启动 QGroundControl 并定义一个通信链路(应用程序设置Application Settings > 通信链路Comm Links ),将服务器地址和端口分别指定为 PX4 中分配的 IP 地址和端口。

假设值按本主题其余部分所述进行设置,则设置将如下所示:

如果选择此链路,QGroundControl 应该能够连接。

PX4 以太网端口配置可能不需要修改(默认配置适用于 GCS)。

MAVSDK-Python 设置示例

要在运行于机载计算机上的 MAVSDK-Python 进行设置:

  1. 设置以太网络,使您的机载计算机和 PX4 运行在同一网络上。
  2. 修改 PX4 以太网端口配置以连接到机载计算机。您可以将参数 MAV_2_REMOTE_PRTMAV_2_UDP_PRT 更改为 14540,并将 MAV_2_MODE 更改为 2(机载)。
  3. 按照 MAVSDK-python 的说明安装和使用 MAVSDK。

例如,您的代码将使用以下方式连接到 PX4:

python 复制代码
await drone.connect(system_address="udp://10.41.10.2:14540")

如果您不修改 PX4 以太网端口配置,MAVSDK 可以通过端口 14550 连接到 PX4。但不推荐这样做,因为默认配置是为与 GCS(而非机载计算机)通信而优化的。

ROS 2 设置示例

先决条件:

  • 您拥有支持且运行 PX4 固件的自动驾驶仪硬件,该固件包含 uXRCE-DDS 中间件。请注意,PX4 v1.14 及更高版本默认包含所需的 uxrce_dds_client 模块。
  • ROS 2 已在机载计算机上正确设置。
  • 您已按照本页顶部所述完成了以太网络和端口设置。

设置 ROS 2 的步骤:

  1. 通过以太网连接您的飞控板和机载计算机。
  2. 在 PX4 上启动 uXRCE-DDS 客户端,可以手动启动,也可以通过自定义系统启动脚本启动。请注意,您必须使用机载计算机的 IP 地址以及 Agent 正在监听的 UDP 端口(上面的示例配置将机载计算机 IP 地址设置为 10.41.10.1,下一步中将 Agent UDP 端口设置为 8888)。
  3. 在机载计算机上启动 micro XRCE-DDS Agent。例如,在终端中输入以下命令启动监听 UDP 端口 8888 的 Agent:
    sh 复制代码
    MicroXRCEAgent udp4 -p 8888
  4. 在一个新的终端中运行一个监听节点,以确认连接已建立:
    sh 复制代码
    source ~/ws_sensor_combined/install/setup.bash
    ros2 launch px4_ros_com sensor_combined_listener.launch.py
    如果一切设置正确,终端中应显示类似以下的输出:
    sh 复制代码
    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

上一个
PX4 1.15(stable)版本发布记录
下一个
OneRTK高精度定位系列
最近修改: 2026-03-10Powered by