2. Ubuntu系统准备:Ubuntu 20.04/22.04安装、基础软件包安装、系统源配置、Git配置
好,咱们正式开始搭建环境。这一章说白了就是给飞控开发铺路——把Ubuntu系统收拾利索了,后面才能跑PX4的SITL仿真。
我个人习惯用Ubuntu 20.04 LTS,因为PX4官方对这个版本的验证最充分。当然22.04也能用,但有些依赖包需要手动处理一下。我建议新手直接上20.04,省心。
核心要点:Ubuntu系统准备是SITL环境的基石。系统源配置直接影响编译速度,Git配置则关系到代码管理。这三步做扎实了,后面几乎不会出环境问题。
2.1 系统版本选择与安装
先说说版本选择。我遇到过不少同学纠结于20.04还是22.04。其实没那么复杂——
- Ubuntu 20.04 LTS:PX4官方推荐,生态最成熟。我团队里90%的机器跑的都是这个版本。
- Ubuntu 22.04 LTS:新特性多,但部分依赖包需要从源码编译。如果你喜欢折腾,可以试试。
安装过程我就不赘述了,说几个关键点:
- 磁盘分区时,建议给根目录留至少50GB空间。我刚开始做PX4开发时只分了30GB,结果编译几个固件就满了,尴尬。
- 安装时选择「最小安装」,避免不必要的软件包干扰。
- 用户名最好用英文,不要带空格或特殊字符。我曾经因为用户名带了个点,导致某些工具链路径解析出错,排查了半天。
小技巧:安装完成后,先别急着装软件。打开终端,跑一下 sudo apt update && sudo apt upgrade -y,把系统更新到最新状态。这一步能避免很多依赖冲突。
2.2 系统源配置
系统源配置,说白了就是告诉apt去哪里下载软件包。国内用户如果不换源,下载速度会让你怀疑人生。
我一般用清华源或者阿里源。这里以清华源为例:
# 备份原源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源文件
sudo vim /etc/apt/sources.list
然后根据你的Ubuntu版本,替换为以下内容:
| Ubuntu版本 | 源内容(清华源) |
|---|---|
| 20.04 (focal) |
|
| 22.04 (jammy) |
|
替换完成后,执行:
sudo apt update
嗯,这里要注意:如果提示GPG密钥错误,别慌。执行 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 对应的密钥ID 就能解决。
避坑指南:我曾经在22.04上直接复制了20.04的源,结果apt update报了一堆404错误。版本代号一定要对应好——focal是20.04,jammy是22.04,别搞混了。
2.3 基础软件包安装
系统源配好了,接下来装基础软件包。这些是PX4编译和SITL仿真必需的依赖。
我习惯一次性装完,省得后面缺啥补啥:
sudo apt install -y \
git \
vim \
curl \
wget \
build-essential \
cmake \
python3 \
python3-pip \
python3-venv \
ninja-build \
pkg-config \
libssl-dev \
libncurses5-dev \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libqt5gui5 \
libqt5core5a \
libqt5widgets5 \
qt5-qmake \
qttools5-dev-tools
这些包涵盖了编译工具链、Python环境、多媒体库和Qt界面库。你想想看,SITL仿真需要图形界面显示无人机姿态,Qt库就是干这个的。
个人经验:如果你用的是Ubuntu 22.04,建议额外安装 libpython3-dev 和 python3-numpy。22.04的Python环境有些变化,少了这两个包会导致mavsdk编译失败。我踩过这个坑,折腾了两个小时才找到原因。
2.4 Git配置
Git是代码管理的核心工具。PX4的源码托管在GitHub上,我们后面要频繁使用git进行克隆、分支切换和提交。
先配置用户信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
为什么一定要配这个?因为git每次提交都会记录作者信息。如果不配,提交时会报错,或者显示奇怪的默认值。
接下来配置SSH密钥,方便后续与GitHub交互:
# 生成SSH密钥
ssh-keygen -t ed25519 -C "你的邮箱@example.com"
# 查看公钥
cat ~/.ssh/id_ed25519.pub
把公钥添加到GitHub的SSH Keys设置里。这样后面clone和push就不用每次都输密码了。
我个人还习惯配置一些别名,提高效率:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
配置完成后,验证一下:
git config --list
应该能看到你设置的所有配置项。
避坑指南:我曾经在配置SSH时忘了指定密钥类型,用了默认的RSA。后来GitHub更新了安全策略,RSA密钥长度不够被拒绝访问。建议直接用ed25519,更安全也更高效。
2.5 本章知识体系
下面这张图总结了本章的核心逻辑:
这张图把本章的四个核心步骤串起来了。你按这个顺序操作,基本不会出大问题。
2.6 验证环境
所有配置完成后,跑几个命令验证一下:
# 验证Git
git --version
# 输出示例:git version 2.25.1
# 验证apt源
apt-cache policy
# 验证Python
python3 --version
# 输出示例:Python 3.8.10
如果都能正常输出,说明环境准备就绪了。
最后说一句:环境准备这一步看似繁琐,但值得花时间做好。我见过太多同学因为源没配好或者依赖包缺失,编译到一半报错,然后从头排查。与其那样,不如一开始就按部就班来。
公众号:蓝海资料掘金营,微信deep3321