Skip to content

PX4以太网配置

以太网连接提供了一种快速、可靠和灵活的通信选择,可替代使用USB或其他串行连接。

它可以用于连接地面站、机载计算机和其他MAVLink系统。 特别建议使用它连接到"原生"使用以太网的系统——例如IP数传。

本主题涵盖:

支持的飞行控制器

PX4支持在 Pixhawk 5X 标准 飞行控制器(及更高版本)上进行以太网连接,它具有以太网端口。 可能也支持其他板子。

支持的飞行控制器包括:

设置以太网网络

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

我们不能提供一个确保可以在您的本地网络中工作的“开箱即用配置”。 因此,作为您可能进行的配置示例,我们展示如何在一个IP网络中设置系统,在该网络中使用静态地址范围10.41.10.Xxx,其中PX4静态分配的地址为10.41.10.2(PX4默认),计算机的地址为10.41.10.1。 如果您想要连接一台机载计算机或其他系统到网络上,您可以使用类似的方法来分配一个静态地址。

INFO

关于网络配置并没有什么"特别"之处(也许除了用于修改网络设置的工具之外);它的工作方式与家庭或商业网络基本相同。 这就是说,了解IP网络如何工作是非常有利的!

PX4以太网网络设置

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

默认配置首先从DHCP请求IP地址,如果失败,将退回到默认的静态地址10.41.10.2。 您可以显式设置任何静态 IP 地址(包括默认地址)来绕过初始的 DHCP,使连接速度稍快。

INFO

If you want to use the default static IP address for PX4 you can skip forward to the next section.

网络设置在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地址的协议。 有效值为: dhcp, static, fallback (使用DHCP,但如果失败则在时间后回到静态地址)
  • IPADDR: 静态 IP 地址(在 BOOTPROTO 为 staticfallback 时使用)
  • 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 文本编辑器来实现这一点。

    sudo nano /etc/netplan/01-network-manager-all.yaml
  2. 将以下配置信息复制并粘贴到文件中(注意:缩进很重要!):

    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_配置。

    sudo netplan apply

机载计算机以太网网络设置

机载计算机的设置将取决于它的操作系统。

基于Linux的操作系统可能支持netplan,在这种情况下,指令将与上述相同,但请使用唯一的IP地址。

以太网端口配置设置_串行链接_的属性(这是PX4视为以太网连接的方式)。 这包括被发送的 MAVLink 消息集合、数据传输速率、远程系统可以连接并监听的 UDP 端口等。

INFO

您必须单独配置 PX4 IP 地址和其他网络设置(如前面所示)。

PX4配置串行端口以通过MAVLink连接到地面站,使用下面的参数:

参数描述
MAV_2_CONFIG1000配置以太网端口
MAV_2_BROADCAST1广播HEARTBEAT消息
MAV_2_MODE0发送“正常”的 MAVLink 消息集合(即地面站消息集合)
MAV_2_RADIO_CTL0禁用MAVLink流量控制
MAV_2_RATE100000最大发送速率
MAV_2_REMOTE_PRT14550MAVLink远程端口14550(地面站)
MAV_2_UDP_PRT14550MAVLink网络端口14550(地面站)

通常,机载计算机将使用端口14540(而不是14550),并按照Onboard配置文件中指定的传输一系列MAVLink消息。 您可以通过更改 MAV_2_REMOTE_PRTMAV_2_UDP_PRT14540,以及 MAV_2_MODE2(Onboard)来配置此设置。 请注意,这仍将使用GCS配置文件正常工作。

有关 MAVLink 串口配置的更多信息,请参考 MAVLink Peripherals (GCS/OSD/Companion)

QGroundControl 设置示例

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

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

  1. 设置以太网网络 以便您的地面站计算机和 PX4 在同一网络。

  2. 使用网线连接地面站计算机和PX4。

  3. 启动QGroundControl并定义通信链路应用程序设置>通信链路)指定PX4中分配的IP地址和端口。

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

    QGC以太网设置的通信链接

  4. 如果你选择这个链接,QGroundControl 应该会连接。

PX4 以太网端口配置 应该不需要(默认值适用于地面站)。

MAVSDK-Python 设置示例

要在一台机载计算机上运行MAVSDK-Python:

  1. 设置了以太网网络,以便您的机载计算机和PX4在同一网络上运行。

  2. 修改PX4以太网端口配置以连接到机载计算机。 您可能要将参数 MAV_2_REMOTE_PRTMAV_2_UDP_PRT 更改为 14540,以及 MAV_2_MODE 更改为 2(Onboard)。

  3. 按照MAVSDK-python中的说明安装和使用MAVSDK。

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

    python
    await drone.connect(system_address="udp://10.41.10.2:14540")

如果您不修改 PX4 以太网端口配置,MAVSDK 可以连接到端口 14550 上的 PX4。 然而,这并不推荐,因为默认配置是针对与地面控制站(而不是机载计算机)通信进行优化的。

ROS 2设置示例

先决条件:

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

设置 ROS 2:

  1. 通过以太网连接您的飞行控制器和机载计算机。

  2. 启动 PX4 上的 uXRCE-DDS 客户端,可以手动操作,也可以通过自定义系统启动脚本。 请注意,您必须使用机载计算机的IP地址和代理正在侦听的UDP端口(上面的示例配置将机载计算机IP地址设置为10.41.10.1,并在下一步中将代理UDP端口设置为8888)。

  3. 在机载计算机上启动uXRCE-DDS代理。 例如,在终端中输入以下命令以启动代理程序并侦听UDP端口8888

    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

另请参阅