Ubuntu 22.04 搭建 PX4 无人机开发环境(保姆级教程)

发布时间:2026/10/11 1:47:28

Ubuntu 22.04 搭建 PX4 无人机开发环境(保姆级教程) Ubuntu 22.04 搭建 PX4 无人机开发环境保姆级教程PX4 是目前最流行的开源无人机飞控软件支持多旋翼、固定翼、VTOL 等多种机型。想入门无人机开发第一步就是把 PX4 开发环境搭起来。本文基于官方推荐流程 实测踩坑经验手把手带你在 Ubuntu 22.04 上搭建完整的 PX4 开发环境包括仿真工具链、固件编译和地面站小白也能跟下来。一、为什么选择 Ubuntu 22.04 PX4PX4 官方长期支持 Ubuntu LTS 版本当前 CI 主要针对Ubuntu 24.04同时也完整测试支持Ubuntu 22.04Jammy Jellyfish。对于大多数开发者选择 22.04 的理由很充分对比项Ubuntu 22.04Ubuntu 24.04PX4 支持度✅ 官方测试支持✅ 当前主推版本ROS 2 版本HumbleLTSJazzyLTS生态成熟度资料多、教程多相对较新稳定性非常成熟稳定 如果你是新手建议直接选Ubuntu 22.04 ROS 2 Humble组合网上资料最丰富遇到问题最好搜到答案。二、准备工作一台 Ubuntu 22.04 系统方案 A虚拟机安装推荐新手参考我上一篇文章《Windows 下用 Hyper-V 安装 Windows 10 虚拟机》用同样的方法装一个 Ubuntu 22.04 虚拟机下载镜像ubuntu-22.04.5-desktop-amd64.iso清华镜像https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/Hyper-V 创建虚拟机第 2 代、内存 ≥ 4GB、硬盘 ≥ 40GB关键必须禁用安全启动第 2 代虚拟机默认开启Ubuntu 装不了方案 B双系统 / 物理机安装直接刻录 U 盘安装 Ubuntu 22.04适合需要真机编译、跑硬件的情况。三、第一步更新系统源国内必做装完系统后先更新软件源国内建议换成清华源速度翻倍# 备份原源sudocp/etc/apt/sources.list /etc/apt/sources.list.bak# 编辑源文件把 archive.ubuntu.com 换成 mirrors.tuna.tsinghua.edu.cnsudosed-is/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g/etc/apt/sources.list# 更新sudoaptupdatesudoaptupgrade-y四、第二步克隆 PX4 源码打开终端克隆 PX4-Autopilot 源码含子模块国内网络慢的话可以挂代理或用镜像gitclone https://github.com/PX4/PX4-Autopilot.git--recursive⚠️ 必须加--recursivePX4 依赖大量子模块。如果中途失败在目录内执行git submodule update --init --recursive补全。五、第三步一键安装开发环境核心步骤PX4 官方提供了一键安装脚本会自动装好所有依赖Gazebo Harmonic 仿真器3D 无人机仿真Pixhawk 固件编译工具链gcc-arm-none-eabi / NuttX其他编译所需依赖在 PX4 源码目录执行bash./PX4-Autopilot/Tools/setup/ubuntu.sh脚本运行过程中会询问确认一路按回车/输入密码即可。安装时间取决于网络通常 20-60 分钟请耐心等待。 可选参数--no-nuttx跳过 Pixhawk 硬件编译工具链只做仿真--no-sim-tools跳过仿真工具只编译硬件固件安装完成后重启电脑让环境变量生效。六、第四步验证工具链重启后验证是否安装成功# 验证 NuttX / Pixhawk 交叉编译工具链arm-none-eabi-gcc--version# 验证 Gazebogz sim--version能看到版本号输出就说明环境装好了。七、第五步编译 PX4 固件1. 编译 SITL 仿真固件最常用SITLSoftware In The Loop即软件仿真不需要真实硬件就能跑无人机cd~/PX4-Autopilot# 编译 Gazebo Harmonic 仿真x500 四旋翼makepx4_sitl gz_x500# 或编译 Gazebo Classic 仿真经典机型makepx4_sitl gazebo-classic编译完成后会自动打开 Gazebo 仿真界面一架四旋翼出现在 3D 世界里终端同时弹出 PX4 控制台pxh说明仿真跑起来了常用仿真指令# 控制台内起飞commander takeoff# 降落commander land# 查看帮助help2. 编译 Pixhawk 硬件固件有飞控板如 Pixhawk 6C时编译对应机型固件# 以 Pixhawk 4/6 系列为例makepx4_fmu-v5# 或makepx4_fmu-v6c编译产物在build/target/目录下用 QGroundControl 或命令行烧录到飞控。八、第六步安装 QGroundControl 地面站QGroundControlQGC是 PX4 的官方地面站用于查看飞行数据、规划航线、调试参数下载https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.htmlUbuntu 版下载后赋予执行权限chmodx ./QGroundControl.AppImage ./QGroundControl.AppImage仿真时 QGC 会自动连接端口 14550无需配置九、进阶安装 ROS 2 Humble可选如果要做更复杂的机载计算、编队、视觉避障需要装 ROS 2# 安装 ROS 2 Humblesudoaptinstallros-humble-desktop搭配 PX4 的 ROS 2 接口px4_ros_com / uXRCE-DDS可以实现 PX4 与 ROS 2 的双向通信是当前官方主推的架构。十、常见问题FAQQ1github clone 太慢/失败怎么办A用 GitHub 镜像加速如ghproxy.com前缀或下载 release 压缩包子模块失败就反复执行git submodule update --init --recursive。Q2ubuntu.sh 脚本提示某个包装不上A先sudo apt update再重跑脚本还不行就单独sudo apt install 包名排查。Q3编译报错 “No such file or directory”A确认在PX4-Autopilot目录内执行 make 命令检查磁盘空间编译需要 ≥ 10GB 剩余。Q4虚拟机里仿真很卡A给虚拟机分配更多内存/CPU建议 ≥ 4 核 8GB在虚拟机关闭 3D 加速或降低 Gazebo 画质。Q5Gazebo 界面黑屏/闪退A显卡驱动问题虚拟机里可加LIBGL_ALWAYS_SOFTWARE1环境变量强制软件渲染。Q6如何连接真实飞控A用 USB 连接 PixhawkQGC 自动识别Linux 下注意用户加入dialout组sudo usermod -aG dialout $USER。十一、总结搭建 PX4 开发环境的完整流程就三步clone 源码→git clone --recursive一键装环境→bash ubuntu.sh编译仿真→make px4_sitl gz_x500装好之后你就可以在 Gazebo 里飞虚拟无人机、在 QGC 里看数据、用 VS Code 改代码正式进入无人机开发的大门。接下来可以继续学习 PX4 的模块架构、编写自定义控制器、跑 ROS 2 通信——祝你飞得愉快如果本文对你有帮助欢迎点赞收藏有问题评论区交流
延伸阅读

