# PX4 以太网设置
以太网连接提供了一种快速、可靠和灵活的通信方式,可替代 USB 或其他串行连接。
它可用于连接地面站、配套计算机和其他 MAVLink 系统。在连接使用以太网的系统(如 IP 无线电台)时,特别推荐使用该系统。
本专题包括
- 支持的飞行控制器
- 设置以太网网络 用于 PX4 及其需要连接的任何系统(包括地面站和配套计算机)。
- PX4 MAVLink 串行端口配置指定用于连接 GCS 和配套计算机的 UDP 端口和 MAVLink 配置文件。
- 使用 MAVSDK 或 ROS2 通过网络连接 PX4。
# 支持的飞行控制器
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:
- 用 USB 电缆将飞行控制器连接到电脑。
- 开放 QGroundcontrol > 分析工具 > MAVLink 控制台
- 将类似下面的命令输入到 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
- 网络配置设置完成后,就可以断开 USB 电缆。
- 重新启动飞行控制器以应用设置。
请注意,上述设置为飞行控制器提供了一个以太网地址。您还需要[配置以太网端口]((#px4-mavlink-serial-port-configuration)以使用 MAVLink。
# Ubuntu 以太网网络设置
如果您的地面站(或配套电脑)使用 Ubuntu,那么您可以使用 网络计划 (打开新窗口) 来配置网络。
下面我们将展示如何在 netplan 配置文件中编写设置;/etc/netplan/01-network-manager-all.yaml
",与上述 PX4 设置使用的网络相同。请注意,还有许多 例子 (打开新窗口) 和指示 网络计划 (打开新窗口) 文件。
设置 Ubuntu 电脑:
在终端中创建并打开一个
网络计划
配置文件:/etc/netplan/01-network-manager-all.yaml
下面我们使用 纳米 文本编辑器。sudo nano /etc/netplan/01-network-manager-all.yaml
将以下配置信息复制并粘贴到文件中(注意:缩进部分很重要!):
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
保存并退出编辑器。
应用 网络计划 在 Ubuntu 终端中输入以下命令即可完成配置。
sudo netplan apply
# 同伴电脑以太网网络设置
配套计算机的设置取决于配套计算机的操作系统。
Linux 操作系统可支持 网络计划
在这种情况下,说明与上述相同,但使用的是唯一的 IP 地址。
# PX4 MAVLink 串行端口配置
以太网端口配置可设置 串行连接 (这就是 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_prt 和 MAV_2_UDP_PRT 至 14540
和 MAV_2_MODE 至 2
(机载)。但请注意,使用 GCS 配置文件仍可正常工作。
有关 MAVLink 串行端口配置的更多信息,请参阅 MAVLink 外围设备(GCS/OSD/同伴)
# QGroundControl 设置示例
假设您已经 设置以太网网络 这样您的地面站电脑和 PX4 就能在同一个网络上运行,而且
通过以太网将 QGroundControl 与 PX4 连接:
设置以太网网络 这样您的地面站计算机和 PX4 就能在同一个网络中运行。
使用以太网电缆连接地面站计算机和 PX4。
启动 QGroundControl 并 定义通信链路 (打开新窗口) (应用程序设置 > 通信链接) 指定 服务器地址 和端口分别为 PX4 分配的 IP 地址和端口。
假设数值设置与本主题其余部分所述相同,则设置将如下所示:
如果您选择此链接,QGroundControl 就会连接。
备注
PX4 以太网端口配置 应该不需要(默认值适合通用控制系统)。
# MAVSDK-Python 设置示例
设置 MAVSDK-Python 在配套计算机上运行:
设置以太网网络 这样您的伴侣电脑和 PX4 就能在同一个网络中运行。
修改 PX4 以太网端口配置 连接到配套电脑。您可以更改参数 mav_2_remote_prt 和 MAV_2_UDP_PRT 至
14540
和 MAV_2_MODE 至2
(机载)。请按照 MAVSDK-python (打开新窗口) 来安装和使用 MAVSDK。
例如,您的代码将通过以下方式连接到 PX4:
等 嗡嗡声.接通(系统地址="udp://192.168.0.4:14540")
备注
MAVSDK 可通过端口连接 PX4 14550
如果不修改 PX4 以太网端口配置,也可以使用默认配置。但不建议这样做,因为默认配置是为与 GCS(而不是配套计算机)通信而优化的。
# ROS2 设置示例
先决条件
在本示例中,假定您已按照示例设置了 IP 地址。
- 通过以太网连接飞行控制器
- 开放 QGroundControl > 分析工具 > MAVLink 控制台
- 输入以下命令启动飞行控制器上的 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 传输:已连接服务器!
- 然后,我们需要在 Linux 计算机上的新终端中键入以下命令来运行代理。这将在
本地主机
即127.0.0.0.1
.$ source ~/px4_ros_com_ros2/install/setup.bash $ micrortps_agent start -t UDP
- 在新终端中,您可以运行一个监听节点来确认连接是否已建立:
$ 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