3. Ubuntu 系统准备:搭建你的飞控开发环境
说实话,很多新手在飞控开发上栽跟头,不是代码写不对,而是环境没搭好。我见过太多人花了两天时间编译,最后发现是软件源配错了。这一章,咱们就把 Ubuntu 系统准备这件事做扎实。
我个人习惯用 Ubuntu 20.04 LTS 做飞控开发。为什么?因为 ArduPilot 的官方 CI 和大量社区用户都在这个版本上验证过。当然,22.04 也能用,但有些依赖包需要额外处理。咱们一步步来。
3.1 选择 Ubuntu 版本:20.04 还是 22.04?
先别急着装系统,想清楚你要什么。我列个对比表,你一看就明白。
| 对比项 | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| ArduPilot 官方支持 | 完全支持,CI 默认环境 | 支持,但部分旧工具链需手动适配 |
| Python 版本 | Python 3.8(稳定) | Python 3.10(较新,部分库兼容性需注意) |
| GCC 工具链 | GCC 9.4(与 ARM 交叉编译器配合良好) | GCC 11.4(编译某些旧版固件可能报错) |
| 长期维护周期 | 至 2025 年 4 月 | 至 2027 年 4 月 |
| 我的推荐 | 首选,省心 | 可以,但需要多踩几个坑 |
我的建议很直接:如果你是第一次搭建,选 20.04。我在项目里遇到过用 22.04 编译旧版 ArduPilot 固件时,因为 GCC 版本太高导致链接错误,折腾了大半天。说白了,飞控开发追求的是稳定,不是追新。
3.2 安装 Ubuntu 系统
安装过程我就不啰嗦了,网上教程一大堆。但有几个关键点,我得提醒你。
/ 根分区至少分配 50GB,如果条件允许,100GB 更稳妥。我见过有人只分了 20GB,编译到一半磁盘满了,那叫一个尴尬。
安装时记得勾选「为图形或无线硬件安装第三方软件」。这个选项会帮你装好显卡驱动和 Wi-Fi 固件,省去后续不少麻烦。
3.3 配置软件源:让 apt 飞起来
系统装好了,第一件事就是换源。默认的官方源在国外,下载速度慢得让人抓狂。你想想看,每次 apt update 都要等几分钟,多耽误事。
我个人习惯用清华源或中科大源。操作很简单:
# 备份原始源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源文件
sudo vim /etc/apt/sources.list
然后把里面的内容全部替换成以下内容(以 Ubuntu 20.04 清华源为例):
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
如果你是 22.04,把 focal 换成 jammy 就行。
换完源后,执行更新:
sudo apt update
sudo apt upgrade -y
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 后面跟报错的那串密钥 就能解决。我刚开始搞的时候也被这个吓到过,其实很常见。
3.4 安装基础开发工具
源配好了,接下来装工具。这些是飞控开发的「敲门砖」,缺一不可。
3.4.1 核心工具安装
打开终端,一行命令搞定:
sudo apt install -y git vim curl wget build-essential cmake
我来解释一下每个工具的用途:
| 工具 | 用途 | 为什么重要 |
|---|---|---|
git |
版本控制 | 拉取 ArduPilot 源码、管理自己的代码 |
vim |
文本编辑器 | 修改配置文件、写代码(虽然我更喜欢 VSCode,但服务器上 vim 是标配) |
curl / wget |
网络请求工具 | 下载工具链、固件、依赖包 |
build-essential |
编译工具链 | 包含 GCC、G++、make 等,编译 C/C++ 代码必备 |
cmake |
构建系统 | ArduPilot 使用 CMake 管理编译流程 |
3.4.2 验证安装
装完之后,验证一下是否成功:
git --version
vim --version
curl --version
gcc --version
cmake --version
每个命令都应该返回版本号。如果哪个没出来,多半是安装失败了,重新执行 sudo apt install 就行。
cmake。一查才发现,我装的 Ubuntu 是最小化安装,build-essential 和 cmake 都没预装。从那以后,我每次装完系统第一件事就是把这几个工具装齐,省得后面抓狂。
3.5 配置 Git 用户信息
Git 装好了,先配一下用户信息。这不是可选项,是必选项。因为 ArduPilot 的提交记录会用到这些信息。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
我个人习惯再加几个配置:
git config --global core.editor vim
git config --global color.ui true
git config --global pull.rebase false
这些配置能让 Git 用起来更顺手。尤其是 color.ui true,让终端里的 Git 输出带颜色,一眼就能看出文件状态。
3.6 本章知识体系总览
说了这么多,咱们用一张图把整个流程串起来。你跟着这个流程走,不会乱。
3.7 验证环境是否就绪
最后,咱们跑一个简单的测试,确保环境没问题。创建一个测试文件:
mkdir -p ~/test_env
cd ~/test_env
echo '#include <stdio.h>
int main() {
printf("飞控开发环境准备就绪!\n");
return 0;
}' > test.c
gcc test.c -o test
./test
如果终端输出「飞控开发环境准备就绪!」,恭喜你,环境搭好了。
~/.bashrc 里加一行 export PATH=$PATH:~/ardupilot/Tools/autotest,这样后面用 ArduPilot 的测试工具时不用每次都输完整路径。当然,这是后话了,你先记住有这个技巧就行。