1. 项目概述
作为一名无人机开发者,配置好PX4编译环境和QGC地面站是开展飞控开发的第一步。这个教程将带你从零开始搭建完整的开发环境,解决实际开发中遇到的各种环境配置问题。
我在过去三年里为超过20个无人机项目配置过开发环境,发现90%的新手问题都集中在环境依赖和工具链配置上。本文将分享我在多个实际项目中验证过的稳定配置方案,以及那些官方文档没写但非常重要的细节。
2. 环境准备
2.1 硬件要求
推荐使用x86架构的电脑,至少8GB内存(编译PX4固件时16GB更佳),50GB可用存储空间。实测在以下配置运行流畅:
- Intel i5-8250U/16GB内存/512GB SSD(笔记本)
- AMD Ryzen 5 3600/32GB内存/1TB NVMe(台式机)
注意:树莓派等ARM设备虽然可以运行,但编译速度极慢,不建议作为主力开发机。
2.2 操作系统选择
官方推荐Ubuntu 20.04 LTS,这也是最稳定的选择。我在三种系统上的实测结果:
| 系统版本 | 兼容性 | 编译速度 | 问题频率 |
|---|---|---|---|
| Ubuntu 20.04 | 最佳 | 快 | 低 |
| Ubuntu 22.04 | 良好 | 快 | 中(需额外配置) |
| Windows WSL2 | 一般 | 慢 | 高 |
建议新手首选Ubuntu 20.04原生安装,避免在Windows子系统上折腾。
3. PX4编译环境配置
3.1 基础依赖安装
首先更新软件源并安装基础工具:
bash复制sudo apt-get update
sudo apt-get install git zip qtcreator cmake build-essential ninja-build -y
然后安装Python相关工具(PX4工具链主要用Python3):
bash复制sudo apt-get install python3-pip python3-dev python3-wheel -y
pip3 install --upgrade pip
3.2 安装PX4工具链
官方推荐使用便捷安装脚本:
bash复制bash ./Tools/setup/ubuntu.sh
但实际项目中我发现这个脚本有时会漏装依赖,更稳妥的做法是手动安装:
bash复制# 安装Gazebo(仿真需要)
sudo apt-get install gz-garden -y
# 安装FastRTPS
sudo apt-get install ros-foxy-rmw-fastrtps-cpp -y
# 安装FastDDS
sudo apt-get install ros-foxy-fastcdr ros-foxy-fastrtps -y
3.3 源码下载与编译
克隆PX4固件仓库(建议使用国内镜像加速):
bash复制git clone https://gitee.com/mirrors/PX4-Autopilot.git --recursive
cd PX4-Autopilot
首次编译测试:
bash复制make px4_sitl_default gazebo
常见问题处理:
- 如果遇到子模块下载失败,执行:
bash复制git submodule sync --recursive git submodule update --init --recursive - 内存不足时添加交换空间:
bash复制sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
4. QGroundControl配置
4.1 安装方式选择
QGC提供三种安装方式:
-
AppImage(推荐):
bash复制wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundControl.AppImage chmod +x QGroundControl.AppImage ./QGroundControl.AppImage -
源码编译(适合需要定制开发):
bash复制sudo apt-get install qtdeclarative5-dev qml-module-qtquick-controls2 -y git clone --recursive https://github.com/mavlink/qgroundcontrol.git cd qgroundcontrol mkdir build && cd build cmake .. && make -j$(nproc) -
Snap安装(最简单但功能受限):
bash复制sudo snap install qgroundcontrol
4.2 关键配置项
首次运行QGC需要进行以下配置:
-
通信设置:
- 串口波特率:921600(PX4默认)
- 协议选择:MAVLink
-
飞行模式配置:
- 手动模式
- 定高模式
- 位置模式(新手推荐)
-
参数调校:
COM_RC_IN_MODE:设置遥控器输入类型BAT_N_CELLS:匹配你的电池组数
实测技巧:在"参数"页面右上角导出配置,可以备份所有参数设置。
5. 开发环境联调测试
5.1 硬件连接配置
典型开发连接方式:
code复制[飞控板] <--USB--> [电脑] <--WiFi/数传--> [遥控器]
在QGC中检查连接状态:
- 顶部状态栏应显示"Connected"
- "Vehicle Setup"页面能看到各传感器状态
- "MAVLink Inspector"可以查看实时数据流
5.2 常见联调问题
-
设备权限问题:
bash复制sudo usermod -a -G dialout $USER sudo apt-get remove modemmanager -y -
MAVLink通信中断:
- 检查波特率是否匹配
- 查看
mavlink status输出 - 重启mavlink服务:
mavlink stop-all && mavlink start-all
-
传感器校准失败:
- 确保在水平面上操作
- 避开强磁场干扰
- 按提示完成所有步骤(包括旋转检测)
6. 进阶开发技巧
6.1 多机仿真环境
使用Gazebo进行多无人机仿真:
bash复制make px4_sitl_default gazebo_iris__warehouse
在QGC中通过"Fly"视图可以同时监控多架无人机状态。
6.2 自定义固件编译
修改后重新编译:
bash复制make clean
make px4_fmu-v5_default # 针对特定硬件
烧录到飞控:
bash复制make px4_fmu-v5_default upload
6.3 调试工具推荐
-
uORB查看器:
bash复制
uorb top -
系统日志:
bash复制
dmesg | grep px4 -
内存监控:
bash复制
free -h top -p $(pgrep px4)
7. 避坑指南
我在实际项目中遇到的典型问题:
-
Python环境冲突:
- 使用virtualenv创建独立环境
- 不要混用pip和pip3
-
Gazebo黑屏:
bash复制export LIBGL_ALWAYS_SOFTWARE=1 -
QGC地图不显示:
- 检查网络连接
- 设置->常规->地图提供商选择"Google Hybrid"
-
编译卡住:
- 确认内存足够
- 尝试单线程编译:
make -j1
-
飞控无法识别:
- 检查USB线质量(必须带数据传输功能)
- 尝试不同USB口(避免使用USB3.0扩展坞)
