第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 安装步骤

  1. 从Ubuntu官网下载20.04 LTS镜像
  2. 用Rufus或balenaEtcher制作启动U盘
  3. 重启电脑,进BIOS设置U盘启动
  4. 按提示安装,分区建议:/ 给30GB,/home 给剩余空间
  5. 安装完成后,先跑一遍系统更新:
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 验证环境

全部装完后,我们来验证一下:

  1. 打开终端,进入PX4源码目录
  2. 执行make px4_fmu-v5_default(针对Pixhawk 4)
  3. 如果编译成功,你会看到Built target px4_fmu-v5_default
  4. 启动QGC,插上飞控,应该能看到连接状态

恭喜!如果以上都成功了,你的开发环境就搭好了。接下来就可以开始写代码、调参数、飞飞机了。

本章知识体系

下面这张图帮你理清整个开发环境的逻辑关系:

PX4开发环境搭建 - 知识体系 PX4开发环境 Ubuntu 20.04 LTS PX4编译环境 ARM交叉编译链 QGC地面站 双系统/物理机 国内镜像源 依赖库安装 Python工具链 源码克隆编译 gcc-arm-none-eabi JLink驱动 AppImage安装 串口权限配置 验证:make + QGC连接

这张图把整个环境分成了四个模块,每个模块下面有具体的操作项。你按这个顺序装,基本不会漏东西。


专注资料整理