简介PX4飞控固件v1.11.0完整源码包面向无人机开发者、机器人及自主系统研究人员适合需要获取历史稳定版本进行源码学习、二次开发或系统移植的用户。固件将飞行控制、导航、传感器融合、通信协议等子模块预先集成下载解压即可使用免去逐项拉取子模块与调整网络环境的麻烦。压缩包共21946个文件大小约897.36MB以C/C源码.c/.h/.cpp、Python脚本、CMake/Makefile构建文件、MAVLink及UAVCAN通信定义、PX4配置与消息定义.msg等为主目录结构完整清晰包含构建配置、启动脚本和多种硬件平台适配内容。已有1623人学习下载。该版本改进了飞行控制算法与传感器融合精度强化了MAVLink通信和地理围栏等安全机制并支持多种硬件平台无论用于学习飞控架构、对比代码演进还是部署到兼容硬件上运行都是一份可直接利用的完整资源。1. 这个zip到底是什么1.11.0固件包的前世今生1.1 固件、源码包和zip三者之间的关系看到px4 firmware1.11.0.zip这个文件名经常折腾飞控的朋友应该秒懂——这是 PX4 Autopilot 1.11.0 版本的源码压缩包。但如果你刚入坑无人机开发可能还分不清固件和源码包的区别这里先把概念理清楚。PX4 是一个开源自动驾驶仪系统跑在 Pixhawk 系列飞控板和其他硬件上负责姿态解算、位置估计、任务控制这些核心功能。我们说的固件指的是最终编译出来、烧录到飞控硬件里的二进制文件。而 GitHub 上打包下载的 zip实际上是源码包需要你本地编译后才能变成固件。为什么不是直接给你一个编译好的固件因为 PX4 支持的硬件平台太多了——FMUv2、FMUv5、FMUv6、Raspberry Pi、树莓派搭配不同的传感器驱动——同一份源码在不同目标平台上编译结果完全不同。官方发布的是源码你自己针对手上的硬件去编译这才是 PX4 的工作方式。所以拿到这个 zip 只是第一步后面还有编译、烧录两个环节等着你。1.2 为什么1.11.0至今还有人用2020 年底发布的 1.11.0放在现在看已经是老版本了但它在社区里的使用率一直不低。几个很现实的原因一是稳定性。1.11.0 是当时比较成熟的版本该修的 Bug 基本修得差不多而且大量 PX4 相关教程、论文、教学视频是在这个版本上录制的。你跟着网上的教程操作如果用太新的版本参数名、配置界面都对不上反而容易卡壳。二是硬件兼容性。很多老飞控板子从 1.11.0 起步后续版本逐步剥离开源硬件支持即使官方还保留编译通道用老版本更省心。我自己就有块 Pixhawk 1跑新版固件需要额外配置但 1.11.0 直接编译就能跑省了不少折腾时间。三是生态配套。QGroundControl 地面站、MAVSDK、ROS 相关工具链在 1.11.0 时期有大量对应的版本组合。做科研项目、比赛项目的人通常更倾向锁定一套经过验证的软件组合而不是追逐最新版。2. 从下载到校验拿到一包干净可用的固件2.1 下载渠道怎么选获取 PX4 1.11.0 源码包最正规的渠道是 GitHub Release 页面。PX4-Autopilot 仓库在 v1.11.0 这个 tag 下会提供对应的源码压缩包文件名一般长这样PX4-Autopilot-v1.11.0.zip或v1.11.0.tar.gz。有人喜欢用git clone然后git checkout v1.11.0我同样推荐这种方式。因为 git 方式可以保留完整的版本历史后续想切到其他版本一条命令搞定。但 git clone 遇到的问题比较多最常见的就是网络不通导致 clone 失败。这时候下载 zip 反而是更稳妥的方案——东西不大几百 MB 以内下载完了解压就能用。另外注意别从乱七八糟的第三方渠道下载。PX4 社区里有人打包过所谓整合版固件包里面加了各种第三方功能但这类包来源不明轻则编译报错重则塞进恶意代码。无人机飞控出问题不是闹着玩的源码这种东西一定要用官方源。2.2 校验文件完整性别跳过下载完 zip先别急着解压建议做一个 SHA256 校验。GitHub Release 页面一般不直接给 checksum 文件但你可以自己算一遍再和仓库里官方记录的 hash如果有对比。如果你是从 release 页面下载的页面描述里常会附带 sha256 值要是没有至少确保 zip 能正常解压、文件结构完整。Linux 下校验命令很简单sha256sum PX4-Autopilot-v1.11.0.zip解压也顺手unzip PX4-Autopilot-v1.11.0.zip cd PX4-Autopilot-1.11.0/我遇到过很多次这种场景zip 包下载到一半断网文件显示几 MB 就停了解压时报invalid zip archive: could not find EOCD。这个报错的意思是 zip 文件末尾缺少 End of Central Directory 记录几乎可以断定是文件不完整。遇到这种情况别怀疑解压工具的问题直接重新下载就好。Windows 用户建议用 7-Zip 而不是系统自带的压缩文件夹功能。系统自带工具对某些 zip 编码格式兼容性不好尤其 PX4 源码里有大量中英文混合文件名7-Zip 或者 Bandizip 这类工具处理起来更稳。3. 环境搭建与编译从zip到能飞的固件3.1 依赖安装最容易翻车的环节PX4 源码包解压后不能直接编译得先把工具链装齐。官方维护了一套自动化脚本在Tools/setup/ubuntu.sh里。我在 Ubuntu 20.04 上跑 1.11.0 的经验是不要手动一个个装依赖直接用脚本省时省力还不会漏。bash ./Tools/setup/ubuntu.sh这个脚本会安装 GCC 交叉编译工具链、CMake、Python 包、ROS 依赖组件等。脚本执行时间比较长大概十几分钟到半小时取决于网络环境。执行完后再装两个常用的组件pip install --user jinja2 pip install --user kconfiglib1.11.0 的编译系统依赖kconfiglib来生成配置缺失的话会报ImportError: No module named kconfiglib。这个坑我踩过当时以为是编译环境哪里坏了排查半天发现就是 Python 包没装全。如果你用的是 Python 3.8 以上的系统还需要注意 pip 默认安装路径的问题尽量加--user参数避免权限错误。3.2 选择编译目标先搞清楚你的硬件PX4 的编译命令格式是make 目标平台。不同飞控硬件对应不同的目标名称编译前一定要确认自己的板子型号。常见的目标平台对照表飞控硬件编译目标说明Pixhawk 1老版px4_fmu-v2_default已经逐渐淘汰Pixhawk 4px4_fmu-v5_default最常用的目标之一Pixhawk 4 Minipx4_fmu-v5_default同 v5 系列Pixhawk 6Cpx4_fmu-v6c_default1.11.0 已支持Holybro Durandalpx4_fmu-v5x_default需要额外配置我的板子是 Pixhawk 4所以编译命令是make px4_fmu-v5_default第一次编译会下载大量依赖源码实际耗时大概 20 到 40 分钟后面增量编译就快得多。编译成功的最后几行会提示固件输出路径比如build/px4_fmu-v5_default/px4_fmu-v5_default.px4这个.px4文件就是最终烧录到飞控上的固件。3.3 编译报错的临场处理1.11.0 在较新系统上编译最常见的问题是 GCC 版本太新导致编译器报错。比如 Ubuntu 22.04 自带的 GCC 11.x 编译 1.11.0 时经常出现xxx.cpp: error: call to xxx is ambiguous这类错误。这时候有两个处理方案一是装老版本的 GCC 切过去二是打上社区补丁。我自己更推荐第一种方式——装 GCC 8 或者 GCC 9切换过去编译sudo apt install gcc-8 g-8 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90虽然麻烦点但能保证编译链路相对原始排查问题也更可控。另外一个容易忽略的点是内存。PX4 编译过程中 CMake 会并行启动多个编译任务如果虚拟机或开发机的内存只有 4GB很容易卡死或 OOM。可以在 CMake 配置里限制并行度或者在编译前用export MAKEFLAGS-j2降低并行数。跑在虚拟机里的朋友建议电脑内存至少 8GB分配 4GB 以上给虚拟机否则编译到一半被系统杀掉是很正常的。4. 高频问题排查实录4.1 zip解压和文件相关的问题报错invalid zip archive: could not find EOCD基本就是文件没下载完整。重新下载用支持断点续传的下载工具下载完成后看一眼大小和网页上标注的大小是否一致。Windows 下解压出现韩文或乱码文件名这是 zip 的编码兼容性问题。PX4 源码包里的文件名以 UTF-8 编码存储Windows 系统自带解压工具默认按 GBK 解码就会乱码。解决办法是用 7-Zip 解压右键选择以 UTF-8 编码解码或者在解压选项里勾选使用系统代码页之外的其他编码。解压后目录结构和预期不一致GitHub 的 zip 包会给内容套一层文件夹比如PX4-Autopilot-1.11.0/。如果你把里面的文件直接铺到项目根目录后续编译脚本可能找不到.git信息导致版本号显示异常。解压后直接 cd 进这个文件夹不要动目录结构。4.2 git clone和网络的坑很多教程让你先 clone 再 checkout但实际执行git clone https://github.com/PX4/PX4-Autopilot.git时经常卡在failed to connect上。这和网络环境有关不一定能根除。我的建议是如果 clone 总失败直接下载 release 页面的 zip 包。反正你只需要 1.11.0 这个版本下载 zip 反而少走弯路。后续如果确实需要切版本再把 git 仓库补上——在解压好的目录里执行git init git remote add origin 仓库地址 git fetch origin v1.11.0 --depth1也能把 git 信息补回来。4.3 烧录后固件版本对不上编译成功、烧录完成在 QGroundControl 里却看到固件版本显示正常但模块参数对不上比如缺了新版本才有的参数。这种情况最常见的原因是你烧错目标了——比如编译了px4_fmu-v5_default却烧到了px4_fmu-v3上。QGroundControl 也能直接刷固件但要注意QGC 默认从官方固件服务器下载编译好的固件你这会儿烧进去的是它自带的最新版而不是你自己编译的 1.11.0。想要烧自己的固件必须用 QGC 的自定义固件文件功能选择你编译出来的.px4文件别让它自动下载。还有一点USB 线连接飞控烧录时一定确保用的是数据线而不是充电线。很多烧录失败其实就是供电不稳定或通信中断换根质量好的数据线能解决一半的问题。5. 版本选择的一些个人看法折腾 PX4 这几年我的体会是飞控开发领域稳定压倒一切。1.11.0 虽然老但它和大量现有教程、硬件、外设的兼容性是经过验证的。你自己做项目与其追新版本然后花大量时间适配不如先用一套稳定组合把核心功能跑通。最后再分享一个小技巧解压后先别急着编译在源码根目录执行git describe --always --tags看看输出是不是v1.11.0。如果版本信息对不上后续的日志、模块版本一致性和排查都会乱套。把这一步养成习惯后面能省不少排查时间。本文还有配套的精品资源点击获取