# 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:
用 USB 电缆将飞行控制器连接到电脑。
开放 QGroundcontrol > 分析工具 > MAVLink 控制台
将类似下面的命令输入到 MAVLink 控制台 (将数值写入配置文件):
回响 设备=eth0 >; /fs/microsd/net.cfg 回响 BOOTPROTO=后备 >>; /fs/microsd/net.cfg 回响 IPADDR=192.168.0.4 >>; /fs/microsd/net.cfg 回响 NETMASK=255.255.255.0 >>;/fs/microsd/net.cfg 回响 路由器=192.168.0.254 >>;/fs/microsd/net.cfg 回响 DNS=192.168.0.254 >>;/fs/microsd/net.cfg
网络配置设置完成后,就可以断开 USB 电缆。
重新启动飞行控制器以应用设置。
请注意,上述设置为飞行控制器提供了一个以太网地址。您还需要 配置以太网端口 以使用 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(而不是配套计算机)通信而优化的。
# ROS 2 设置示例
先决条件
- 支持运行 PX4 固件的自动驾驶仪硬件,其中包括 uXRCE-DDS 中间件。请注意,PX4 v1.14 及更高版本包含所需的 uxrce_dds_client 模块。
- ROS 2 已在配套计算机上正确设置。
- 您已按照本页顶部讨论的以太网网络和端口设置进行了设置。
设置 ROS 2:
通过以太网连接飞行控制器和配套电脑。
在 PX4 上启动 uXRCE-DDS 客户端手动或自定义系统启动脚本均可。请注意,必须使用配套计算机的 IP 地址和代理正在监听的 UDP 端口(上述配置示例将配套计算机的 IP 地址设置为
192.168.0.1
代理 UDP 端口设置为8888
在下一步中)。在配套计算机上启动 micro XRCE-DDS 代理.例如,在终端中输入以下命令,启动监听 UDP 端口的代理
8888
.MicroXRCEAgent udp4 -p 8888
运行一个 监听节点 在新终端中确认连接已建立:
消息来源 ~/ws_sensor_combined/install/setup.bash ros2 launch px4_ros_com sensor_combined_listener.launch.py
如果一切设置正确,终端应显示以下输出:
接收到的传感器综合数据 ============================= ts: 855801598 陀螺仪[0]: -0.00339938 gyro_rad[1]: 0.00440091 陀螺仪[2]: 0.00513893 gyro_integral_dt: 4997 相对加速度计时间戳: 0 加速度计_m_s2[0]: -0.0324082 加速度计_m_s2[1]: 0.0392213 加速度计_m_s2[2]: -9.77914 accelerometer_integral_dt: 4997
# 另请参见
- 让 Holybro 的 Pixhawk Raspberry Pi CM4 底板与 PX4 对话 (打开新窗口) (px4.io博客):
- 演示如何通过有线以太网连接 CM4 底板上的 Pixhawk 6X + Raspberry Pi 的教程。
- 博客重复了这一主题的许多材料。