环境准备:操作系统选择与基础依赖安装
做 SITL 仿真,第一步就是搭环境。这事听起来简单,但我在项目里见过太多人卡在这一步——不是 Ubuntu 版本选错,就是依赖装不全,折腾半天连个 helloworld 都跑不起来。咱们今天就把这事一次性说清楚。
操作系统选择:Ubuntu 20.04 还是 22.04?
说实话,两个版本都能用。但我个人习惯推荐 Ubuntu 20.04 LTS。为什么?
你想想看,PX4 和 ArduPilot 的官方 CI 测试,大部分跑在 20.04 上。我去年帮一个团队排查问题,他们用 22.04 装 Gazebo 11,结果发现某些插件编译不过去——后来切回 20.04 就一切正常。说白了,生态成熟度摆在那。
当然,22.04 也不是不行。如果你要用新版本的 Gazebo(比如 Ignition Fortress),那 22.04 会更方便。这里我列个对比表,你根据自己情况选:
| 对比项 | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| Python 默认版本 | 3.8 | 3.10 |
| Gazebo 版本 | Gazebo 9/11(推荐) | Gazebo 11 / Ignition |
| PX4 官方支持 | ✅ 完全支持 | ✅ 支持,但偶有问题 |
| ArduPilot 官方支持 | ✅ 完全支持 | ✅ 支持 |
| ROS 兼容性 | ROS1 Noetic / ROS2 Foxy | ROS2 Humble |
基础依赖安装:一条命令搞定
装完系统第一件事,更新源。然后安装编译工具链。我习惯把常用依赖写成一个脚本,每次新机器直接跑一遍:
# 更新包列表
sudo apt update
sudo apt upgrade -y
# 基础编译工具
sudo apt install -y \
build-essential \
cmake \
ninja-build \
ccache \
g++ \
gcc
# Python 相关
sudo apt install -y \
python3 \
python3-pip \
python3-dev \
python3-venv \
python3-wheel
# Git 与版本控制
sudo apt install -y \
git \
git-lfs
# 仿真与图形依赖
sudo apt install -y \
libgl1-mesa-dev \
libglu1-mesa-dev \
freeglut3-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev
# 其他常用工具
sudo apt install -y \
wget \
curl \
unzip \
vim \
htop
嗯,这里要注意。上面这些包不是随便列的。我在项目中遇到过好几次,因为少了 libgl1-mesa-dev,Gazebo 启动直接黑屏。还有一次,ccache 没装,每次编译 PX4 都要等 20 分钟——装上之后,二次编译只要 3 分钟。
python3-venv。我曾经图省事,直接用系统 Python 装包,结果把系统自带的 pip 搞坏了,重装了两次系统才解决。虚拟环境是底线。
Git 环境配置:别偷懒
Git 配置其实就三步,但很多人只配了用户名和邮箱。我建议你一次性配全:
# 基础信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
# 推荐配置
git config --global core.editor vim
git config --global core.autocrlf input
git config --global pull.rebase true
git config --global init.defaultBranch main
# 查看配置
git config --list
为什么 pull.rebase 要设成 true?你想想看,团队协作时,merge 提交会把历史搞得乱七八糟。用 rebase 拉取,提交历史是一条直线,看着清爽。我在带团队时,这个配置是强制要求的。
Python 环境配置:虚拟环境是王道
Python 这块,我踩过的坑最多。直接说结论:永远不要用系统 Python 直接装包。
正确的做法是:
# 创建虚拟环境
python3 -m venv ~/sitl_env
# 激活环境
source ~/sitl_env/bin/activate
# 升级 pip
pip install --upgrade pip
# 安装常用包
pip install \
numpy \
matplotlib \
pyyaml \
jinja2 \
future \
empy \
toml \
packaging \
setuptools
# 退出环境
deactivate
每次打开终端,先激活虚拟环境:
source ~/sitl_env/bin/activate
你也可以把这句话加到 ~/.bashrc 里,省得每次手动敲。但我个人习惯不自动激活——有时候需要在不同环境间切换,自动激活反而碍事。
核心要点:
- Ubuntu 20.04 是当前最稳妥的选择
- 基础依赖用一条命令装完,别漏了
libgl1-mesa-dev和ccache - Git 配置加上
pull.rebase true,历史更干净 - Python 必须用虚拟环境,这是底线
本章知识体系
下面这张图,把环境准备的整个流程串起来了。你可以把它当成一张检查清单:
环境准备好了,下一步就是拉代码、装仿真器。不过那是后面的事。先把今天这几步走扎实,后面会顺很多。