更多相关文章

2026/10/11 1:42:28

利用继电器感应交流电流

对比几款继电器线圈感应信号AD\Test\2026\September\RelayACSensorMEGA8.SchDoc 使用继电器线圈来检测电流热水器工作报警器 01 【继电器作为电流传感器】 一、设计背景 在之前使用过继电器的它的线圈作为传感器 来检测电线中的电流信号, 利用这种方式可以比较方便…

2026/10/11 1:42:28

2026最新PanDownload复活工具:轻松实现百度网盘不限速

大家日常在用网盘备份相册或者整理办公材料的时候,总希望文件能够瞬间传输完毕。一旦传输界面卡在一个极低的数值,整个人的工作节奏都会被完全打乱,心情也跟着变得烦躁。 在交流如何改善体验的过程中,PanDown一直是一个经常被大家…

2026/10/11 1:42:28

用了3年SaaS之后,我们为什么转向私有化部署研发管理平台

用了3年SaaS之后,我们为什么转向私有化部署研发管理平台 三年前团队成立时,在研发项目管理工具这件事上,我们内部几乎没有什么分歧:上SaaS。 这样选的理由也很充分:不用买服务器,不用装数据库,注…

2026/10/11 2:47:31

EMC标准体系详解:通用标准与产品族标准如何选择

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:47:31

Netplan进阶实战:网桥、Bond、VLAN与策略路由一次搞定

netplan这个工具,第一篇写基础概念和静态IP配置的时候,就有人留言说“这些我都会,能不能聊点真正生产环境用得上的”。这篇就是接着那个话头往下走的。今天这篇我打算把网桥、Bond链路聚合、VLAN、Wi-Fi、策略路由这些进阶配置一次说透&#…

2026/10/11 2:47:31

PJ85718DM+PIC18LF4685温控系统:1-Wire高可靠低功耗设计实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:47:31

从ImageNet到多模态:视觉数据集构建与训练管线实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:47:31

蓝牙音频芯片选型:系统级权衡而非参数堆砌

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