1. PX4开发环境配置全攻略
作为一名无人机开发者,PX4飞控系统是绕不开的核心工具。本文将基于Ubuntu 22.04和24.04系统,手把手带你完成从零开始的PX4开发环境配置,包含仿真工具链搭建、通信中间件部署以及地面站配置等完整流程。不同于官方文档的简略说明,我会重点分享实际配置过程中遇到的典型问题及解决方案。
1.1 系统准备与基础依赖
在开始PX4配置前,建议使用Ubuntu 22.04 LTS或24.04 LTS系统(推荐22.04,兼容性更稳定)。首先执行系统更新:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install -y git zip unzip curl wget
注意:Ubuntu 24.04作为新发布版本,部分软件包可能存在兼容性问题。如果主要用于开发,建议优先选择22.04 LTS长期支持版。
1.2 Gazebo仿真环境配置
PX4的硬件在环仿真(HITL)和软件在环仿真(SITL)都需要Gazebo支持。不同Ubuntu版本对应的Gazebo版本如下:
| Ubuntu版本 | 默认Gazebo版本 | 推荐安装方式 |
|---|---|---|
| 22.04 LTS | Gazebo Fortress | 官方二进制包 |
| 24.04 LTS | Gazebo Harmonic | 源码编译 |
对于22.04用户,建议安装Gazebo Classic(原Gazebo 11):
bash复制sudo apt install -y gazebo libgazebo-dev
验证安装:
bash复制gazebo --version
# 应输出类似:gazebo 11.0.0
如果遇到模型加载问题,可能需要手动下载模型库:
bash复制mkdir -p ~/.gazebo/models
cd ~/.gazebo/models
wget http://file.ncnynl.com/ros/gazebo_models.txt
wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf
2. PX4源码获取与编译
2.1 源码克隆与版本管理
PX4开发强烈建议使用特定版本而非main分支。以下是标准操作流程:
bash复制git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
# 备份源码(重要!)
zip -r ../PX4-Autopilot-$(date +%Y%m%d).zip .
切换稳定版本(示例使用v1.16.0):
bash复制git checkout v1.16.0
git submodule sync --recursive
git submodule update --init --recursive
经验:子模块更新可能因网络问题失败,可尝试多次执行或更换git克隆协议(https/ssh)
2.2 依赖安装与编译系统
运行官方安装脚本:
bash复制bash ./Tools/setup/ubuntu.sh
常见问题处理:
- 如果脚本卡在
pip安装环节,可尝试:bash复制python3 -m pip install --user -U pip export PATH=$PATH:$HOME/.local/bin - Ubuntu 24.04可能需要额外安装:
bash复制sudo apt install -y python3-pip python3-setuptools python3-wheel
2.3 仿真器编译与运行
JMavSim轻量级仿真
bash复制make px4_sitl jmavsim
若报错ninja: error: unknown target 'jmavsim',需安装Java环境:
bash复制sudo apt install -y default-jdk ant
rm -rf build/px4_sitl_default # 清除旧编译
Gazebo仿真
基础机型编译:
bash复制make px4_sitl_default gazebo-classic
指定机型编译(如x500):
bash复制make px4_sitl gz_x500
调试技巧:添加
VERBOSE=1参数查看详细编译过程,例如:bash复制make px4_sitl_default gazebo-classic VERBOSE=1
3. 通信中间件配置
3.1 MicroXRCE-DDS Agent安装
MicroXRCE-DDS是PX4推荐的ROS2通信方案,替代传统的MAVROS。安装步骤如下:
bash复制git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build && cd build
针对不同系统的编译选项:
bash复制# Ubuntu 22.04
cmake ..
# Ubuntu 24.04需要禁用P2P
cmake .. -DUAGENT_P2P_PROFILE=OFF
3.2 Fast-DDS编译问题解决
编译过程中Fast-DDS可能卡住,这是国内开发者常见问题。解决方法:
-
修改源码下载源:
bash复制
nano ../build/fastdds/tmp/fastdds-gitclone.cmake将两处
https://github.com/eProsima/Fast-DDS.git替换为:code复制https://gitee.com/mirrors/fast-dds.git -
修改版本分支:
找到COMMAND "/usr/bin/git" checkout "2.2.x" --改为:code复制COMMAND "/usr/bin/git" checkout "2.14.x" -- -
重新编译:
bash复制make -j$(nproc)
避坑指南:如果编译仍然失败,可以尝试先单独安装Fast-DDS:
bash复制sudo apt install -y ros-${ROS_DISTRO}-fastdds
4. QGroundControl地面站配置
4.1 安装与基础设置
从官网下载最新版QGC:
bash复制wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
chmod +x QGroundControl.AppImage
./QGroundControl.AppImage
建议创建桌面快捷方式:
bash复制echo "[Desktop Entry]
Name=QGroundControl
Exec=$(pwd)/QGroundControl.AppImage
Terminal=false
Type=Application" > ~/.local/share/applications/qgc.desktop
4.2 虚拟摇杆启用
对于没有物理遥控器的开发者,可以启用虚拟摇杆:
- 打开QGC → 齿轮图标(Application Settings)
- 选择Fly View → Virtual Joystick
- 勾选"Enabled"
操作技巧:虚拟摇杆支持键盘控制:
- 方向键:横滚/俯仰
- W/S:油门
- A/D:偏航
- 空格:紧急停止
5. Offboard控制工作空间搭建
5.1 ROS2环境配置
推荐使用Humble或Iron版本(对应Ubuntu 22.04/24.04):
bash复制# 安装ROS2
sudo apt install -y software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install -y curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
# Ubuntu 22.04安装Humble
sudo apt install -y ros-humble-desktop
# Ubuntu 24.04安装Iron
sudo apt install -y ros-iron-desktop
5.2 创建工作空间
bash复制mkdir -p ~/offboard_ws/src
cd ~/offboard_ws
colcon build
source install/setup.bash
集成PX4与ROS2:
bash复制git clone https://github.com/PX4/px4_ros_com.git ~/offboard_ws/src/px4_ros_com
git clone https://github.com/PX4/px4_msgs.git ~/offboard_ws/src/px4_msgs
colcon build
6. 常见问题排查手册
6.1 Gazebo模型加载失败
症状:Gazebo启动后地面/天空为纯色,无模型显示
解决方案:
bash复制echo 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/PX4-Autopilot/Tools/simulation/gazebo/sitl_gazebo/models' >> ~/.bashrc
echo 'export GAZEBO_RESOURCE_PATH=$GAZEBO_RESOURCE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo/sitl_gazebo/worlds' >> ~/.bashrc
source ~/.bashrc
6.2 PX4编译内存不足
症状:编译过程中系统卡死或报错
解决方法:
- 增加swap空间:
bash复制sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile - 限制编译线程:
bash复制make -j$(($(nproc)/2)) px4_sitl_default gazebo-classic
6.3 DDS通信超时
症状:ROS2节点无法连接PX4
排查步骤:
- 检查MicroXRCE-DDS Agent是否运行:
bash复制
MicroXRCEAgent udp4 -p 8888 - 在PX4启动参数中添加:
bash复制
make px4_sitl_default gazebo-classic GZ_SIM_SYSTEM_PLUGIN_PATH=~/PX4-Autopilot/build/px4_sitl_default/build_gazebo-classic GZ_SIM_RESOURCE_PATH=~/PX4-Autopilot/Tools/simulation/gz
7. 性能优化与进阶配置
7.1 仿真加速技巧
- 禁用图形界面(仅22.04+):
bash复制
HEADLESS=1 make px4_sitl_default gazebo-classic - 使用轻量级机型:
bash复制
make px4_sitl_default gazebo-classic_iris
7.2 多机仿真配置
修改启动脚本:
bash复制export PX4_SIM_MODEL=gazebo-classic_iris
export PX4_MULTI_INSTANCE=1
# 终端1
make px4_sitl_default gazebo-classic
# 终端2
./Tools/simulation/gazebo-classic/sitl_multiple_run.sh -n 2
7.3 硬件加速支持
如果有NVIDIA显卡,可启用GPU加速:
bash复制sudo apt install -y nvidia-driver-535 libnvidia-gl-535
export LIBGL_ALWAYS_SOFTWARE=0
make px4_sitl_default gazebo-classic
8. 开发工作流建议
-
版本控制策略:
- 主代码库保持clean状态
- 开发新功能时创建独立分支
- 频繁提交小改动
-
调试方法:
bash复制# 启用debug输出 make px4_sitl_default gazebo-classic DEBUG=1 # 使用GDB调试 gdb --args ./build/px4_sitl_default/bin/px4 ./ROMFS/px4fmu_common -s etc/init.d-posix/rcS -
日志分析:
bash复制# 查看飞行日志 python3 Tools/analysis/flight_log/flightlog.py --plot [logfile].ulg
经过以上步骤,你应该已经建立了完整的PX4开发环境。在实际开发中,建议定期同步上游仓库更新:
bash复制git pull
git submodule sync --recursive
git submodule update --init --recursive