PX4源码下载与编译全攻略:从环境搭建到成功运行

张开发
2026/4/15 10:29:19 15 分钟阅读

分享文章

PX4源码下载与编译全攻略:从环境搭建到成功运行
1. PX4开发环境搭建全指南第一次接触PX4飞控系统时我被它复杂的编译过程折腾得够呛。记得当时为了跑通第一个仿真整整花了两天时间解决各种环境问题。现在回想起来如果能有一套完整的指南至少能节省80%的时间。下面我就把踩过的坑和解决方案都整理出来让你能快速上手PX4开发。PX4是一个开源的无人机飞行控制软件平台支持从微型无人机到大型工业级无人机的各种应用场景。它最强大的地方在于提供了完整的仿真环境你可以在电脑上测试代码确认无误后再烧录到实际硬件。目前支持的主要开发环境是Ubuntu Linux这也是我推荐使用的系统。在开始之前建议准备一台性能尚可的电脑至少8GB内存100GB可用存储空间。因为编译过程中会下载大量依赖和工具链而且仿真运行也比较吃资源。我个人的开发环境是Ubuntu 20.04 LTS这也是PX4官方推荐的操作系统版本。2. 源码下载的三种方式及问题解决2.1 标准克隆方法适合大多数用户最直接的下载方式是使用git克隆官方仓库git clone https://github.com/PX4/Firmware.git --recursive这个命令会下载主分支(master)的所有代码和子模块。但这里有个常见坑点由于代码库较大可能会遇到git缓存不足导致的下载中断。错误信息通常类似error: RPC failed; curl 56 GnuTLS recv error (-54) fatal: The remote end hung up unexpectedly解决方法很简单增大git的缓存大小git config --global http.postBuffer 2000000000这个值设置为2GB基本能满足需求。如果网络状况不好可以考虑使用国内镜像源或者分时段下载。2.2 指定版本下载需要特定版本时如果你需要某个特定版本的PX4比如为了兼容特定硬件可以分步操作git clone https://github.com/PX4/Firmware.git cd Firmware git checkout v1.11.0 # 替换为你需要的版本号 git submodule update --init --recursive这种方式比较灵活但要注意子模块版本可能与主版本不兼容。我曾在v1.9.2版本上遇到过子模块冲突最后是通过手动修改.gitmodules文件解决的。2.3 官方脚本安装最稳妥的方式对于新手我强烈推荐使用PX4官方提供的安装脚本。这个方法虽然步骤稍多但成功率最高wget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_nuttx.sh chmod x ubuntu_sim_nuttx.sh source ubuntu_sim_nuttx.sh这个脚本会自动安装所有依赖项并配置好开发环境。完成后需要重启电脑使环境变量生效。我在三台不同配置的电脑上测试过这个方法都能一次成功。3. 依赖安装与Python环境配置3.1 运行官方安装脚本下载完源码后第一件事就是安装依赖bash ./Tools/setup/ubuntu.sh这个脚本会自动安装编译器、调试工具、仿真环境等所有必要组件。但Python依赖经常出问题特别是国内网络环境下。典型错误如Could not find a version that satisfies the requirement argcomplete3.2 解决Python依赖问题最彻底的解决方案是修改脚本中的pip源打开Firmware/Tools/setup/ubuntu.sh找到Python依赖安装部分替换为以下内容echo Installing PX4 Python3 dependencies sudo python3 -m pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple pip setuptools wheel sudo python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r ${DIR}/requirements.txt使用清华镜像源能显著提高下载速度。如果还是有问题可以尝试先手动安装setuptoolspip3 install --user setuptools58.2.03.3 Python版本管理Ubuntu系统默认Python版本经常引发问题。建议统一使用Python3sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10检查版本python --version # 应该显示Python 3.x pip --version # 应该对应Python3的pip如果遇到权限问题可以添加--user参数本地安装或者使用virtualenv创建虚拟环境。4. 编译与常见错误解决4.1 首次编译测试基础环境准备好后可以尝试编译一个基础版本cd Firmware make px4_fmu-v4_default这个命令会编译适用于Pixhawk 4硬件的固件。第一次编译会比较慢可能需要30分钟到1小时因为要构建整个工具链。4.2 常见编译错误问题1隐式fallthrough警告被当作错误error: this statement may fall through [-Werrorimplicit-fallthrough]这是因为较新的GCC编译器更加严格。解决方法sudo apt-get update sudo apt-get install --only-upgrade ccache更新ccache后重新编译即可。问题2protobuf缺失ninja: error: PROTOBUF_PROTOC_EXECUTABLE-NOTFOUND, needed by Imu.pb.cc安装protobuf编译器sudo apt-get install protobuf-compiler问题3OpenCV版本冲突如果使用gazebo仿真可能会遇到OpenCV版本问题。解决方法是在CMakeLists.txt中指定路径set(OpenCV_DIR /usr/local/share/OpenCV)4.3 硬件特定编译不同硬件需要不同的编译目标常见的有Pixhawk 4:make px4_fmu-v5_defaultCUAV X7:make cuav_x7pro_default仿真环境:make px4_sitl gazebo编译成功后烧录到硬件make px4_fmu-v4_default upload看到100%进度和Rebooting提示就表示成功了。5. 仿真环境搭建与测试5.1 Gazebo仿真编译要运行软件在环仿真(SITL)make px4_sitl gazebo第一次运行会下载Gazebo模型可能需要较长时间。建议使用国内镜像echo export SVGA_VGPU100 ~/.bashrc echo export GAZEBO_MODEL_PATH${GAZEBO_MODEL_PATH}:~/PX4/Firmware/Tools/sitl_gazebo/models ~/.bashrc source ~/.bashrc5.2 常见仿真问题问题1权限不足[Err] [REST.cc:205] Error in REST request解决方法sudo usermod -a -G dialout $USER sudo apt-get remove modemmanager问题2显示问题如果Gazebo界面显示异常可以尝试export SVGA_VGPU100问题3模型加载失败如果Gazebo无法加载无人机模型手动设置模型路径export GAZEBO_MODEL_PATH$GAZEBO_MODEL_PATH:~/PX4/Firmware/Tools/sitl_gazebo/models5.3 第一次飞行测试成功启动仿真后可以尝试基本指令commander takeoff # 起飞 commander land # 降落 commander arm # 解锁电机 commander disarm # 锁定电机使用QGroundControl地面站可以获取更完整的控制界面和参数调整功能。

更多文章