3. Ubuntu 系统准备:把地基打牢
做嵌入式开发这么多年,我有个很深的体会:环境折腾得越久,后面写代码就越顺。PX4 仿真也不例外。Ubuntu 系统就是这栋房子的地基,地基没打好,后面 Gazebo 崩了、MAVSDK 连不上、显卡驱动挂了……你都不知道该从哪查起。
这一章,我们就来把 Ubuntu 20.04 或 22.04 装好、配好、调好。嗯,显卡驱动和 CUDA 我放在可选部分,不是所有人都需要,但如果你打算跑深度强化学习或者视觉 SLAM,那还是装上吧。
3.1 版本选择:20.04 还是 22.04?
这个问题我经常被问到。直接说结论:
| 特性 | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| PX4 官方推荐 | ✅ 最成熟,文档最全 | ✅ 支持,但部分旧教程不兼容 |
| Gazebo 版本 | Gazebo 9/11(默认) | Gazebo 11(需手动装) |
| ROS 兼容性 | ROS1 Noetic / ROS2 Foxy | ROS2 Humble / ROS1 Noetic(需额外配置) |
| Python 版本 | Python 3.8 | Python 3.10 |
| 长期维护 | 支持到 2025 年 | 支持到 2027 年 |
我个人建议:如果你是新手,或者跟着网上大部分教程走,选 Ubuntu 20.04。踩坑少,搜问题容易找到答案。如果你喜欢新东西,或者打算长期用 ROS2,那 22.04 也可以,但要做好自己填坑的准备。
/ 分 50GB 以上,/home 分大一点。后面 PX4 源码、Gazebo 模型、ROS 包都很占空间。
3.2 系统安装:双系统还是虚拟机?
这个问题其实没有标准答案。我两种都用过,说说我的感受:
- 双系统:性能最好,显卡直通,适合跑真机仿真或需要 GPU 加速的场景。缺点是你得重启切换,有点麻烦。
- 虚拟机(VMware / VirtualBox):方便,随时快照,不怕搞坏系统。但 3D 加速是个坑,Gazebo 跑起来会卡。
- WSL2:Windows 下的 Linux 子系统,轻量,但 GUI 支持还是差点意思,Gazebo 界面偶尔会闪。
如果你问我,我会说:老老实实装双系统。尤其是你要做 PX4 仿真,Gazebo 对 3D 性能要求不低,虚拟机里跑起来你会想砸电脑的。
3.3 系统基础配置:装完系统第一件事
系统装好之后,别急着装 PX4。先把这几步走完:
3.3.1 换源:让 apt 飞起来
国内连 Ubuntu 官方源,那速度……你懂的。换成国内镜像源,体验会好很多。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源列表
sudo vim /etc/apt/sources.list
# 把内容全部替换为清华源(以 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
# 更新
sudo apt update && sudo apt upgrade -y
如果你用的是 22.04,把 focal 换成 jammy 就行。中科大、阿里云的源也都可以,选一个你感觉快的。
3.3.2 安装基础依赖
这些包是 PX4 编译和仿真必需的,我建议一次性装好:
sudo apt install -y \
git \
vim \
curl \
wget \
cmake \
build-essential \
python3-pip \
python3-venv \
ninja-build \
pkg-config \
libeigen3-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libprotobuf-dev \
protobuf-compiler \
libboost-all-dev \
libssl-dev \
libudev-dev \
libusb-1.0-0-dev
3.3.3 配置 Git 和 SSH
PX4 源码在 GitHub 上,你肯定要用 Git 拉代码。配置好 SSH 密钥,后面就不用每次都输密码了。
# 配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 生成 SSH 密钥
ssh-keygen -t ed25519 -C "your.email@example.com"
# 查看公钥,复制到 GitHub 设置里
cat ~/.ssh/id_ed25519.pub
嗯,这一步虽然简单,但很多人会忘。我记得有一次帮同事排查问题,发现他每次拉代码都要输密码,就是因为没配 SSH。
3.4 显卡驱动与 CUDA(可选)
如果你用的是 NVIDIA 显卡,并且打算跑 GPU 加速的仿真(比如用 CUDA 做深度强化学习),那这一步是必须的。如果只是跑普通的 PX4 + Gazebo 仿真,集成显卡就够了,可以跳过。
3.4.1 安装 NVIDIA 驱动
别去官网下载 .run 文件手动装,那个坑太多。用 Ubuntu 自带的 ubuntu-drivers 工具最稳:
# 查看推荐驱动版本
ubuntu-drivers devices
# 自动安装推荐驱动
sudo ubuntu-drivers autoinstall
# 或者手动指定版本(比如 535)
sudo apt install nvidia-driver-535
# 装完重启
sudo reboot
重启后,用 nvidia-smi 检查是否装成功。如果能看到显卡信息,就说明驱动装好了。
3.4.2 安装 CUDA Toolkit
CUDA 是 NVIDIA 的并行计算平台。如果你要用 GPU 跑算法,就得装它。
# 从 NVIDIA 官网下载 CUDA 11.8(以 20.04 为例)
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
# 运行安装程序
sudo sh cuda_11.8.0_520.61.05_linux.run
# 安装时注意:不要勾选 Driver(驱动已经装过了),只选 Toolkit
# 安装完成后,配置环境变量
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
# 验证安装
nvcc --version
如果你用的是 22.04,CUDA 12.x 也支持,但要注意和驱动版本的兼容性。我建议先查一下 CUDA 兼容性矩阵,再决定装哪个版本。
3.4.3 安装 cuDNN(可选)
如果你要做深度学习,cuDNN 能加速神经网络训练和推理。安装步骤稍微麻烦一点:
# 从 NVIDIA 官网下载 cuDNN(需要注册账号)
# 下载后解压
tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz
# 复制文件到 CUDA 目录
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-11.8/include/
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-11.8/lib64/
# 设置权限
sudo chmod a+r /usr/local/cuda-11.8/include/cudnn*.h
sudo chmod a+r /usr/local/cuda-11.8/lib64/libcudnn*
3.5 本章知识体系
下面这张图,帮你理清 Ubuntu 系统准备的完整流程:
这张图把本章的内容串起来了。你可以看到,版本选择和系统安装是前置条件,基础配置是必做项,显卡驱动和 CUDA 是可选增强项。按照这个顺序来,不会乱。
3.6 本章小结
Ubuntu 系统准备这一步,看起来琐碎,但真的很重要。我见过太多人,装完系统直接拉 PX4 源码开始编译,结果各种报错,最后发现是依赖没装全,或者源没换好。