三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

基于树莓派Ubuntu Mate与PX4的UDP通信:搭建QGC地面站远程监控系统

基于树莓派Ubuntu Mate与PX4的UDP通信:搭建QGC地面站远程监控系统

1. 环境准备与系统配置

在开始搭建远程监控系统之前,我们需要确保所有硬件和软件环境就绪。我建议先准备一台树莓派4B或更高型号,至少4GB内存版本。实测中发现2GB内存版本在同时运行Ubuntu Mate和ROS时容易出现卡顿。操作系统选择Ubuntu Mate 20.04 LTS版本,这个版本对树莓派的兼容性最好,官方维护也最完善。

安装完基础系统后,需要配置三个关键组件:

  1. ROS Noetic:这是最后一个支持Python2的ROS版本,建议使用官方提供的树莓派专用安装脚本
  2. MAVROS:这是ROS与PX4飞控通信的桥梁,安装时要注意选择对应PX4固件版本的分支
  3. QGroundControl:PC端建议使用最新稳定版,我测试时用的是v4.2.3

硬件连接有个容易踩坑的地方:务必使用优质USB数据线连接树莓派和PX4飞控。有次调试时发现通信不稳定,排查半天才发现是线材质量问题。建议使用带磁环的屏蔽线,长度不要超过30cm。

2. PX4飞控参数配置

飞控参数配置是整个系统的关键环节。首先需要通过USB连接PX4和PC,用QGC地面站修改以下核心参数:

MAVLINK配置

  • MAV_1_CONFIG → TELEM2(激活第二个MAVLink通道)
  • MAV_1_MODE → Onboard(设置为机载模式)
  • MAV_1_RATE → 100000(根据实际需求调整波特率)

串口参数配置

  • SER_TEL2_BAUD → 921600(必须与后续launch文件设置一致)
  • SER_TEL2_CONFIG → 101(启用流控)

修改后有个重要细节:必须完全重启飞控才能使参数生效。我遇到过只热重启导致参数未加载的情况,后来发现需要断开USB连接再重新上电。

3. MAVROS启动文件定制

在树莓派上需要修改px4.launch文件,这个文件通常位于/opt/ros/noetic/share/mavros/px4/目录。用nano或vim编辑时注意两个关键参数:

<arg name="fcu_url" default="/dev/ttyACM0:921600" /> <arg name="gcs_url" default="udp://:14550@" />

第一个参数指定了飞控连接方式,这里有几个常见问题:

  1. 设备号可能不是ttyACM0,可以用ls /dev/tty*命令查看
  2. 波特率必须与飞控参数完全一致
  3. 如果出现权限问题,需要将用户加入dialout组

第二个参数配置UDP通信,其中14550是默认的MAVLink端口。我在实际项目中发现,当有多个设备时需要修改这个端口避免冲突。

4. 网络配置与端口管理

确保树莓派和PC在同一个局域网是关键。建议使用静态IP分配,可以通过路由器设置或直接在Ubuntu Mate中配置。测试网络连通性时,我习惯先用ping命令检查基础连接:

ping 192.168.1.100 # 替换为PC的实际IP

端口管理方面,需要确保14550端口在树莓派防火墙中开放。Ubuntu默认使用ufw防火墙,操作命令如下:

sudo ufw allow 14550/udp sudo ufw enable

有个实用技巧:可以用netstat -anu命令查看UDP端口监听状态,确认MAVROS是否成功绑定了端口。

5. QGC地面站连接配置

PC端QGroundControl的配置相对简单,但有几个易错点需要注意:

  1. 在"Application Settings"→"Comm Links"中添加新连接
  2. 选择UDP协议,监听端口设置为14550(与launch文件一致)
  3. 目标主机填写树莓派的IP地址
  4. 高级选项中建议勾选"AutoConnect"

测试时我发现一个现象:如果先启动QGC再启动MAVROS,连接成功率更高。这与UDP的无连接特性有关,建议按照这个顺序操作。

6. 系统联调与故障排查

当所有组件配置完成后,可以开始系统联调。我通常按照这个流程操作:

  1. 给PX4飞控上电(注意安全,移除螺旋桨)
  2. 在树莓派终端启动MAVROS:roslaunch mavros px4.launch
  3. 观察终端输出,确认没有错误信息
  4. 在PC端启动QGC,等待自动连接

常见问题及解决方案:

  • 连接超时:检查防火墙设置,确认双方能互相ping通
  • 参数不同步:确认飞控和MAVROS使用相同协议版本
  • 数据跳变:可能是USB干扰,尝试使用带磁环的数据线

7. 性能优化与高级配置

对于需要更高性能的场景,可以考虑以下优化措施:

MAVROS参数调优

  • 在launch文件中增加<arg name="fcu_protocol" default="v2.0" />指定协议版本
  • 调整mavlink节点的消息流速率

网络优化

  • 使用5GHz WiFi减少干扰
  • 考虑使用有线网络连接
  • 启用QoS保证关键数据包优先传输

我在一个农业无人机项目中发现,通过调整MAV_1_RATE参数和优化消息流配置,可以将端到端延迟从200ms降低到80ms左右。

← 返回列表