第1章:开发环境搭建(Ubuntu)
做PX4开发,第一步就是把窝搭好。我见过太多新手卡在环境配置上,代码写好了编译不过,那叫一个憋屈。今天咱们就把Ubuntu系统、PX4编译链、ARM交叉工具链、还有QGC地面站,一口气全搞定。
本章核心目标:让你的电脑能编译PX4固件,能连接飞控调试,能跑地面站看数据。说白了,就是让开发工具链转起来。
1.1 安装Ubuntu系统
我个人习惯用Ubuntu 20.04 LTS,这个版本对PX4的支持最稳。你问为什么不用22.04?嗯,我在项目里踩过坑——有些依赖库在22.04上要额外折腾,20.04开箱即用。
1.1.1 系统要求
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 双核2.0GHz | 四核3.0GHz以上 |
| 内存 | 4GB | 16GB |
| 硬盘 | 40GB | 256GB SSD |
| 网络 | 宽带连接 | 宽带连接 |
注意:千万别用虚拟机跑PX4编译,尤其是Windows下的VirtualBox。我曾经试过一次编译等了40分钟,后来换双系统,10分钟搞定。磁盘IO是硬伤。
1.1.2 安装步骤
- 从Ubuntu官网下载20.04 LTS镜像
- 用Rufus或balenaEtcher制作启动U盘
- 重启电脑,进BIOS设置U盘启动
- 按提示安装,分区建议:
/给30GB,/home给剩余空间 - 安装完成后,先跑一遍系统更新:
sudo apt update
sudo apt upgrade -y
小技巧:装完系统第一件事,把软件源换成国内镜像。阿里云或清华源都行,不然下载依赖库能等到你怀疑人生。
1.2 配置PX4编译环境
PX4的编译环境说白了就是一堆工具链和依赖库。官方提供了一个自动化脚本,但我建议你手动装一遍——这样出了问题你知道去哪找。
1.2.1 安装基础依赖
sudo apt install -y \
git zip cmake build-essential \
ninja-build exiftool \
python3-pip python3-dev \
python3-venv python3-numpy \
python3-opencv python3-kml \
libeigen3-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libprotobuf-dev protobuf-compiler \
libssl-dev libcurl4-openssl-dev \
libxml2-dev libxslt1-dev \
libudev-dev libsdl2-dev \
ccache
这里面的ccache我特别提一下。它能把编译过的文件缓存起来,第二次编译快很多。我在项目里用ccache,增量编译从5分钟缩到30秒。
1.2.2 安装Python工具链
pip3 install --user \
pyserial empy toml numpy \
jinja2 pyyaml kconfiglib \
jsonschema future
注意:一定要加--user参数,不然会和系统Python包冲突。我当年没加,结果把系统pip搞坏了,重装了三次系统才长记性。
1.2.3 克隆PX4源码
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
make px4_sitl gazebo
第一次编译会下载很多子模块,大概要10-20分钟。你可以去泡杯咖啡。如果卡住了,检查一下网络,或者换个时间再试。
1.3 安装ARM交叉编译工具链
为什么要装这个?因为飞控上的芯片是ARM架构的,你的电脑是x86架构的。交叉编译就是在x86上生成ARM能跑的代码。
1.3.1 安装GCC ARM工具链
sudo apt install -y gcc-arm-none-eabi binutils-arm-none-eabi
装完验证一下:
arm-none-eabi-gcc --version
如果看到版本号,说明装好了。我建议用9.3.1或10.3.0版本,太新的版本有时会有兼容问题。
避坑指南:我曾经用过一个11.x版本的gcc,编译出来的固件在Pixhawk上跑起来就死机。查了两天,最后发现是编译器优化选项的问题。所以,别追新,稳定第一。
1.3.2 安装JLink驱动(可选)
如果你要用JLink调试,还需要装SEGGER的驱动:
wget https://www.segger.com/downloads/jlink/JLink_Linux_x86_64.deb
sudo dpkg -i JLink_Linux_x86_64.deb
1.4 安装QGroundControl地面站
QGC是PX4的标配地面站。你可以在电脑上监控飞控状态、调参、看日志。
1.4.1 下载安装
wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
chmod +x QGroundControl.AppImage
./QGroundControl.AppImage
提示:第一次运行可能会提示安装一些依赖库,按提示装就行。如果报错说缺少libfuse2,执行sudo apt install libfuse2。
1.4.2 配置串口权限
要让QGC能访问飞控的串口,需要把用户加到dialout组:
sudo usermod -a -G dialout $USER
然后注销重新登录。不然你会看到QGC一直显示「等待连接」。
1.5 验证环境
全部装完后,我们来验证一下:
- 打开终端,进入PX4源码目录
- 执行
make px4_fmu-v5_default(针对Pixhawk 4) - 如果编译成功,你会看到
Built target px4_fmu-v5_default - 启动QGC,插上飞控,应该能看到连接状态
恭喜!如果以上都成功了,你的开发环境就搭好了。接下来就可以开始写代码、调参数、飞飞机了。
本章知识体系
下面这张图帮你理清整个开发环境的逻辑关系:
这张图把整个环境分成了四个模块,每个模块下面有具体的操作项。你按这个顺序装,基本不会漏东西。