# PX4 以太网设置

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

它可用于连接地面站、配套计算机和其他 MAVLink 系统。在连接使用以太网的系统(如 IP 无线电台)时,特别推荐使用该系统。

本专题包括

# 支持的飞行控制器

PX4 支持以太网连接 Pixhawk 5X 标准 (打开新窗口) 有以太网端口的飞行控制器(及更高版本)。其他板卡也可能支持该功能。

支持的飞行控制器包括

# 设置以太网网络

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

我们提供的配置不一定适合您的本地网络。因此,作为一个配置示例,我们将在下文中展示如何在 IP 网络中设置系统,其静态地址范围为 192.168.0.Xxx,其中 PX4 有一个静态分配的地址 192.168.0.4 而计算机的地址为 192.168.0.1.如果您想将另一台计算机或其他系统连接到网络,可以使用类似的方法分配一个静态地址。

备注

在网络配置方面没有什么特别之处(除了用于修改网络设置的工具之外);其工作原理与任何家庭或企业网络大致相同。也就是说,了解 IP 网络的工作原理是非常必要的!

# PX4 以太网网络设置

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

网络设置在配置文件中定义 /fs/microsd/net.cfg 在 SD 卡上。这是一个文本文件,在新的一行中将每个设置定义为 name=value 对。配置文件可能是这样的

DEVICE=eth0 BOOTPROTO=fallback IPADDR=192.168.0.4 NETMASK=255.255.255.0 ROUTER=192.168.0.254 DNS=192.168.0.254

值在哪里?

  • 设备:接口名称。默认为 eth0.
  • BOOTPROTO:获取 PX4 IP 地址的协议。proto 的有效值为 dhcp, 天电, 后备 (使用 DHCP,但如果 DHCP 失效,则恢复使用静态地址)
  • IPADDR:静态 IP 地址(在 BOOTPROTO 为 天电后备)
  • NETMASK:网络掩码
  • 路由器:默认路由地址。
  • DNS:DNS 服务器地址。

要设置上述示例配置,请使用 QGroundControl:

  1. 用 USB 电缆将飞行控制器连接到电脑。
  2. 开放 QGroundcontrol > 分析工具 > MAVLink 控制台
  3. 将类似下面的命令输入到 MAVLink 控制台 (将数值写入配置文件):
    echo DEVICE=eth0 > /fs/microsd/net.cfg echo BOOTPROTO=fallback >> /fs/microsd/net.cfg echo IPADDR=192.168.0.4 >> /fs/microsd/net.cfg echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg echo ROUTER=192.168.0.254 >>/fs/microsd/net.cfg echo DNS=192.168.0.254 >>/fs/microsd/net.cfg
    
  4. 网络配置设置完成后,就可以断开 USB 电缆。
  5. 重新启动飞行控制器以应用设置。

请注意,上述设置为飞行控制器提供了一个以太网地址。您还需要[配置以太网端口]((#px4-mavlink-serial-port-configuration)以使用 MAVLink。

# Ubuntu 以太网网络设置

如果您的地面站(或配套电脑)使用 Ubuntu,那么您可以使用 网络计划 (打开新窗口) 来配置网络。

下面我们将展示如何在 netplan 配置文件中编写设置;/etc/netplan/01-network-manager-all.yaml",与上述 PX4 设置使用的网络相同。请注意,还有许多 例子 (打开新窗口) 和指示 网络计划 (打开新窗口) 文件。

设置 Ubuntu 电脑:

  1. 在终端中创建并打开一个 网络计划 配置文件: /etc/netplan/01-network-manager-all.yaml 下面我们使用 纳米 文本编辑器。

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

    network: version: 2 renderer:NetworkManager ethernets: enp2s0: addresses: - 192.168.0.1/24 nameservers: addresses:[192.168.0.1] routes:- to:192.168.0.1 via:192.168.0.1
    

    保存并退出编辑器。

  3. 应用 网络计划 在 Ubuntu 终端中输入以下命令即可完成配置。

    sudo netplan apply
    

# 同伴电脑以太网网络设置

配套计算机的设置取决于配套计算机的操作系统。

Linux 操作系统可支持 网络计划在这种情况下,说明与上述相同,但使用的是唯一的 IP 地址。

以太网端口配置可设置 串行连接 (这就是 PX4 如何看待以太网连接)。这包括流式传输的 MAVLink 信息集、数据传输速率、远程系统可连接监听的 UDP 端口等。

备注

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

PX4 通过 MAVLink 对串行端口进行配置,以连接到 GCS,参数如下所示:

参数 价值 说明
MAV_2_CONFIG 1000 配置以太网端口
mav_2_broadcast 1 广播 心跳 信息
MAV_2_MODE 0 发送 "normal" MAVLink 信息集(即 GCS 信息集)
mav_2_radio_ctl 0 禁用 MAVLink 流量的软件节流功能
MAV_2_RATE 100000 最大发送速率
mav_2_remote_prt 14550 14550 MAVLink 远程端口(GCS)
MAV_2_UDP_PRT 14550 14550 MAVLink 网络端口(全球监控系统)

通常情况下,配套计算机会使用端口 14540 (而不是 14550)中指定的 MAVLink 信息流。 机载 配置文件。您可以通过更改 mav_2_remote_prtMAV_2_UDP_PRT14540MAV_2_MODE2 (机载)。但请注意,使用 GCS 配置文件仍可正常工作。

有关 MAVLink 串行端口配置的更多信息,请参阅 MAVLink 外围设备(GCS/OSD/同伴)

# 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_PRT14540MAV_2_MODE2 (机载)。

  3. 请按照 MAVSDK-python (打开新窗口) 来安装和使用 MAVSDK。

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

     嗡嗡声.接通(系统地址="udp://192.168.0.4:14540")
    

备注

MAVSDK 可通过端口连接 PX4 14550 如果不修改 PX4 以太网端口配置,也可以使用默认配置。但不建议这样做,因为默认配置是为与 GCS(而不是配套计算机)通信而优化的。

# ROS2 设置示例

先决条件

  • 您的自动驾驶仪硬件已支持 RTPS 功能,其固件已启用。 本指南.
  • ROS2 已正确设置,并且 理智检查 已得到确认。
  • 您已按照本页顶部讨论的以太网网络和端口设置进行了设置。

在本示例中,假定您已按照示例设置了 IP 地址。

  1. 通过以太网连接飞行控制器
  2. 开放 QGroundControl > 分析工具 > MAVLink 控制台
  3. 输入以下命令启动飞行控制器上的 micro_rtps 客户端。请注意,此处的远程 IP 是您的同伴电脑 IP。默认情况下会启动连接到 UDP 端口 2019 和 2020 的 microrortps_client。 RTPS 指南
    micrortps_client start -t UDP -i <远程 IP>;
    
    控制台中的输出结果如下:
    INFO [micrortps_client] UDP 传输:IP 地址:192.168.0.1; recv port:2019; send port:2020 INFO [micrortps_client] UDP 传输:尝试连接...INFO [micrortps_client] UDP 传输:已连接服务器!
    
  4. 然后,我们需要在 Linux 计算机上的新终端中键入以下命令来运行代理。这将在 本地主机127.0.0.0.1.
    $ source ~/px4_ros_com_ros2/install/setup.bash $ micrortps_agent start -t UDP
    
  5. 在新终端中,您可以运行一个监听节点来确认连接是否已建立:
    $ source ~/px4_ros_com_ros2/install/setup.bash $ ros2 launch px4_ros_com sensor_combined_listener.launch.py
    

如果一切顺利,建立了连接,你就可以在终端中看到下面的输出:

接收到的传感器综合数据 ============================= 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